Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ReleaseNotes/release_8.3.txt
3194 views
1
Elmer Release Notes for version 8.3
2
===================================
3
4
Previous release: 8.2
5
Period covered: 12 March 2016 - 18 May 2017
6
Number of commits: ~620
7
8
9
ElmerSolver library functionality
10
--------------------------------
11
This is functionality that can be controlled by the user by choose of keywords.
12
13
- IDR(s): New linear solver "IDR(s)" implemented. This is a contribution
14
from Martin van Gijzen. It is called by setting > Linear System Iterative Method = "idrs".
15
The s-parameter is set by "Idrs Parameter = 4", for example. The method is quite robust and
16
may often provide the best available strategy for nonsymmetric matrices.
17
The convergence may be made monotonic by setting > Idrs Smoothing = True <
18
19
- Hcurl conforming elements
20
o Second-order pyramidic (31-DOF) edge element added: curl-conforming
21
approximation of degree 2 is now possible with all element shapes
22
o General Dirichlet BCs can now be specified for all available curl-conforming
23
(edge) elements (second order, optimal family, and second kind basis options
24
supported); see Appendix F of Elmer Solver Manual
25
o Mortar BCs of Galerkin type for second-order edge elements over the lowest-
26
order background mesh
27
28
- Linear solver control: These are routines that should make the use of linear solvers more robust.
29
o Upper limit for detecting divergence in the internal Krylov methods of Elmer.
30
Activated by keyword > Linear System Divergence Limit <, default is 1e20.
31
o Changing linear system on-the-fly: There is a mapping between nonlinear (or coupled system)
32
iteration and iteration strategy. Different iteration levels may have different linear solvers.
33
See test case LinearSolverNamespace for example.
34
o The linear system may be solved for the change of solution only i.e. system Ax=b is
35
replaced by system Adx=b-Ax0. This is activated by setting > Linear System Residual Mode = True <.
36
o Added strategies that ensure that even in case of divergence the almost best solution so far is
37
used. This is applicable to BiCGStabl mainly. Set > Linear System Robust = True <.
38
39
- Scanning Loops: each solver can have "Scanning Loops" that call the same solver repeatedly.
40
This can be used to scan over parameter space, for example frequency. Often the same iteration
41
could be achieved with steady state or time level iterations, but this gives additional flexibility.
42
The scanning loops introduce an additional variable "scan" that may be used similarly to "time"
43
in parametric dependencies. Look for test cases *Scan for examples.
44
45
- SlaveSolvers: each solve can have a number of slave solvers i.e. other solvers that are called
46
within the primary solver. They may be called at various slots associated with specific
47
DefaultRoutines in the solver. Currently the possible slave solver slots are:
48
Pre Solvers(n) = Integer
49
Nonlinear Pre Solvers(n) = Integer
50
Nonlinear Post Solvers(n) = Integer
51
Post Solvers(n) = Integer
52
Look for test cases SlaveSolverSlots* for example.
53
54
- Allow for computation of ConstraintModes i.e. modes resulting from unit nodal load.
55
These can be used as a basis in model reduction, possibly alongside with eigenmodes.
56
57
- Mortar FEs: the mortar projector may involve coordinate transformation from 3D to 2D
58
assuming either cylindrical/rotational, axial or radial interfaces.
59
60
- Sif parser: Optionally the sif parser can renumber all entities in the order they appear.
61
The idea is that it may be easier to copy-paste BCs, for example, between sif files.
62
This has not been taken into use but may be attractive to some users.
63
64
- Transient Restart: Enable restart in higher order time-stepping schemes with
65
> Transient Restart = Logical True < keyword in Simulation section. In effect the code will
66
save all the previous values needed also for higher order schemes. Note that this can result
67
to bloated output files. If this is not used the restart will always mean that the 1st timestep
68
uses 1st order time stepping scheme.
69
70
- Added a Predictor-Corrector time scheme for adaptive time stepping
71
method. It automatically adjusts the time steps based on stability
72
criteria and the requirement of the accuracy. An example is given in
73
"PredictorCorrector" test case.
74
75
- The user can choose to continue after all numerical/convergence errors by setting
76
"Global Abort Not Converged = Logical False". Alternatively, the user can specify
77
"Linear System Abort Not Converged = Logical False" in an individual solver section."
78
79
- Rotational normals: for rotating machines the vector fields should be continuous over the
80
rotating interface. This asks for optimal normal-tangential coordinate system. This is
81
achieved by setting > Rotational Normals = True < at the BC.
82
83
- Structured operations: Allow for midlayer in addition to top and bottom layers.
84
85
86
ElmerSolver library routines:
87
----------------------------
88
These are features that only affect those writing new code.
89
90
- Metainformation: GetVersion(), GetRevision() & GetCompilationDate() functions added
91
that can be used in writing meta information in the output files.
92
93
- The name of the MPI communicator in ElmerSolver was changed from MPI_COMM_WORLD
94
to ELMER_COMM_WORLD. The idea is that Elmer may be coupled with other codes (e.g. OpenFOAM)
95
using MPI such that both codes have their own internal communicator.
96
97
- Multithreading and vectorization
98
o Added OpenMP SIMD implementation of high-order H^1 elements for Line,
99
Triangle, Quadrilateral, Tetrahedral, Prismatic and Hexahedral elements.
100
o Added MultiColour Consistent (Logical) keyword for creating consistent mesh colorings
101
when requested (serial computation).
102
o GetCurrentElement and SetCurrentElement modified to give correct return values when
103
called from within OpenMP parallel regions.
104
o Added GetRealValues routine having the same functionality as GetReal but without having
105
to use an additional intermediate buffer.
106
107
- Keyword Optimization: the excessive retrieving of some keywords was reduced by
108
replacaing some commonly fetched keywords with hard-coded variables (e.g. DG and
109
Bubble flags). Also some operations where masked behind ListCheckPresentAnyBC
110
type of keywords.
111
112
- New more effective ListGet operations that are intended for element loops.
113
The ideas is that each keyword has a handle that helps to retrieve its value
114
with minimal effort. The speedup of the new routines is in the range from 1 to
115
20 depending on the type of evaluation. The new routines include:
116
o ListInitElementKeyword - initialize the keyword before element loop
117
o ListGetElementReal - retrieve real valued keyword in gaussian integration point
118
o ListGetElementRealVec - retrieve real valued keyword in all gaussian points
119
o ListGetElementInteger - retrieve integer valued keyword
120
o ListGetElementLogical - retrieve logical valued keyword
121
o ListGetElementString - retrieve string valued keyword
122
o ListCompareElementString - compare to given string and return result of comparison
123
124
- ListAddNew*: The keywords may now be conditionally added more economically by using
125
ListAddNewLogical etc. type of keywords that check whether the keyword is already defined.
126
The keyword value is only added if it does not exist. This can be used in setting default
127
values in _Init sections of the solvers.
128
129
- ChildSolver: A primary solver may create child solvers that share the same
130
active domain but may have different dofs. The intended use of this strategy is for
131
people working with various block solution techniques, for example.
132
The child solver may also inherit some keywords with an appropriate namespace.
133
134
- "Assert takes one LOGICAL mandatory argument, and stops the simulation if this argument
135
is false. E.g. CALL Assert(Mesh % NumberOfNodes > 0). The second and third arguments are
136
optional strings which specify the calling routine and the error message."
137
138
139
140
141
ElmerSolver Solver modules
142
---------------------------
143
These are improvements related to different solver modules, or completely new ones.
144
The Chapter for the documentaion of the solver in Elmer Models Manual is given if available.
145
Note that the documentation might not even include all the new features.
146
147
- MagnetoDynamics, Ch. 15
148
o Penalized Lagrangian formulation to remove null-space of the curl operator in statics.
149
Also in transient, but that is not theoretically justified. Useful sometimes with nonlinearities
150
and direct solver.
151
o Calculate nodal forces in harmonic case similarly airgap torque is calculated
152
o Enable calculation of harmonic average power P = E.sigma E/2. Calculate peak power by setting
153
> Calculate peak harmonic power = True <
154
o Real tensorial reluctivity. Enable with > Relative Reluctivity(3,3) < in material block.
155
Overrides related scalar linear keywords. Behaves additively .withHB curve.
156
o Enable saving of Joule losses also as nodal losses (in terms of Watts in SI units).
157
158
- Circuits and Dynamics (new), Ch. 16
159
o Model documentation
160
- Basic circuit equation functionality
161
- Massive, stranded and foil winding formulations
162
o Explicit coil resistance
163
o Output AC Power, DC resistance and AC resistance for circuit components
164
o Large number of new tests: massive, stranded and foil windings in 2D and 3D +
165
basic homogenization for stranded windings
166
167
- MagnetoDynamics2D, Ch. 18
168
o Proximity effect due to in plane magnetic field in foil windings
169
o Complex power computation for circuit components
170
o Lorentz force computation
171
172
- FourierLossSolver, Ch. 32
173
o A heavy facelift for the FourierLoss solver. It is now possible to use any number of loss components.
174
The visualization and export features have been improved etc.
175
176
- CoilSolver, Ch. 33
177
o Let user to explicitly define coilsolver normal
178
Coil Normal(3,1) = Real nx ny nz
179
180
- ElasticitySolver, Ch. 6
181
o Nonlinear elasticity solver can now handle incompressible neo-Hookean
182
materials via a mixed FE formulation
183
184
- ShellSolver (new), Ch, 7
185
o First version of a new solver for elastic shell equations based on a kinematic assumption of
186
Reissner-Naghdi type, see the section "Shell Equations of Linear Elasticity" in
187
Elmer Models Manual
188
o The solver is still under development and strain reduction operators needed in practice
189
have been worked out only for the lowest-order elements (a 3-node triangle or 4-node quadrilateral)
190
191
- RigidMeshMapper, Ch. 40
192
o Enable source term >Mesh Relax Source< to relaxation field solver, and
193
enable normalization to unity of this field.
194
195
- Elmer2OpenFoamIO (new), Ch. 52
196
o First version of a file based coupler from Elmer to OpenFOAM coupler.
197
The idea is that Elmer computes some field (i.e. heat source) that is written in
198
OpenFOAM format for a OpenFOAM solver to read. Currently only one-directional
199
operation is supported.
200
o Rudimentary documentation in Models Manual.
201
202
- VtuOutputSolver, Ch. 49
203
o The simple way of calling VtuOutputSolver is to set the >Post File< to have suffix .vtu.
204
Now this operation inherits all keywords from Simulation section with the prefix "vtu:",
205
for example >vtu: Save Elemental Fields = Logical False<.
206
o Enable vtu output using linear basis for DG fields.
207
o Enable mapping of geometry IDs such that the indexes in VTU format may be defined
208
in the sif file for each body and boundary.
209
o Enable user to save results only in the current mesh by specifying
210
> Save This Mesh Only = Logical True <
211
212
- SaveLine, Ch. 47
213
o Enable user given resolution rather than using the resolution obtained from the mesh faces.
214
Set > Polyline Intervals(n) = m1 m2 ... < to give number of subelements for each segment.
215
216
- CraigBamptonSolver (new)
217
o Solver can use eigen modes and constrained modes to perform model reduction.
218
o Undocumented solver.
219
220
- ScannedFieldSolver (new)
221
o Outputs the scanned fields with a prefix "Scan i" and
222
sums up the fields in the original field name
223
o Undocumented solver. (test: circuits2D_scan_harmonics)
224
225
- PartitionMeshSolver (new)
226
o Firsts steps for an internal ElmerSolver routine to perform partitioning.
227
o The idea is that it is easier to consider the constraints of physics with access to the whole case.
228
o Various geometric strategies implemented.
229
o Partitioning may be done in several groups enabling minimal communication between constacts, for example.
230
o Undocumented solver.
231
232
- ElementStats (new), Ch. 61
233
o Solver gives information on the mesh including element size, skewness, edge ratio.
234
o The results are reported in a range but also as a distrubution.
235
236
- DirectionSolver
237
o Computes body wise direction potentials for coils
238
o Undocumented solver
239
240
- RotMSolver
241
o Computes Rotation matrix based on direction potentials
242
o Undocumented solver
243
244
- WPotentialSolver
245
o Computes Wire Direction potential for coils based on rotation matrix and conductivity
246
o Undocumented solver
247
248
- ShellMultiSolver (new):
249
o Contributed solver provided by prof. Gupta.
250
This is placed under "modules/contrib" (as for contributed modules) as is compiled optionally.
251
o Documentation provided in the source directory.
252
253
254
ElmerGrid
255
---------
256
- Enable hybrid partitioning using radial splitting.
257
- Enable reading of mesh.names also in native Elmer format.
258
- Number of small fixes.
259
260
261
ElmerGUI
262
--------
263
- Add colors to the coundary condition editor if 'stateBcColors'.
264
265
266
Build system
267
------------
268
- Allow inclusion of contributed solvers under fem/src/modules/contrib
269
- Cleanup of redundant code
270
- Allow ElmerGrid to be compiled as a standalone application
271
- Allow splitting of modules in subdirectories, see fem/modules/SaveData for example.
272
- Enable QT5 support in ElmerGUI (cmake option WITH_QT5=TRUE)
273
- Added travis integration that builds and runs tests with `quick` label.
274
275
276
Tests
277
-----
278
- There are currently 533 tests which is a significant increase from the
279
403 of the previous release. This is without the Elmer/ICE specific tests.
280
281
282
Acknowledgements
283
----------------
284
Apart from the core Elmer team at CSC git log shows contributions from from
285
Mikko Byckling, Eelis Takala, Pavel Ponomarev, Erik Edelmann, Joe Todd, Cheng Gong,
286
Fabien Gillet-Chaulet, Laure Tavard, Erik Edelmann, Rupert Gladstone, Juris Vencels,
287
and Ondrej Meca. Additionally there are many ongoing deveopments in several branches
288
that have not been merged to this release, and are therefore not covered heere. Also
289
sometimes the code has been passed on by the original author by means other than the
290
git. This is the case, for example, with IDR(s) solver provided by Martin van Gijzen.
291
292
293