Commit Graph

531 Commits

Author SHA1 Message Date
Jukka Aho bc65dab2fc fix: Resolve merge conflicts and remove incomplete parallel assembly
- Remove incomplete parallel assembly code from 2019 (Issue #250)
- Parallel assembly referenced non-existent problem.assemble_parallel field
- Resolve merge conflict markers from master branch
- Code formatting: standardize spacing around operators and type annotations
- Simplify to serial assembly with comment noting parallel needs refactor

Package still loads and core tests pass.
2025-11-08 08:44:30 +02:00
Jukka Aho 74ac108a56 chore: Update Project.toml dependencies
- Update FEMSparse UUID to match vendor package
- Add InterfaceMechanics dependency
- Reformat author/version lines
2025-11-08 07:57:15 +02:00
Jukka Aho 4ceb353314 Merge branch 'master' of github.com:JuliaFEM/JuliaFEM.jl 2019-11-26 15:30:42 +07:00
Jukka Aho d781b00da1 Merge branch 'master' into kc/local_buffer 2019-11-26 15:29:02 +07:00
Jukka Aho 9dc794101c Give meaningful error message when assembling continuum elasticity problem fails
Sometimes user may have the wrong kind of elements in element set when
assembling 3d continuum problem. This could happen for example in
situations, where mesher is giving also segment elements. They may have
some use in certain situations, but currently we don't support them.
When assembly is failing for this reasons, we give a meaningful error
message:

[ Info: It looks that you are trying to assemble elements of type Seg3
to 3d continuum problem. However, they are not supported yet. To filter
out elements from a element set, try `filter(element->!isa(element,
Element{Seg3}), elements)`
ERROR: LoadError: Tried to assemble unsupported elements of type Seg3 to
3d continuum problem.

This commit closes issue #211.
2019-10-27 12:50:11 +02:00
Jukka Aho e821e07723 Remove imports not available anymore in Base
Closes issue #234.
2019-10-13 12:36:51 +03:00
Matt Campbell b62ddac26a change in old function name ucfirst to uppercasefirst, which was preventing the beam examples from running 2019-09-25 10:15:05 -07:00
Jukka Aho 3be87e02bf Merge pull request #226 from JuliaFEM/kc/coloring
Implement matrix coloring.
2019-04-08 18:56:11 +03:00
Jukka Aho 6903041db7 Merge pull request #225 from JuliaFEM/KristofferC-patch-2
Improve performance in elasticity by moving out the computation of X from the integration point loop.

Before:
```
 12.576967 seconds (37.65 M allocations: 1.852 GiB, 11.65% gc time)
```

After:
```
 11.251927 seconds (35.27 M allocations: 1.692 GiB, 11.27% gc time)
```

2 million allocations less.
2019-04-08 18:44:59 +03:00
Kristoffer Carlsson 2aca9f0d0c alloc improvements 2018-12-03 15:20:06 -05:00
Kristoffer Carlsson 09c355b916 make backwards compatible 2018-11-29 17:40:55 -05:00
Kristoffer Carlsson ee7532a749 updates 2018-11-19 07:44:56 -05:00
Kristoffer Carlsson 3c67c9c2c9 single threaded 2018-11-15 12:26:17 -05:00
Kristoffer Carlsson b503065d66 Merge branch 'kc/coloring' into kc/local_buffer 2018-11-15 08:18:28 -05:00
Kristoffer Carlsson a2adc68b3f implement matrix coloring 2018-11-08 14:28:20 -05:00
Kristoffer Carlsson 25866860ab wip 2018-11-08 14:27:44 -05:00
Kristoffer Carlsson 58f9fb05be improve performance in elasticity by moving out computation of X from intergration point loop 2018-11-02 13:47:57 -04:00
Kristoffer Carlsson 64c6ff8ad5 improve performance in elasticity 2018-11-02 13:38:15 -04: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
Kristoffer Carlsson 2394725a61 Elasticity: add a local buffer struct to preallocate things needed in the assembly loop 2018-10-02 16:00:02 -04:00
Jukka Aho 4b471ac9ba Store Xdmf results in Mixed format
Store element connectivity as "Mixed" format to Xdmf file. It's a long
list where first number is element code and then there is connectivity
data (starting from 0). Xdmf format does not support several
Topology-elements in Xml file format, so before it was not possible to
store e.g. both Tri3 and Quad4 elements in same problem. After this
commit this should now be possible. Paraview Xdmf3 reader is needed to
use.
2018-09-20 19:59:45 +03: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 8bfda8c6e0 fix bug of setting sigma in Modal analysis (#204) 2018-07-04 21:51:09 +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 b8ac49c5a8 Use FEMBeam.jl (#200)
Use FEMBeam.jl to solve beam problems. Added an example, where
natural frequencies of frequencies of 3d frame structure are
calculated. Some minor modifications to Modal analysis is done to make
Xdmf writing of 6 dof nodes work.
2018-06-04 21:29:37 +03:00
Jukka Aho d0f68682ea Fix bug in writing two-dimensional problems (#198) 2018-05-25 17:54:36 +03:00
Jukka Aho e68eec89f9 Move contact mechanics to separate package (#196)
Development of auto-differentiated mortar contact mechanics in 2D is moved to own separate package, MortarContact2DAD. Other changes are similar to what is done with MortarContact2D: elements are added to problems using `add_slave_elements!` and `add_master_elements!` instead of `add_elements!`, to make interface more explicit. Also, problem name is `Contact2DAD`, so the dimension is now explicitly stated in problem name. (Also have `Mortar2DAD`, compare to the `Mortar2D` and `Contact2D` of `MortarContact2D.jl`.)
2018-05-17 09:45:18 +03:00
Jukka Aho 4941a4f005 Fix bug with sigma value (#197)
Sigma redefined.
2018-05-12 11:55:25 +03:00
Jukka Aho 9e28c6d604 Separate 2d contact code to own package (#195)
Moved plane contact related stuff to own separate package
`MortarContact2D.jl`, where the development continues.

The following changes to test files are done:

1) Problem name for plane mortar coupling is `Mortar2D` (was `Mortar`
before), and later on 3d coupling will be `Mortar`. So the dimension
of coupling operator is explicitly given in a problem name.

2) Before elements to coupling was defined using
```julia
update!(problem.elements, "master elements", master_elements)
add_elements!(problem, [slave_elements; master_elements])
```
Now, explicitly give master and slave elements as
```julia
add_slave_elements!(problem, slave_elements)
add_master_elements!(problem, master_elements)
```
Keep on mind that Lagrange multipliers are in slave side.
2018-05-07 15:14:42 +03:00
Jukka Aho 79170fcf23 Use package HeatTransfer.jl for heat problems (#194)
Heat transfer analysis is moved to its own package where the development continues. Two small modifications are needed for test files:

- Instead of `problem.properties.formulation`, we have two separate problems, `PlaneHeat` for two-dimensional problems and `Heat` for three-dimensional problems.
- Unnecessary prefixing of field names is changed. For example, now we simply have only "thermal conductivity" and not prefixed "temperature thermal conductivity".
2018-05-03 15:37:37 +03:00
Jukka Aho cfcd647cac Drop Dataframes (#193)
Looks that package is no more used in the code. Let's drop it.
2018-05-02 12:45:14 +03:00
Jukka Aho 0694ce1b06 Fix bug in eigenvalue solver (#191)
This closes issue #190.
2018-03-18 17:37:17 +07:00
Jukka Aho 23204ee15b Replace some rarely used functions (#188)
- `empty!(problem)` -> `empty!(problem.assembly)`
- `get_gdofs(element, ndim)` -> `get_gdofs(problem, element)`
2018-02-08 14:47:44 +07:00
Jukka Aho 6616ee05e1 Import get_problems from FEMBase 2018-01-29 23:13:41 +07: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
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 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 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 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