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
* 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
* 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
* problems_mortar_3d.jl: rename function contains to approx_in
See issue #85. `contains` is now renamed to `approx_in`. I also
switched argument order, so this function is now called in a same
way function `in()`. Usage example:
julia> P = Vector[[1.0, 1.0], [2.0, 2.0]]
2-element Array{Array{T,1},1}:
[1.0,1.0]
[2.0,2.0]
julia> q = [1.0, 1.0] + eps(Float64)
2-element Array{Float64,1}:
1.0
1.0
julia> in(q, P)
false
julia> approx_in(q, P)
true
Also added docstring and usage example.
* Removed `importall base` from code
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