Commit Graph

78 Commits

Author SHA1 Message Date
Kristoffer Carlsson 09c355b916 make backwards compatible 2018-11-29 17:40:55 -05:00
Kristoffer Carlsson 32ac97f4b1 keep working on csc assembly 2018-10-28 20:40:55 -04:00
Kristoffer Carlsson cd22d1a571 use buffer and call assemble for one elements, also some tweaks for using sparsity pattern in FEMBase.jl 2018-10-19 17:35:30 -04:00
Jukka Aho a5a2c43dd8 Fix deprecation warnings
* Add docstrings
* Refactor code
* Module level docstring giving an example
2018-09-06 13:34:26 +03:00
femtocleaner[bot] 33c8657f56 Fix deprecations (#206) 2018-07-05 11:21:10 +03:00
Jukka Aho eb600c940e 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 7e1b5d2a0c 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 5b93c48a3a 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 70dda739f9 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 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 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 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 9ad66be08b 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 5327459ba4 Use TimerOUtputs.jl to measure time and memory performance
- Added TimerOutputs.jl to REQUIRE file
- JuliaFEM has now TimerOutput handle `to` and function `print_statistics()` to get summary of time and memory usage
- TimerOutputs is used in LinearSolver at the moment and tested in file `test_elasticity_2d_linear_with_surface_load.jl`
2017-04-11 10:39:18 +03:00
Jukka Aho b3f0531746 Add postprocessing features (#100)
* refactored code for solvers.

* Added elementary tests for least-squares fitting of strain and stress fields

* A more realistic postprocess + Xdmf writing test

* removed debug keyword argument from test

* Rewrite update_xdmf!

New function to update Xdmf file no longer takes Solver object but
xdmf, problem, time and fields to write, for example

julia> update_xdmf!(xdmf, problem, 0.0, ["displacement", "temperature"])

All problems are written separately and put together into one
SpatialCollection, allowing to have more structured Xdmf and making
it easier to write complicated field configurations. Support for Xdmf
API 3.0 added.

* Support for Tensor6 field writing

* moved update_xdmf! to io.jl

* Removed some empty files

* Not use old Postprocessor, obsolete code.

* Not use old XDMF (obsolete code). Fixed test.

* removed some postprocessing to pass test, maybe we should drop abaqus.jl from code as obsolete

* add function get_temporal_collection back, it's used by update_xdmf of modal solver

* postprocess of boundary problems also

* added test for contact pressure. dl+quad test output was written in wrong file, fixed.

* postprocess for contact pressure

* contact pressure postprocess

* with boundary problems always store also the primary unknown field

* Change "reaction force" -> "lambda"

* testing postprocess of reaction force also

* sign convention
2017-03-21 08:36:18 +02:00
Jukka Aho a0d18568ce Contact algorithms testing & develpoment (#95)
* contact 3d patch test, standard lagrange, small sliding, linear tet4 elements

* tet4 dual basis contact patch test pass

* contact 3d patch test, standard lagrange, small sliding, linear tet4 elements

* tet4 dual basis contact patch test pass

* Patch test for linear elements standard lagrange / dual lagrange pass now

* Patch test for quadratic contact surfaces for standard + dual basis pass

* refactoring

* renamed files

* Improvements to preprocess scripts

* convert several elements to node sets in one command

* possibility to find particular node from mesh filtered by node set

* 2d small sliding contact patch test, linear elements

* Added backward compatibility

* 2d contact algorithms pass patch tests

* test data for 2d contacts

* no common models in different tests. testing generalized alpha stabilization

* Preprocess tests

* moved tests from test_preprocess_aster_reader.jl to test_preprocess.jl

* generalized-alpha time integration, alpha=0.0 by default

* Improvements to logging

* JuliaFEM.jl: can set environment variable to one of logging levels: OFF, CRITICAL, ERROR, WARNING, INFO, DEBUG

* problems_contact_2d_autodiff.jl: do not loop over nodes if logging level != DEBUG
2017-03-02 08:43:58 +02:00
Jukka Aho f275ce3767 Bug/mortar discretization (#88)
* new mortar segmentation tests which are failing

* test_problems_mortar_3d.jl: first test (Tet4) pass

* solvers.jl: diagonal of A is now properly filled, if that option is used. Another option is to remove zero rows from matrix system, which is on by default

* problems_mortar.jl: added new function diagnose_interface to calculate quantities from interface hopefully revealing bugs in calculation

* problems_mortar_3d.jl: added docstring for check_orientation! and removed flooding debug messages not helping to debug anything

* solvers.jl: Another way to solve Ax = b

* Refactored code to make implementation of Tri6 assemble! easier

* Patch test with linear Tet4 elements and quadratic Tet10 elements pass

When using quadratic elements, in polygon clipping algorithm element is divided to linear sub-elements as proposed in [Puso2008]. Interpolation of Lagrange multiplier space is done using quadratic shape functions.

References
----------

[Puso2008] Puso, Michael A., T. A. Laursen, and Jerome Solberg. "A segment-to-segment mortar contact method for quadratic elements and large deformations." Computer Methods in Applied Mechanics and Engineering 197.6 (2008): 555-566.

* increased coverage by adding diagnose_interface

* test using dual basis, failing for unknown reason

* Fixed dual basis construction for Mortar/Tet4

The coefficient matrix Ae for one particular slave element e is the result performing numerical integration on *all* integration cells associated with this element [Popp2013]. Ae cannot be calculated "cell-wise" like it was done before. Now patch test will pass also using `interface.properties.dual_basis = true` option. Partially integrated slave elements are supported as well.

References
----------

[Popp2013] Popp, Alexander, et al. "Improved robustness and consistency of 3D contact algorithms based on a dual mortar approach." Computer Methods in Applied Mechanics and Engineering 264 (2013): 67-80.

* Minor modifications to preprocess.jl

- removed two functions which are unimplemented (but maybe planned in future)
- added function create_node_set_from_element_set!, which can be used, like name suggests, to create a node set from nodes belonging to some set of elements.

* solvers.jl: now prints a list of overconstrained nodes which can be easily copy-pasted to problem.assembly.removed_dofs list to solver overconstrained situation manually

* Increase code coverage

Added a new test which tests dual basis 3d mortar + adjust option when using Tet4 in elasticity problem.

* Tet10 + Dual basis still failing, others are working

* mortar 3d low level tests

* linear surface element projection tests pass

* Introduced basis transform constant alpha

Tet10 + dual basis patch test still failing, but single element low level routine tests gives expected results with alpha=0.2

* added new integration rule FPG12 for triangular elements

* added drop_tolerance option to remove very small values from constraint matrices

* Introduced a basis transform matrix T

Constructing bi-orthogonal basis for quadratic surfaces is ill-conditioned. By doing a basis transform N' = N*T for slave side displacement vector it's possible to construct a bi-orthogonal basis in a same way than with linear elements. Setting alpha=0.2 ensures that quadratic basis functions are strictly positive in practical cases.

* fix 3d clipping test routine, accepts only 3d vertices

* dropped number of integration poitns from 12 to 7 in quadratic mortar surfaces intrestingly gives more accurate results, maybe something numerical error in FPG12 integration rule..?

* added two displacement patch tests + output writing for all cases

* %s/Int64/Int/g

* Changed test data location

* Fine tuning of logging levels
2017-02-25 18:40:14 +02:00
Jukka Aho f3995ee445 solvers.jl: Another way to solve Ax = b
Conflicts:
	src/solvers.jl
2017-02-25 08:02:41 +02:00
Jukka Aho b238f38d61 bugfix: maximum dimension of problem was miscalculated nnodes*dim, correct way is max_node_id*dim, this was causing bugs when node ids is not starting from 1 2017-02-25 07:18:51 +02:00
Jukka Aho 0ca7efd631 Testing/code coverage (#83)
Change the code coverage to green. 

* removed duplicate code

* Removed unused code

* removed unmaintained code

* DCTI + DVTI refactored

* discrete fields refactored and tested

* fields are now tested quite well.

* Removed obsolete code not used anywhere

* Element descriptions to common dictionary

* size in global const dictionary also

* Added coverage to sparse tools and removed couple unused functions

* get nonzero rows from SparseMatrixCSC

* bugfix: extending element basis now working and tested

* Removed two unused functions from elements.jl

* removed useless function

* Useless conversion

* remove elasticity assembly using ForwardDiff because it's not used anywhere'

* Added basic testing for NURBS. Fixed bug in NSolid interpolation.

* removed unused functions

* Removed some debug stuff

* renamed file

* removed field assembly posthook, i think not good idea at all

* test for nnz(K) == 0 and automatic determination of dofs

* Testing that solver is throwing error if having problems with boundary assembly

* Removed some unused options. Refactoring.

* Moved solver non-related code to elements.jl

* Removed custom exception (no need)

* unneeded postprocess code

* More tests for NURBS elements.

* Removed unfinished .mail parser

* proper use of Logging package

* also read results

* renamed test file

* create_surface_elements accepts surface name in String now

* bugfix: remove zero rows from constraint matrix after manually removing dofs from some boundary assemblies.

* New test, displacement 3d patch test

* skip displacement field in surface element splitting if not defined

* test element splitting and linear surface elements, fails.

* Bugfix: Xdmf, not XDMF

* removed nonworking tests, requires bugfix

* abaqus_read_results is not working -> bug
2017-01-30 12:28:33 +02:00
Jukka Aho 500fbbcf9f Fixed multiple dispatch issues on io.jl
Related to issue #74, io.jl is no more modifying functionality of
LightXML
2017-01-21 12:32:53 +02:00
Jukka Aho ff3ff13a1c umfpack solver: add diagonal terms to empty rows 2017-01-09 12:44:40 +02:00
Jukka Aho 7ef7090462 add extra information when overconstrained situation 2017-01-09 09:32:02 +02:00
Jukka Aho 0913b23d01 possibility to manually remove dofs from problems by adding dof number to problem.assembly.removed_dofs vector 2017-01-09 08:56:31 +02:00
Jukka Aho 995c785ddb nonworking automatic overconstraint solver code removed 2017-01-06 10:07:58 +02:00
Jukka Aho 1c8bc9bc64 removed null space related code as obsolete 2017-01-05 07:14:54 +02:00
Jukka Aho 2cb856e21c a bit different way to handle trivial D on lufact 2016-11-30 16:19:22 +02:00
Jukka Aho d25885a502 refactored xdmf write code a bit 2016-11-28 12:20:54 +02:00
Jukka Aho ee65eeb906 fixed element connetivity matrix in xdmf write 2016-11-22 06:00:00 +02:00
Jukka Aho 95200a81e1 fixed deprecation warnings for 0.5 2016-11-13 13:24:08 +02:00
Jukka Aho f0c9bf0169 with_mass_matrix keyword for assemble 2016-10-13 00:59:38 +03:00
Jukka Aho ea65cb94be new style dict field, xdmf improvements 2016-08-04 13:15:19 +03:00
Jukka Aho e67422fa7c better xdmf support 2016-08-02 02:51:32 +03:00
Jukka Aho 62efaa292a io 2016-08-01 01:15:41 +03:00
Jukka Aho 67ace8acdc lot of new tests, echangement of modal solver, eigenvalue analysis with mesh tie 2016-07-27 18:12:24 +03:00
Jukka Aho 1bd1ec9fa9 postprocessing utility 2016-07-14 12:43:41 +03:00
Jukka Aho d394ed6deb reading and testing abaqus .inp files 2016-07-11 04:48:59 +03:00
Jukka Aho fb510e29df analytical tests, hollow sphere and radial displacement + longitudinal vibration of rod (modal analysis) 2016-07-10 23:35:17 +03:00
Jukka Aho c935725d3a julia v0.5 compatibility. test -> testing. new elements tri7 and wedge6. abaqus inp reading. more integration rules. 2016-07-10 04:26:21 +03:00
Jukka Aho 6417b76f8c 2d finite sliding autodiff version i think it works now 2016-07-04 21:47:49 +03:00
Jukka Aho 4c45618330 fixed a lot of deprectionwarning issues with 0.5 2016-07-04 03:29:24 +03:00
Jukka Aho 757ba2b3d9 all tests pass now 2016-07-03 21:16:03 +03:00
Jukka Aho b070f21aab heat solver tests etc 2016-07-03 05:01:18 +03:00
Jukka Aho 9f4eface6c heat problem 2016-07-01 02:55:56 +03:00
Jukka Aho ce9eb715ec code refactoring 2016-06-27 16:11:33 +03:00
Jukka Aho 778c167bba refactor contact and tests 2016-06-25 04:12:53 +03:00
Jukka Aho 67aeddb868 modal solver + tie contact works now. dirichlet boundary and mpcs are eliminated properly before solution to get reduced system 2016-06-22 01:39:28 +03:00
Jukka Aho c02d510673 fixed a lot of tests 2016-06-19 20:01:37 +03:00
Jukka Aho a0b4ffbf34 first version of modal analysis for natural frequencies 2016-06-17 02:10:17 +03:00
Jukka Aho 851b1e75e3 better heat example 2016-06-09 23:17:57 +03:00