Commit Graph

514 Commits

Author SHA1 Message Date
Kristoffer Carlsson a0e6e030e3 improve performance in elasticity by moving out computation of X from intergration point loop 2018-11-02 13:47:57 -04:00
Jukka Aho e4916ebd1a Store Xdmf results in Mixed format
Store element connectivity as "Mixed" format to Xdmf file. It's a long
list where first number is element code and then there is connectivity
data (starting from 0). Xdmf format does not support several
Topology-elements in Xml file format, so before it was not possible to
store e.g. both Tri3 and Quad4 elements in same problem. After this
commit this should now be possible. Paraview Xdmf3 reader is needed to
use.
2018-09-20 19:59:45 +03:00
Jukka Aho ca911e5e87 Fix deprecation warnings
* Add docstrings
* Refactor code
* Module level docstring giving an example
2018-09-06 13:34:26 +03:00
femtocleaner[bot] a8a3e0b46e Fix deprecations (#206) 2018-07-05 11:21:10 +03:00
Jukka Aho 86fdc59f20 Drop Logging.jl (#205)
Julia 0.7 is having improved logging capabilities, we can drop
Logging.jl.
2018-07-04 22:59:32 +03:00
Jukka Aho ce12011380 fix bug of setting sigma in Modal analysis (#204) 2018-07-04 21:51:09 +03:00
Jukka Aho 41e3d366b9 Call Nonlinear analysis using run! (#201)
`analysis(time)` and `solve!(analysis, time)` are going to be deprecated later on.
2018-06-06 15:36:46 +03:00
Jukka Aho 16534d9e4e Use FEMBeam.jl (#200)
Use FEMBeam.jl to solve beam problems. Added an example, where
natural frequencies of frequencies of 3d frame structure are
calculated. Some minor modifications to Modal analysis is done to make
Xdmf writing of 6 dof nodes work.
2018-06-04 21:29:37 +03:00
Jukka Aho 417014718d Fix bug in writing two-dimensional problems (#198) 2018-05-25 17:54:36 +03:00
Jukka Aho c914017171 Move contact mechanics to separate package (#196)
Development of auto-differentiated mortar contact mechanics in 2D is moved to own separate package, MortarContact2DAD. Other changes are similar to what is done with MortarContact2D: elements are added to problems using `add_slave_elements!` and `add_master_elements!` instead of `add_elements!`, to make interface more explicit. Also, problem name is `Contact2DAD`, so the dimension is now explicitly stated in problem name. (Also have `Mortar2DAD`, compare to the `Mortar2D` and `Contact2D` of `MortarContact2D.jl`.)
2018-05-17 09:45:18 +03:00
Jukka Aho 931dc16138 Fix bug with sigma value (#197)
Sigma redefined.
2018-05-12 11:55:25 +03:00
Jukka Aho 66a24d382b Separate 2d contact code to own package (#195)
Moved plane contact related stuff to own separate package
`MortarContact2D.jl`, where the development continues.

The following changes to test files are done:

1) Problem name for plane mortar coupling is `Mortar2D` (was `Mortar`
before), and later on 3d coupling will be `Mortar`. So the dimension
of coupling operator is explicitly given in a problem name.

2) Before elements to coupling was defined using
```julia
update!(problem.elements, "master elements", master_elements)
add_elements!(problem, [slave_elements; master_elements])
```
Now, explicitly give master and slave elements as
```julia
add_slave_elements!(problem, slave_elements)
add_master_elements!(problem, master_elements)
```
Keep on mind that Lagrange multipliers are in slave side.
2018-05-07 15:14:42 +03:00
Jukka Aho 5ac771480e Use package HeatTransfer.jl for heat problems (#194)
Heat transfer analysis is moved to its own package where the development continues. Two small modifications are needed for test files:

- Instead of `problem.properties.formulation`, we have two separate problems, `PlaneHeat` for two-dimensional problems and `Heat` for three-dimensional problems.
- Unnecessary prefixing of field names is changed. For example, now we simply have only "thermal conductivity" and not prefixed "temperature thermal conductivity".
2018-05-03 15:37:37 +03:00
Jukka Aho f0997d8239 Drop Dataframes (#193)
Looks that package is no more used in the code. Let's drop it.
2018-05-02 12:45:14 +03:00
Jukka Aho ce468e8ed6 Fix bug in eigenvalue solver (#191)
This closes issue #190.
2018-03-18 17:37:17 +07:00
Jukka Aho b950ba312a Replace some rarely used functions (#188)
- `empty!(problem)` -> `empty!(problem.assembly)`
- `get_gdofs(element, ndim)` -> `get_gdofs(problem, element)`
2018-02-08 14:47:44 +07:00
Jukka Aho e0a6e431d1 Import get_problems from FEMBase 2018-01-29 23:13:41 +07:00
Jukka Aho dce7472cda Make JuliaFEM to use Analysis type from FEMBase
`Analysis` is basically doing same than `Solver` before, but has a
slighly simpler structure and is more general.
2018-01-29 23:13:41 +07:00
Jukka Aho d7bef419ed use FEMBase v0.1.x (#185)
Lots of stuff moved from JuliaFEM.jl to FEMBase.jl.
2018-01-19 21:01:33 +07:00
Jukka Aho 1693aa30ad Moved core functionality to FEMBase
Core functionality is moved to base package called FEMBase.jl. The
aim is that when developing new elements, solvers, materials and so on,
user only imports FEMBase.jl and uses the functionality there.
JuliaFEM.jl is a sort of "metapackage" collecting together all the
packages and features can be programmed in smaller packages focusing
only on one thing. This structure makes it attractive to contribute
smaller amount of code e.g. in the form of thesis. Moreover, FEMBase.jl
is under 2000 lines of code, which will be very clearly documented thus
everyone can understand the basic concepts behing JuliaFEM easily.
2017-11-13 11:48:17 +02:00
Marja Rapo 6e467691f0 Fix documentation
Update documentation of several functions to match documentation guide.
2017-08-23 15:53:01 +03:00
Jukka Aho 2bb66a9568 Special handling of constant metric Tet10
Mass matrix can be analytically solved if Tet10 metric is constant, i.e.
the midnodes are in the midpoint of corner nodes. This should increase
assembling speed of mass matrix.
2017-08-23 15:09:02 +03:00
Jukka Aho 3f433b927c Add module Abaqus back to code
Abaqus module is added back to code into `deprecations.jl` to make
code in seminar paper run on 0.3.3.
2017-08-21 10:05:32 +03:00
Jukka Aho f70209f17e Deprecate assemble!(problem, time, Val{:mass_matrix})
Use function assemble_mass_matrix!(problem, time)
2017-08-20 20:51:00 +03:00
Jukka Aho 5f6cdb8d31 Improve performance of mass matrix assembly
* Avoid unnecessary memory allocations.
* Decrease integration order.
2017-08-20 20:51:00 +03:00
Jukka Aho 2c08efe4bb Increase performance of writing results to Xdmf 2017-08-20 17:03:21 +03:00
Jukka Aho 27f0a37cbc Calculate displacement gradient using FEMBasis 2017-08-20 14:49:42 +03:00
Jukka Aho a08a928796 Eliminate Dirichlet boundary conditions differently
Slicing is very expensive operation on sparse matrices. Avoid slicing
by calculating matrix product `K_red = C1*K*C1`, where C1 is diagonal
matrix. This should be much cheaper.
2017-08-20 12:13:12 +03:00
Jukka Aho 6e036878c8 Use global timer to measure performance
This makes syntax a little bit easier. Also, measure more accurately performance
of modal solver under investigation.
2017-08-19 13:30:01 +03:00
Jukka Aho e839c60904 Preallocate matrices in Elasticity problem
Now style is to assemble all same kind/dimension elements at same time
in one function call, so it's possible to allocate all necessary
matrices only one time.
2017-08-18 23:27:26 +03:00
Jukka Aho 90fd63f375 New function group_by_element_type
Function groups a list of elements to several lists, where each
list contains elements of particular type.
2017-08-18 20:15:45 +03:00
Jukka Aho 115b621938 Fix deprecation warnings when using Julia 0.6.0 2017-08-18 17:45:52 +03:00
Jukka Aho bec6642693 Assemble several elements at a time
Now assemble! takes a vector of elements as input. This makes it
possible to preallocate memory for common matrices making code super
fast.
2017-08-17 17:49:39 +03:00
Jukka Aho b1cf7eacb9 Implement new function create_nodal_elements
This function can be used to create elements from node set defined
in mesh. Resulting elements are of type Poi1, that is, they don't
have any volume but it's still possible to add boundary conditions
to them which are then enforced in discrete sense.
2017-08-17 15:53:20 +03:00
Rapo 683c0a03e6 Implement new function add_elements!
Add new elements to the problem.
2017-08-16 17:20:55 +03:00
Jukka Aho 8ca459fc3a Remove functions used rarely
A new problem can be defined with 8(!) different styles. Let's remove
the ones not used often.
2017-08-16 16:57:56 +03:00
Jukka Aho 2ffe1589d7 Templating data type of Field
Use template in type Field to make type stabile code. This should fix
problems related to type stability.
2017-08-16 00:00:03 +03:00
Jukka Aho 7a827e0a12 Fix return types for fields not defined
Problem arises typically when boundary condition is created using
"nodal" elements of type Poi1, but forget to define geometry and
```solvers("geometry", 0.0)``` fails in Xdmf update function. Fixed.
2017-08-15 15:49:50 +03:00
Jukka Aho 938b6245ce use FEMBasis / BasisInfo structure
Calculate basic element info using BasisInfo
2017-08-14 21:20:44 +03:00
Jukka Aho fa52f5f528 Set up entry point for element assembly
From here we can preallocate matrices to improve efficiency of code.
2017-08-14 18:26:37 +03:00
Jukka Aho 36a726f662 Change coords field type from Point to Tuple
Change to Tuple, Array is allocating memory.
2017-08-14 17:10:02 +03:00
Jukka Aho d338060143 Separate problems_elasticity.jl
Have separate file problems_elasticity_2d.jl for plane stress, plane
strain, axisymmetric etc. problems.
2017-08-13 22:49:05 +03:00
Jukka Aho 541dcff250 Remove obsolete code from heat assembly
Postprocess-function is deprecated and not used anywhere.
2017-08-13 22:45:11 +03:00
Jukka Aho 197a6036b6 Remove needless stuff from postprocess_utils.jl
Not needed in core code.
2017-08-13 22:28:13 +03:00
Jukka Aho 8c955d2b5f Add another loop to assembly procedure
Yet another loop, but this way we can preallocate matrices when
constructiong local matrices of elements with same dimensions (which is
the case in practice)
2017-08-13 22:16:53 +03:00
Jukka Aho dc75cfda03 use TimerOutsputs to measure performance 2017-08-13 14:37:44 +03:00
Jukka Aho d42232dae9 Add new method to set properties for problem
```
update!(body.properties, "a" => "b", "c" => "d")
```

Usage example is shown in
`test_elasticity_2d_linear_with_surface_load.jl`.
2017-08-05 14:42:13 +03:00
Jukka Aho fffb0071a0 Calculate shape functions using FEMBasis.jl
A lot of code is moved to FEMBasis.jl regarding
calculating basis / shape functions of finite elements.

* add FEMBasis to REQUIRE
* remove obsolete files
* remove obsolete test files
* make integration point iterable
* loosen type definitions
* get length of element rather from basis than connectivity
* calculate midpoint of reference element
* wrong input argument to eval_basis! fixed
2017-08-05 12:03:05 +03:00
Jukka Aho 3cc43fafd2 separate optomechanical experiments to own package 2017-08-04 22:29:25 +03:00
Jukka Aho 250d454c71 use AsterReader.jl (#136)
Functions used to read Code Aster file format are now in separate package AsterReader.jl
2017-07-29 13:57:27 +03:00