Commit Graph

952 Commits

Author SHA1 Message Date
Jukka Aho 353904dbab 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
Jukka Aho 4ab9e77240 Update README.md
Add DOI for JuliaFEM v0.3.3.
2017-08-23 16:00:14 +03:00
Marja Rapo 1955403617 Fix documentation
Update documentation of several functions to match documentation guide.
2017-08-23 15:53:01 +03:00
Jukka Aho 2ebcbdb00d 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 1938faf2cf Update README.md 2017-08-21 18:00:09 +03:00
Jukka Aho 467cf4db27 README.rst -> README.md, we prefer Markdown 2017-08-21 18:00:09 +03:00
Jukka Aho 64494d2a1f remove CONTRIBUTING.rst, new contributing guide is in juliafem.org 2017-08-21 18:00:09 +03:00
Jukka Aho 457dc00879 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 35fea30dac New test for Tet10 mass matrix 2017-08-20 20:51:00 +03:00
Jukka Aho 4070b309c8 Fix test of zero eigenmodes
A better known example.
2017-08-20 20:51:00 +03:00
Jukka Aho fe3daae587 Deprecate assemble!(problem, time, Val{:mass_matrix})
Use function assemble_mass_matrix!(problem, time)
2017-08-20 20:51:00 +03:00
Jukka Aho d01d1ea6e6 Improve performance of mass matrix assembly
* Avoid unnecessary memory allocations.
* Decrease integration order.
2017-08-20 20:51:00 +03:00
Jukka Aho 8f420fbaa5 Increase performance of writing results to Xdmf 2017-08-20 17:03:21 +03:00
Jukka Aho 923aad6f7c Calculate displacement gradient using FEMBasis 2017-08-20 14:49:42 +03:00
Jukka Aho 720d76a4ba 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 ecaf8cb7fc 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 0fffdb52ba Test group_by_element_type 2017-08-19 00:01:47 +03:00
Jukka Aho 675f787c9a 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 7eba2f782f 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 a24a5945a1 Fix deprecation warnings when using Julia 0.6.0 2017-08-18 17:45:52 +03:00
Jukka Aho ef66a8f74b 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 aabcda2e26 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
Jukka Aho 89af6faad5 Fix test
Now both JuliaFEM and JuliaFEM.Preprocess export add_elements! and
it must be spesifically pointed out which one is used in test.
2017-08-16 17:20:55 +03:00
Rapo 367c4711b3 Implement new function add_elements!
Add new elements to the problem.
2017-08-16 17:20:55 +03:00
Jukka Aho 1966b7f894 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 a6b198b1ab 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 ab7a661712 New test 2017-08-15 15:49:50 +03:00
Jukka Aho 7efa5aa01e 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 1505205dcd use FEMBasis / BasisInfo structure
Calculate basic element info using BasisInfo
2017-08-14 21:20:44 +03:00
Jukka Aho 08055ecd21 add *.mem and *.cov to .gitignore 2017-08-14 20:41:16 +03:00
Jukka Aho 5357ed88c8 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 b6b0bc3f55 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 681d53ee9a 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 4939f49760 Remove obsolete code from heat assembly
Postprocess-function is deprecated and not used anywhere.
2017-08-13 22:45:11 +03:00
Jukka Aho d88dc8742e Remove needless stuff from postprocess_utils.jl
Not needed in core code.
2017-08-13 22:28:13 +03:00
Jukka Aho b87952ae14 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 a11fafc25b use TimerOutsputs to measure performance 2017-08-13 14:37:44 +03:00
Jukka Aho 4d0dbc44a5 add simple usage example 2017-08-05 15:07:56 +03:00
Jukka Aho 6893ec3fa8 basic doc + @autodoc functions 2017-08-05 15:07:56 +03:00
Jukka Aho 96714acc18 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 0f0c49da62 Cleanup of obsolete files
A lot of old files from old documentation systems etc. is in package.
These are now removed or moved. Old notebooks are in docs/tutorials.
This PR closes issue #124.
2017-08-05 12:08:46 +03:00
Jukka Aho 3d3e9bb441 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
Tony Kelman 4038c2f0ce Use @__DIR__ instead of Pkg.dir
this allows installing and loading the package from elsewhere
2017-08-05 12:02:00 +03:00
Jukka Aho b7880906ee separate optomechanical experiments to own package 2017-08-04 22:29:25 +03:00
Jukka Aho cfba8b62f0 add package dependency AsterReader.jl 2017-08-03 21:06:55 +03:00
Jukka Aho ce9b028d26 add package dependency FEMQuad.jl 2017-08-03 20:29:19 +03:00
Jukka Aho 724196b4a4 AbaqusReader.jl tagged, added to REQUIRE 2017-08-02 01:30:32 +03:00
Jukka Aho 648bbe2a40 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
Jukka Aho cbc85ee665 Move Abaqus-related functions to own file (#137) 2017-07-29 10:51:19 +03:00
Jukka Aho e46c0a1ad4 Use FEMQuad.jl to calculate quadrature rules for elements (#134) 2017-07-23 18:42:04 +03:00