Commit Graph

1001 Commits

Author SHA1 Message Date
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 b72db93981 Test group_by_element_type 2017-08-19 00:01:47 +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
Jukka Aho 741bb8d057 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 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 0ec0b8ddef New test 2017-08-15 15:49:50 +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 c422e14bad add *.mem and *.cov to .gitignore 2017-08-14 20:41:16 +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 v0.3.2 2017-08-13 14:37:44 +03:00
Jukka Aho 6fcba926d0 add simple usage example v0.3.1 2017-08-05 15:07:56 +03:00
Jukka Aho 0bf9811101 basic doc + @autodoc functions 2017-08-05 15:07:56 +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 5731d590ab 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 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
Tony Kelman dcd24e8e01 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 3cc43fafd2 separate optomechanical experiments to own package 2017-08-04 22:29:25 +03:00
Jukka Aho 419edd97c8 add package dependency AsterReader.jl v0.3.0 2017-08-03 21:06:55 +03:00
Jukka Aho 19e89d432a add package dependency FEMQuad.jl 2017-08-03 20:29:19 +03:00
Jukka Aho 71f878c64f AbaqusReader.jl tagged, added to REQUIRE 2017-08-02 01:30:32 +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
Jukka Aho 0ef5f61f19 Move Abaqus-related functions to own file (#137) 2017-07-29 10:51:19 +03:00
Jukka Aho 95d4eacbad Use FEMQuad.jl to calculate quadrature rules for elements (#134) 2017-07-23 18:42:04 +03:00
Vlad Stoian d7eb6133d4 Change README link to new CONTRIBUTING.rst (#132) 2017-07-22 17:24:10 +03:00
Jukka Aho c977a01cad Use PkgTestSuite for CI (#131)
This standardizes the CI process between JuliaFEM packages
2017-07-21 16:28:03 +03:00
Jukka Aho ff3317eebe move cloning of AbaqusReader.jl from .travis to build/deps.jl (#130) 2017-07-21 15:57:46 +03:00
Jukka Aho 80b0db0ec8 REQUIRE: change julia 0.5 -> 0.6 (#129) 2017-07-21 11:08:17 +03:00
Jukka Aho ef507dca82 Use package AbaqusReader.jl (#127)
Source code related to read and parse ABAQUS .inp files is now living in
it's own repository `AbaqusReader.jl` and in this commit we cleanup the
same files from this repository.

- add AbaqusReader to .travis.yml because it's not registered package yet
- initialize Mesh from AbaqusReader.jl dict
- remove ABAQUS tests and files moved to AbaqusReader.jl
- remove references to old module Abaqus
- move ABAQUS code to preprocess.jl (what is left)
- close issue #122
- close issue #55
2017-07-21 00:40:52 +03:00
Jukka Aho fceb06416e Make code 0.6 compatible (#128)
* running v0.6 conversion code proposed by @ovainola in #108.
* change travis so that build is done using 0.6
* documentation is build from 0.6
* fix most of deprecation warnings
* fix test to pass 0.6
2017-07-20 20:46:57 +03:00
Jukka Aho 659da94e8d Deploy documentation from 0.5 build 2017-07-20 17:17:12 +03:00
Jukka Aho bd965c4a6d Measure testing time for each test file separately (#126)
Uses TimerOutputs.
2017-07-20 17:11:37 +03:00
Jukka Aho 97da438088 add CheckHeader and CheckTabs (#125)
* add `CheckHeader.jl` and `CheckTabs.jl` to `travis.yml`
* fix tab -> 4 spaces
2017-07-20 17:10:15 +03:00
Tony Kelman d56010f24b use version number instead of release in .travis.yml (#109)
release will change over time, but your REQUIRE file says this
package supports julia 0.5 so it should continue to be tested
2017-07-20 16:04:21 +03:00
Jukka Aho 8a92b45882 Set up documentation + lint (#121)
- remove some automatically generated stuff not should even be in
repository
- set up lint + Documents.jl in same way it is defined in freshly started projects
- add lint + doctest to after_success so that build pass, these needs to be fixed later
- build is failing on nightly (0.7) but it's ok for release (0.5.2)
- Documenter.jl supports doctests, so this closes least #23
- build system is now on Travis-CI completely, so this closes also #68
2017-07-19 07:34:38 +03:00