Commit Graph

941 Commits

Author SHA1 Message Date
Jukka Aho 6248887189 Improvements to preprocess scripts
* convert several elements to node sets in one command

* possibility to find particular node from mesh filtered by node set
2017-02-27 07:34:04 +02:00
Jukka Aho 4a471b5cb7 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 5631f2895b Merge pull request #92 from JuliaFEM/solvers
solvers.jl: Another way to solve Ax = b
2017-02-25 08:25:30 +02:00
Jukka Aho 2a885d27df solvers.jl: Another way to solve Ax = b
Conflicts:
	src/solvers.jl
2017-02-25 08:02:41 +02:00
Jukka Aho 56213c2844 Merge pull request #91 from JuliaFEM/bug/solution_vector_dimension
[bugfix] maximum dimension problem is miscalculated
2017-02-25 07:40:13 +02:00
Jukka Aho 87874cd570 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 bb06b151cb problems_mortar_3d.jl: rename function contains to approx_in (#86)
* 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
2017-02-01 10:42:31 +02:00
Jukka Aho c307c1482c 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
v0.2.1
2017-01-30 12:28:33 +02:00
Jukka Aho ddabc9d82b Merge pull request #81 from JuliaFEM/fix_80
Fix FactCheck dependencies (issue #80)
2017-01-27 13:34:18 +02:00
Jukka Aho 6fafad63a4 Fix FactCheck dependencies (issue #80)
- Remove some obsolete tests related to Field.
- Fixed a test checking is header information found from source files
  (was using FactCheck and commented out).
- Add header information for all files (was missing from
  materials_plasticity.jl)
2017-01-27 10:15:52 +02:00
Jukka Aho 143ba4d119 Removed unused functions from postprocess.jl
These functions are not used in anywhere, maybe unnecessary.
2017-01-21 15:07:55 +02:00
Jukka Aho 9b4c1a4c5e 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 c1b5d2f7ed Inceased coverage (#77)
- added Xdmf() to solver for two tests to test also creating Xdmf after solution.
2017-01-21 09:57:52 +02:00
Tero Frondelius 4ddf1443dc Merge pull request #75 from ahojukka5/master
Removed unnecessary functions to increase code coverage
2017-01-10 09:17:21 +02:00
Jukka Aho 64ba9e742c removed unnecessary function 2017-01-10 08:11:30 +02:00
Tero Frondelius 519d252f34 Update .travis.yml 2017-01-09 17:54:28 +02:00
Jukka Aho 77d0b28f7e fixed function call for ideal_plasticity! to get correct arguments. 2017-01-09 13:36:08 +02:00
Jukka Aho 5467fc1d66 fixed test 2017-01-09 13:21:07 +02:00
Jukka Aho c1358328e6 commented out non-working elemen tprint 2017-01-09 13:07:59 +02:00
Jukka Aho 66285b69ac umfpack solver: add diagonal terms to empty rows 2017-01-09 12:44:40 +02:00
Jukka Aho 0c4a85d1a5 fixed DCTV initialization 2017-01-09 12:43:22 +02:00
Jukka Aho 5cf93b0d51 boundary condition returns always 1-dimensional array for elements, not 0-dimensional 2017-01-09 12:21:55 +02:00
Jukka Aho 05b31a14ee removed obsolete test files 2017-01-09 11:26:26 +02:00
Jukka Aho d840e56575 attempt to fix boundary condition 2017-01-09 11:26:04 +02:00
Jukka Aho 9683e60c6d refactoring; works now in julia 0.5 2017-01-09 11:06:10 +02:00
Jukka Aho 7dd897b162 conversion rule from SparseVector to SparseVectorCOO 2017-01-09 11:01:18 +02:00
Jukka Aho 19551f85ff fixed test 2017-01-09 09:32:15 +02:00
Jukka Aho dcac3a9b53 add extra information when overconstrained situation 2017-01-09 09:32:02 +02:00
Jukka Aho 9a382d9f7d 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
ovainola 31d0771dd3 Removing vonmises.jl includes (#74)
* Removing vonmises.jl includes

Removing all vonmises.jl includes, since file is no longer
to be found in the repository. Vonmises.jl had definitions
for elasticplastic material models, but those definitions
have been moved to problems_elasticity.jl/problems_elasticplastic.jl
files.

fix #73
2017-01-06 12:26:29 +02:00
Tero Frondelius e485542d3f Update .travis.yml 2017-01-06 10:47:56 +02:00
Jukka Aho ce1dd0be1f removed solver_utils.jl include 2017-01-06 10:27:39 +02:00
Jukka Aho fce5565ff1 nonworking automatic overconstraint solver code removed 2017-01-06 10:07:58 +02:00
Jukka Aho 8953ca73dc fixed test 2017-01-06 07:24:58 +02:00
Jukka Aho 5a1a566826 fixed test 2017-01-06 07:22:09 +02:00
Jukka Aho 7297de0b26 formatting 2017-01-06 07:00:38 +02:00
Jukka Aho 7464646a7a improved docstring 2017-01-06 06:57:49 +02:00
Jukka Aho fc63ff1692 removed unmaintained code to wait for better days 2017-01-06 06:57:34 +02:00
Jukka Aho a1c6c8753a io tests 2017-01-05 11:29:29 +02:00
Jukka Aho 4a12cbfb41 dict fields 2017-01-05 11:03:19 +02:00
Jukka Aho 46e3a70b39 fixed deprecation warning in aster_read_nodes 2017-01-05 09:41:34 +02:00
Jukka Aho dc7c770c6e no id in constructor 2017-01-05 09:32:43 +02:00
Jukka Aho 6fb491ed66 fixed element initialization 2017-01-05 09:30:41 +02:00
Jukka Aho 6fda394e4f fixed virtual element initialize 2017-01-05 09:29:16 +02:00
Jukka Aho 998c1c2441 fixed deprecationwarning in get_node_sets 2017-01-05 09:25:12 +02:00
Jukka Aho d2d641a69d surface se type is UNKNOWN if not specified. 2017-01-05 09:23:16 +02:00
Jukka Aho 169262ced3 fixed deprecationwarning 2017-01-05 09:17:25 +02:00
Jukka Aho 070c64ff89 fixed 2d finite sliding contact for julia 0.5 2017-01-05 09:09:11 +02:00
Jukka Aho 858740cec7 SparseVectorCOO 2017-01-05 09:08:32 +02:00
Jukka Aho f018fa564d connectivity information needs now to be given every element 2017-01-05 07:22:15 +02:00