Documentation 6b54b78464
Loading...
Searching...
No Matches
CFEASolver.hpp
Go to the documentation of this file.
1/*!
2 * \file CFEASolver.hpp
3 * \brief Finite element solver for elasticity problems.
4 * \author R. Sanchez
5 * \version 8.5.0 "Harrier"
6 *
7 * SU2 Project Website: https://su2code.github.io
8 *
9 * The SU2 Project is maintained by the SU2 Foundation
10 * (http://su2foundation.org)
11 *
12 * Copyright 2012-2026, SU2 Contributors (cf. AUTHORS.md)
13 *
14 * SU2 is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
18 *
19 * SU2 is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with SU2. If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#pragma once
29
30#include "CFEASolverBase.hpp"
31
32/*!
33 * \class CFEASolver
34 * \ingroup Elasticity_Equations
35 * \brief Main class for defining a FEM solver for elastic structural problems.
36 * \author R. Sanchez.
37 */
38class CFEASolver : public CFEASolverBase {
39protected:
40
41 unsigned long omp_chunk_size; /*!< \brief Chunk size used in light point loops. */
42
43 su2double Total_CFEA; /*!< \brief Total FEA coefficient for all the boundaries. */
44
45 unsigned short *iElem_iDe = nullptr; /*!< \brief For DE cases, ID of the region considered for each iElem. */
46
47 su2double a_dt[9]; /*!< \brief Time integration constants. */
48
49 su2double Conv_Check[3]; /*!< \brief Current values for convergence check: UTOL, RTOL, ETOL. */
50 su2double FSI_Conv[2]; /*!< \brief Values to check the convergence of the FSI problem. */
51
52 unsigned long idxIncrement = 0; /*!< \brief Index of the current load increment */
53 su2double loadIncrement = 1.0; /*!< \brief Coefficient that determines the amount of load which is applied. */
54
55 su2double WAitken_Dyn; /*!< \brief Aitken's dynamic coefficient. */
56 su2double WAitken_Dyn_tn1; /*!< \brief Aitken's dynamic coefficient in the previous iteration. */
57
58 su2double PenaltyValue; /*!< \brief Penalty value to maintain total stiffness constant. */
59
60 su2double Total_OFRefGeom; /*!< \brief Total Objective Function: Reference Geometry. */
61 su2double Total_OFRefNode; /*!< \brief Total Objective Function: Reference Node. */
62 su2double Total_OFVolFrac; /*!< \brief Total Objective Function: Volume fraction (topology optimization). */
63 su2double Total_OFDiscreteness; /*!< \brief Total Objective Function: Discreteness (topology optimization). */
64 su2double Total_OFCompliance; /*!< \brief Total Objective Function: Compliance (topology optimization). */
65 su2double Total_OFStressPenalty; /*!< \brief Total Objective Function: Stress penalty. */
66
67 su2double Global_OFRefGeom; /*!< \brief Global Objective Function (added over time steps): Reference Geometry. */
68 su2double Global_OFRefNode; /*!< \brief Global Objective Function (added over time steps): Reference Node. */
69
70 su2double Total_ForwardGradient; /*!< \brief Vector of the total forward gradient. */
71
72 su2double ForceCoeff; /*!< \brief Load transfer coefficient . */
73 su2double RelaxCoeff; /*!< \brief Relaxation coefficient . */
74 su2double FSI_Residual; /*!< \brief FSI residual. */
75
76 CSysVector<su2double> TimeRes_Aux; /*!< \brief Auxiliary vector for adding mass and damping contributions to the residual. */
77 CSysVector<su2double> TimeRes; /*!< \brief Vector for adding mass and damping contributions to the residual */
78 CSysVector<su2double> LinSysReact; /*!< \brief Vector to store the residual before applying the BCs */
79
80#ifndef CODI_FORWARD_TYPE
81 CSysMatrix<su2mixedfloat> MassMatrix; /*!< \brief Sparse structure for storing the mass matrix. */
82#else
84#endif
85
86 CProperty** element_properties = nullptr; /*!< \brief Vector which stores the properties of each element */
87
88#ifdef HAVE_OMP
89 vector<GridColor<> > ElemColoring; /*!< \brief Element colors. */
90 bool LockStrategy = false; /*!< \brief Whether to use an OpenMP lock to guard updates of the Jacobian. */
91 vector<omp_lock_t> UpdateLocks; /*!< \brief Locks that may be used to protect accesses to CSysMatrix/Vector in element loops. */
92#else
93 array<DummyGridColor<>,1> ElemColoring; /*--- Behaves like a normal integer type. ---*/
94 static constexpr bool LockStrategy = false; /*--- Lock strategy is never needed for MPI-only. ---*/
96#endif
97
98 bool element_based; /*!< \brief Bool to determine if an element-based file is used. */
99 bool topol_filter_applied; /*!< \brief True if density filtering has been performed. */
100 bool initial_calc = true; /*!< \brief Becomes false after first call to Preprocessing. */
101 bool body_forces = false; /*!< \brief Whether any body force is active. */
102
103 /*!
104 * \brief Pointer to the heat solver nodes to access temperature for coupled simulations.
105 */
106 const CVariable* heat_nodes = nullptr;
107
108 /*!
109 * \brief The highest level in the variable hierarchy this solver can safely use,
110 * CVariable is the common denominator between the FEA and Mesh deformation variables.
111 */
112 CVariable* nodes = nullptr;
113
114 /*!
115 * \brief Return nodes to allow CSolver::base_nodes to be set.
116 */
117 inline CVariable* GetBaseClassPointerToNodes() override { return nodes; }
118
119 /*!
120 * \brief Get the element container index and number of nodes of a given VTK type.
121 * \param[in] VTK_Type - Type of element.
122 * \param[out] EL_KIND - Element container index.
123 * \param[out] nNodes - Number of nodes.
124 */
125 static void GetElemKindAndNumNodes(unsigned short VTK_Type, int& EL_KIND, unsigned short& nNodes) {
126 switch (VTK_Type) {
127 case TRIANGLE: nNodes = 3; EL_KIND = EL_TRIA; break;
128 case QUADRILATERAL: nNodes = 4; EL_KIND = EL_QUAD; break;
129 case TETRAHEDRON: nNodes = 4; EL_KIND = EL_TETRA; break;
130 case PYRAMID: nNodes = 5; EL_KIND = EL_PYRAM; break;
131 case PRISM: nNodes = 6; EL_KIND = EL_PRISM; break;
132 case HEXAHEDRON: nNodes = 8; EL_KIND = EL_HEXA; break;
133 default: assert(false); nNodes = 0; EL_KIND = -(1<<30); break;
134 }
135 }
136
137 /*!
138 * \brief Actions required to initialize the supporting variables for hybrid parallel execution.
139 * \param[in] geometry - Geometrical definition of the problem.
140 */
142
143 /*!
144 * \brief Set container of element properties.
145 * \param[in] geometry - Geometrical definition of the problem.
146 * \param[in] config - Definition of the particular problem.
147 */
148 void Set_ElementProperties(CGeometry *geometry, CConfig *config);
149
150 /*!
151 * \brief Set a reference geometry for .
152 * \param[in] geometry - Geometrical definition of the problem.
153 * \param[in] config - Definition of the particular problem.
154 */
155 void Set_ReferenceGeometry(CGeometry *geometry, CConfig *config);
156
157 /*!
158 * \brief Set a reference geometry for prestretched conditions.
159 * \param[in] geometry - Geometrical definition of the problem.
160 * \param[in] config - Definition of the particular problem.
161 */
162 void Set_Prestretch(CGeometry *geometry, CConfig *config);
163
164 /*!
165 * \brief Mitigation for an issue with Dirichlet boundary conditions and MPI,
166 * some ranks do not get enough of the markers to cover their halo points.
167 * This breaks the symmetry of the global matrix as columns are not fully eliminated.
168 * \param[in] geometry - Geometrical definition of the problem.
169 * \param[in] markers - List of essential BC markers.
170 */
171 void Set_VertexEliminationSchedule(CGeometry *geometry, const vector<unsigned short>& markers);
172
173 /*!
174 * \brief Compute constants for time integration.
175 * \param[in] config - Definition of the particular problem.
176 */
177 void Compute_IntegrationConstants(const CConfig *config);
178
179 /*!
180 * \brief Write the forward mode gradient to file.
181 * \param[in] config - Definition of the particular problem.
182 * \param[in] newFile - If true, start file from scratch, else append values.
183 * \param[in] fun - Value of the objective function.
184 * \param[in] fun_avg - Time-averaged value of the objective function.
185 * \param[in] der - Value of the derivative.
186 * \param[in] der_avg - Time-averaged value of the derivative.
187 */
188 void OutputForwardModeGradient(const CConfig *config,
189 bool newFile,
190 su2double fun,
191 su2double fun_avg,
192 su2double der,
193 su2double der_avg) const;
194
195 /*!
196 * \brief Compute the objective function for a reference geometry
197 * \param[in] geometry - Geometrical definition of the problem.
198 * \param[in] config - Definition of the particular problem.
199 */
200 void Compute_OFRefGeom(CGeometry *geometry, const CConfig *config);
201
202 /*!
203 * \brief Compute the objective function for a reference node
204 * \param[in] geometry - Geometrical definition of the problem.
205 * \param[in] config - Definition of the particular problem.
206 */
207 void Compute_OFRefNode(CGeometry *geometry, const CConfig *config);
208
209 /*!
210 * \brief Compute the objective function for a volume fraction
211 * \param[in] geometry - Geometrical definition of the problem.
212 * \param[in] config - Definition of the particular problem.
213 */
214 void Compute_OFVolFrac(CGeometry *geometry, const CConfig *config);
215
216 /*!
217 * \brief Compute the compliance objective function
218 * \param[in] geometry - Geometrical definition of the problem.
219 * \param[in] config - Definition of the particular problem.
220 */
221 void Compute_OFCompliance(CGeometry *geometry, const CConfig *config);
222
223public:
224 /*!
225 * \brief Constructor of the class.
226 */
228
229 /*!
230 * \overload
231 * \param[in] geometry - Geometrical definition of the problem.
232 * \param[in] config - Definition of the particular problem.
233 */
234 CFEASolver(CGeometry *geometry, CConfig *config);
235
236 /*!
237 * \brief Destructor of the class.
238 */
239 ~CFEASolver(void) override;
240
241 /*!
242 * \brief Set residuals to zero.
243 * \param[in] geometry - Geometrical definition of the problem.
244 * \param[in] solver_container - Container vector with all the solutions.
245 * \param[in] config - Definition of the particular problem.
246 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
247 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
248 */
249 void Preprocessing(CGeometry *geometry,
250 CSolver **solver_container,
251 CConfig *config,
252 CNumerics **numerics,
253 unsigned short iMesh,
254 unsigned long Iteration,
255 unsigned short RunTime_EqSystem,
256 bool Output) override;
257
258 /*!
259 * \brief Set the initial condition for the FEM structural problem.
260 * \param[in] geometry - Geometrical definition of the problem.
261 * \param[in] solver_container - Container with all the solutions.
262 * \param[in] config - Definition of the particular problem.
263 * \param[in] ExtIter - External iteration.
264 */
265 void SetInitialCondition(CGeometry **geometry,
266 CSolver ***solver_container,
267 CConfig *config,
268 unsigned long TimeIter) override;
269
270 /*!
271 * \brief Get the value of the reference coordinate to set on the element structure.
272 * \param[in] geometry - Geometrical definition of the problem.
273 * \param[in] indexNode - Index of the node.
274 * \param[in] iDim - Dimension required.
275 */
276 inline virtual su2double Get_ValCoord(const CGeometry *geometry,
277 unsigned long indexNode,
278 unsigned short iDim) const {
279 return geometry->nodes->GetCoord(indexNode, iDim);
280 }
281
282 /*!
283 * \brief Compute the stiffness matrix of the problem.
284 * \param[in] geometry - Geometrical definition of the problem.
285 * \param[in] numerics - Description of the numerical method.
286 * \param[in] config - Definition of the particular problem.
287 */
288 void Compute_StiffMatrix(CGeometry *geometry,
289 CNumerics **numerics,
290 const CConfig *config) final;
291
292 /*!
293 * \brief Compute the stiffness matrix of the problem and the nodal stress terms at the same time.
294 * \note This is more efficient for full Newton Raphson.
295 * \param[in] geometry - Geometrical definition of the problem.
296 * \param[in] numerics - Description of the numerical method.
297 * \param[in] config - Definition of the particular problem.
298 */
300 CNumerics **numerics,
301 const CConfig *config) final;
302
303 /*!
304 * \brief Compute the mass matrix of the problem.
305 * \param[in] geometry - Geometrical definition of the problem.
306 * \param[in] numerics - Description of the numerical method.
307 * \param[in] config - Definition of the particular problem.
308 */
309 void Compute_MassMatrix(const CGeometry *geometry,
310 CNumerics **numerics,
311 const CConfig *config) final;
312
313 /*!
314 * \brief Compute the mass residual of the problem.
315 * \param[in] geometry - Geometrical definition of the problem.
316 * \param[in] numerics - Description of the numerical method.
317 * \param[in] config - Definition of the particular problem.
318 */
319 void Compute_MassRes(const CGeometry *geometry,
320 CNumerics **numerics,
321 const CConfig *config) final;
322
323 /*!
324 * \brief Compute the nodal stress terms and add them to the residual.
325 * \param[in] geometry - Geometrical definition of the problem.
326 * \param[in] numerics - Description of the numerical method.
327 * \param[in] config - Definition of the particular problem.
328 */
329 void Compute_NodalStressRes(CGeometry *geometry,
330 CNumerics **numerics,
331 const CConfig *config) final;
332
333 /*!
334 * \brief Compute the stress at the nodes for output purposes.
335 * \param[in] geometry - Geometrical definition of the problem.
336 * \param[in] numerics - Description of the numerical method.
337 * \param[in] config - Definition of the particular problem.
338 */
339 void Compute_NodalStress(CGeometry *geometry,
340 CNumerics **numerics,
341 const CConfig *config);
342
343 /*!
344 * \brief Compute the inertial loads.
345 * \param[in] geometry - Geometrical definition of the problem.
346 * \param[in] numerics - Description of the numerical method.
347 * \param[in] config - Definition of the particular problem.
348 */
349 void Compute_BodyForces(CGeometry *geometry,
350 CNumerics **numerics,
351 const CConfig *config) final;
352
353 /*!
354 * \brief Clamped boundary conditions.
355 * \param[in] geometry - Geometrical definition of the problem.
356 * \param[in] config - Definition of the particular problem.
357 * \param[in] val_marker - Surface marker where the boundary condition is applied.
358 */
359 void BC_Clamped(CGeometry *geometry,
360 const CConfig *config,
361 unsigned short val_marker) final;
362
363 /*!
364 * \brief Enforce the solution to be 0 in the clamped nodes - Avoids accumulation of numerical error.
365 * \param[in] geometry - Geometrical definition of the problem.
366 * \param[in] config - Definition of the particular problem.
367 * \param[in] val_marker - Surface marker where the boundary condition is applied.
368 */
369 void BC_Clamped_Post(CGeometry *geometry,
370 const CConfig *config,
371 unsigned short val_marker) final;
372
373 /*!
374 * \brief Symmetry boundary conditions.
375 * \param[in] geometry - Geometrical definition of the problem.
376 * \param[in] config - Definition of the particular problem.
377 * \param[in] val_marker - Surface marker where the boundary condition is applied.
378 */
379 void BC_Sym_Plane(CGeometry *geometry,
380 const CConfig *config,
381 unsigned short val_marker) final;
382
383 /*!
384 * \brief A virtual member.
385 * \param[in] geometry - Geometrical definition of the problem.
386 * \param[in] config - Definition of the particular problem.
387 * \param[in] val_marker - Surface marker where the boundary condition is applied.
388 */
389 void BC_DispDir(CGeometry *geometry,
390 const CConfig *config,
391 unsigned short val_marker) final;
392
393 /*!
394 * \brief Impose a load boundary condition normal to the boundary.
395 * \param[in] geometry - Geometrical definition of the problem.
396 * \param[in] numerics - Description of the numerical method.
397 * \param[in] config - Definition of the particular problem.
398 * \param[in] val_marker - Surface marker where the boundary condition is applied.
399 */
400 void BC_Normal_Load(CGeometry *geometry,
401 const CConfig *config,
402 unsigned short val_marker) final;
403
404 /*!
405 * \brief Impose a load boundary condition in cartesian coordinates.
406 * \param[in] geometry - Geometrical definition of the problem.
407 * \param[in] config - Definition of the particular problem.
408 * \param[in] val_marker - Surface marker where the boundary condition is applied.
409 */
410 void BC_Dir_Load(CGeometry *geometry,
411 const CConfig *config,
412 unsigned short val_marker) final;
413
414 /*!
415 * \brief Impose a sine-wave load boundary condition in cartesian coordinates.
416 * \param[in] geometry - Geometrical definition of the problem.
417 * \param[in] config - Definition of the particular problem.
418 * \param[in] val_marker - Surface marker where the boundary condition is applied.
419 */
420 inline void BC_Sine_Load(CGeometry *geometry,
421 const CConfig *config,
422 unsigned short val_marker) final { }
423
424 /*!
425 * \brief Impose a damping load.
426 * \param[in] geometry - Geometrical definition of the problem.
427 * \param[in] config - Definition of the particular problem.
428 * \param[in] val_marker - Surface marker where the boundary condition is applied.
429 */
430 void BC_Damper(CGeometry *geometry,
431 const CConfig *config,
432 unsigned short val_marker) final;
433
434 /*!
435 * \brief Iterate using an implicit Newmark solver.
436 * \param[in] geometry - Geometrical definition of the problem.
437 * \param[in] numerics - Numerical methods.
438 * \param[in] config - Definition of the particular problem.
439 */
440 void ImplicitNewmark_Iteration(const CGeometry *geometry,
441 CNumerics **numerics,
442 const CConfig *config) final;
443
444 /*!
445 * \brief Update the solution using an implicit Newmark solver.
446 * \param[in] geometry - Geometrical definition of the problem.
447 * \param[in] config - Definition of the particular problem.
448 */
449 void ImplicitNewmark_Update(const CGeometry *geometry, const CConfig *config) final;
450
451 /*!
452 * \brief A virtual member.
453 * \param[in] geometry - Geometrical definition of the problem.
454 * \param[in] config - Definition of the particular problem.
455 */
456 void ImplicitNewmark_Relaxation(const CGeometry *geometry, const CConfig *config) final;
457
458 /*!
459 * \brief Iterate using an implicit Generalized Alpha solver.
460 * \param[in] geometry - Geometrical definition of the problem.
461 * \param[in] numerics - Numerical methods.
462 * \param[in] config - Definition of the particular problem.
463 */
464 void GeneralizedAlpha_Iteration(const CGeometry *geometry,
465 CNumerics **numerics,
466 const CConfig *config) final;
467
468 /*!
469 * \brief Update the solution using an implicit Generalized Alpha solver.
470 * \param[in] geometry - Geometrical definition of the problem.
471 * \param[in] config - Definition of the particular problem.
472 */
473 void GeneralizedAlpha_UpdateDisp(const CGeometry *geometry, const CConfig *config) final;
474
475 /*!
476 * \brief Update the solution using an implicit Generalized Alpha solver.
477 * \param[in] geometry - Geometrical definition of the problem.
478 * \param[in] config - Definition of the particular problem.
479 */
480 void GeneralizedAlpha_UpdateSolution(const CGeometry *geometry, const CConfig *config) final;
481
482 /*!
483 * \brief Update the solution using an implicit Generalized Alpha solver.
484 * \param[in] geometry - Geometrical definition of the problem.
485 * \param[in] config - Definition of the particular problem.
486 */
487 void GeneralizedAlpha_UpdateLoads(const CGeometry *geometry, const CConfig *config) final;
488
489 /*!
490 * \brief Postprocessing.
491 * \param[in] geometry - Geometrical definition of the problem.
492 * \param[in] config - Definition of the particular problem.
493 * \param[in] numerics - Implementation of numerical method.
494 * \param[in] of_comp_mode - Mode to compute just the objective function.
495 */
496 void Postprocessing(CGeometry *geometry, CConfig *config, CNumerics **numerics, bool of_comp_mode) final;
497
498 /*!
499 * \brief Routine to solve the Jacobian-Residual linearized system.
500 * \param[in] geometry - Geometrical definition of the problem.
501 * \param[in] solver_container - Container vector with the solutions.
502 * \param[in] config - Definition of the particular problem.
503 */
504 void Solve_System(CGeometry *geometry, CConfig *config) final;
505
506 /*!
507 * \brief Get the residual for FEM structural analysis.
508 * \param[in] val_var - Index of the variable.
509 * \return Value of the residual for the variable in the position <i>val_var</i>.
510 */
511 inline su2double GetRes_FEM(unsigned short val_var) const final { return Conv_Check[val_var]; }
512
513 /*!
514 * \brief Provide the maximum Von Mises Stress for structural analysis.
515 */
516 inline su2double GetTotal_CFEA(void) const final { return Total_CFEA; }
517
518 /*!
519 * \brief Retrieve the value of the objective function for a reference geometry
520 */
521 inline su2double GetTotal_OFRefGeom(void) const final { return Total_OFRefGeom; }
522
523 /*!
524 * \brief Retrieve the value of the objective function for a reference node
525 */
526 inline su2double GetTotal_OFRefNode(void) const final { return Total_OFRefNode; }
527
528 /*!
529 * \brief Retrieve the value of the volume fraction objective function
530 */
531 inline su2double GetTotal_OFVolFrac(void) const final { return Total_OFVolFrac; }
532
533 /*!
534 * \brief Retrieve the value of the discreteness objective function
535 */
536 inline su2double GetTotal_OFDiscreteness(void) const final { return Total_OFDiscreteness; }
537
538 /*!
539 * \brief Retrieve the value of the structural compliance objective function
540 */
541 inline su2double GetTotal_OFCompliance(void) const final { return Total_OFCompliance; }
542
543 /*!
544 * \brief Retrieve the value of the stress penalty objective function
545 */
546 inline su2double GetTotal_OFStressPenalty(void) const final { return Total_OFStressPenalty; }
547
548 /*!
549 * \brief Compute the objective function.
550 * \param[in] config - Definition of the problem.
551 * \param[in] solver - Container vector with all the solutions.
552 */
553 void Evaluate_ObjFunc(const CConfig *config, CSolver** solver) final {
554 Total_ComboObj = 0.0;
555 switch (config->GetKind_ObjFunc()) {
558 break;
559 case REFERENCE_NODE:
561 break;
562 case TOPOL_COMPLIANCE:
564 break;
565 case VOLUME_FRACTION:
567 break;
570 break;
571 case STRESS_PENALTY:
573 break;
574 case CUSTOM_OBJFUNC:
576 break;
577 }
578 if (config->GetWeakly_Coupled_Heat()) {
579 solver[HEAT_SOL]->Evaluate_ObjFunc(config, solver);
580 Total_ComboObj += solver[HEAT_SOL]->GetTotal_ComboObj();
581 }
582 }
583
584 /*!
585 * \brief Determines whether there is an element-based file or not.
586 * \return Bool that defines whether the solution has an element-based file or not
587 */
588 inline bool IsElementBased(void) const final { return element_based; }
589
590 /*!
591 * \brief Set the value of the FEA coefficient.
592 * \param[in] val_cfea - Value of the FEA coefficient.
593 */
594 inline void SetTotal_CFEA(su2double val_cfea) final { Total_CFEA = val_cfea; }
595
596 /*!
597 * \brief Set the value of the objective function for a reference geometry.
598 * \param[in] val_ofrefgeom - Value of the objective function for a reference geometry.
599 */
600 inline void SetTotal_OFRefGeom(su2double val_ofrefgeom) final { Total_OFRefGeom = val_ofrefgeom; }
601
602 /*!
603 * \brief Set the value of the objective function for a reference node.
604 * \param[in] val_ofrefnode - Value of the objective function for a reference node.
605 */
606 inline void SetTotal_OFRefNode(su2double val_ofrefnode) final { Total_OFRefNode = val_ofrefnode; }
607
608 /*!
609 * \brief Set the value of the force coefficient history for the history file.
610 * \param[in] iBGS - Number of BGS iteration.
611 * \param[in] val_forcecoeff - Value of the force coefficient.
612 */
613 inline void SetForceCoeff(su2double val_forcecoeff) final { ForceCoeff = val_forcecoeff; }
614
615 /*!
616 * \brief Set the value of the FSI residual for the history file.
617 * \param[in] iBGS - Number of BGS iteration.
618 * \param[in] val_FSI_residual - Value of the residual.
619 */
620 inline void SetFSI_Residual(su2double val_FSI_residual) final { FSI_Residual = val_FSI_residual; }
621
622 /*!
623 * \brief Set the value of the FSI relaxation factor.
624 * \param[in] iBGS - Number of BGS iteration.
625 * \param[in] val_relaxcoeff - Value of the relaxation factor.
626 */
627 inline void SetRelaxCoeff(su2double val_relaxcoeff) final { RelaxCoeff = val_relaxcoeff; }
628
629 /*!
630 * \brief Get the value of the force coefficient history for the history file.
631 * \param[out] val_forcecoeff_history - Value of the force coefficient.
632 */
633 inline su2double GetForceCoeff(void) const final { return ForceCoeff; }
634
635 /*!
636 * \brief Get the value of the relaxation coefficient history for the history file.
637 * \param[out] val_relaxcoeff_history - Value of the relaxation coefficient.
638 */
639 inline su2double GetRelaxCoeff(void) const final { return RelaxCoeff; }
640
641 /*!
642 * \brief Get the value of the FSI residual for the history file.
643 * \param[out] val_FSI_residual - Value of the residual.
644 */
645 inline su2double GetFSI_Residual(void) const final { return FSI_Residual; }
646
647 /*!
648 * \brief Predictor for structural displacements based on previous iterations
649 * \param[in] geometry - Geometrical definition of the problem.
650 * \param[in] config - Configuration of the problem.
651 */
652 void PredictStruct_Displacement(CGeometry *geometry, const CConfig *config) final;
653
654 /*!
655 * \brief Computation of Aitken's coefficient.
656 * \param[in] geometry - Geometrical definition of the problem.
657 * \param[in] config - Definition of the particular problem.
658 * \param[in] iOuterIter - Current outer iteration.
659 */
661 const CConfig *config,
662 unsigned long iOuterIter) final;
663
664 /*!
665 * \brief Aitken's relaxation of the solution.
666 * \param[in] geometry - Geometrical definition of the problem.
667 * \param[in] config - Definition of the particular problem.
668 */
669 void SetAitken_Relaxation(CGeometry *geometry, const CConfig *config) final;
670
671 /*!
672 * \brief Compute the penalty due to the stiffness increase
673 * \param[in] geometry - Geometrical definition of the problem.
674 * \param[in] numerics - Description of the numerical method.
675 * \param[in] config - Definition of the particular problem.
676 */
677 void Stiffness_Penalty(CGeometry *geometry,
678 CNumerics **numerics_container,
679 CConfig *config);
680
681 /*!
682 * \brief Get the value of the FSI convergence.
683 * \param[in] Set value of interest: 0 - Initial value, 1 - Current value.
684 */
685 inline void SetFSI_ConvValue(unsigned short val_index, su2double val_criteria) final { FSI_Conv[val_index] = val_criteria; }
686
687 /*!
688 * \brief Get the value of the FSI convergence.
689 * \param[in] Value of interest: 0 - Initial value, 1 - Current value.
690 * \return Values to compare
691 */
692 inline su2double GetFSI_ConvValue(unsigned short val_index) const final { return FSI_Conv[val_index]; }
693
694 /*!
695 * \brief Store the value of the last Aitken relaxation factor in the current time step.
696 */
698
699 /*!
700 * \brief Set the value of the load increment for nonlinear structural analysis
701 * \param[in] Value of the coefficient
702 */
703 inline void SetLoad_Increment(unsigned long iInc, su2double loadInc) final {
704 idxIncrement = iInc;
705 loadIncrement = loadInc;
706 }
707
708 /*!
709 * \brief Get the value of the load increment for nonlinear structural analysis
710 * \param[in] Value of the coefficient
711 */
712 inline su2double GetLoad_Increment(void) const final { return loadIncrement; }
713
714 /*!
715 * \brief Retrieve the iDe index for DE computations
716 * \param[in] iElem - element parameter.
717 * \param[out] iElem_iDe - ID of the Dielectric Elastomer region.
718 */
719 inline unsigned short Get_iElem_iDe(unsigned long iElem) const final { return iElem_iDe[iElem]; }
720
721 /*!
722 * \brief Load a solution from a restart file.
723 * \param[in] geometry - Geometrical definition of the problem.
724 * \param[in] solver - Container vector with all of the solvers.
725 * \param[in] config - Definition of the particular problem.
726 * \param[in] val_iter - Current external iteration number.
727 * \param[in] val_update_geo - Flag for updating coords and grid velocity.
728 */
729 void LoadRestart(CGeometry **geometry,
730 CSolver ***solver,
731 CConfig *config,
732 int val_iter,
733 bool val_update_geo) override;
734
735 /*!
736 * \brief Get multiplier for loads.
737 * \param[in] CurrentTime - Current time step.
738 * \param[in] config - Definition of the particular problem.
739 */
741 su2double RampTime,
742 const CConfig *config) final;
743
744 /*!
745 * \brief A virtual member.
746 * \param[in] geometry - Geometrical definition of the problem.
747 * \param[in] config - Definition of the particular problem.
748 * \param[in] reset - Not used by this class ATM.
749 */
750 void RegisterVariables(CGeometry *geometry,
751 CConfig *config,
752 bool reset) override;
753
754 /*!
755 * \brief A virtual member.
756 * \param[in] geometry - Geometrical definition of the problem.
757 * \param[in] config - Definition of the particular problem.
758 */
759 void ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config) override;
760
761 /*!
762 * \brief Filter the density field for topology optimization applications
763 * \param[in] geometry - Geometrical definition of the problem.
764 * \param[in] config - Definition of the particular problem.
765 */
766 void FilterElementDensities(CGeometry *geometry, const CConfig *config);
767
768};
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Base class for FEM elasticity solvers.
Definition CFEASolverBase.hpp:41
Main class for defining a FEM solver for elastic structural problems.
Definition CFEASolver.hpp:38
void BC_Sine_Load(CGeometry *geometry, const CConfig *config, unsigned short val_marker) final
Impose a sine-wave load boundary condition in cartesian coordinates.
Definition CFEASolver.hpp:420
CSysVector< su2double > TimeRes
Vector for adding mass and damping contributions to the residual.
Definition CFEASolver.hpp:77
su2double GetTotal_OFStressPenalty(void) const final
Retrieve the value of the stress penalty objective function.
Definition CFEASolver.hpp:546
void SetTotal_CFEA(su2double val_cfea) final
Set the value of the FEA coefficient.
Definition CFEASolver.hpp:594
void GeneralizedAlpha_UpdateDisp(const CGeometry *geometry, const CConfig *config) final
Update the solution using an implicit Generalized Alpha solver.
Definition CFEASolver.cpp:2480
su2double Compute_LoadCoefficient(su2double CurrentTime, su2double RampTime, const CConfig *config) final
Get multiplier for loads.
Definition CFEASolver.cpp:2104
su2double GetTotal_CFEA(void) const final
Provide the maximum Von Mises Stress for structural analysis.
Definition CFEASolver.hpp:516
su2double Total_CFEA
Total FEA coefficient for all the boundaries.
Definition CFEASolver.hpp:43
void ComputeAitken_Coefficient(CGeometry *geometry, const CConfig *config, unsigned long iOuterIter) final
Computation of Aitken's coefficient.
Definition CFEASolver.cpp:2645
su2double GetLoad_Increment(void) const final
Get the value of the load increment for nonlinear structural analysis.
Definition CFEASolver.hpp:712
void Stiffness_Penalty(CGeometry *geometry, CNumerics **numerics_container, CConfig *config)
Compute the penalty due to the stiffness increase.
Definition CFEASolver.cpp:3061
void Compute_OFRefGeom(CGeometry *geometry, const CConfig *config)
Compute the objective function for a reference geometry.
Definition CFEASolver.cpp:2848
void Compute_BodyForces(CGeometry *geometry, CNumerics **numerics, const CConfig *config) final
Compute the inertial loads.
Definition CFEASolver.cpp:1449
void Compute_MassMatrix(const CGeometry *geometry, CNumerics **numerics, const CConfig *config) final
Compute the mass matrix of the problem.
Definition CFEASolver.cpp:897
void BC_Damper(CGeometry *geometry, const CConfig *config, unsigned short val_marker) final
Impose a damping load.
Definition CFEASolver.cpp:2046
su2double GetTotal_OFDiscreteness(void) const final
Retrieve the value of the discreteness objective function.
Definition CFEASolver.hpp:536
void ImplicitNewmark_Iteration(const CGeometry *geometry, CNumerics **numerics, const CConfig *config) final
Iterate using an implicit Newmark solver.
Definition CFEASolver.cpp:2178
su2double Total_ForwardGradient
Vector of the total forward gradient.
Definition CFEASolver.hpp:70
void Set_ElementProperties(CGeometry *geometry, CConfig *config)
Set container of element properties.
Definition CFEASolver.cpp:289
CSysVector< su2double > TimeRes_Aux
Auxiliary vector for adding mass and damping contributions to the residual.
Definition CFEASolver.hpp:76
void Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, CNumerics **numerics, unsigned short iMesh, unsigned long Iteration, unsigned short RunTime_EqSystem, bool Output) override
Set residuals to zero.
Definition CFEASolver.cpp:562
bool element_based
Bool to determine if an element-based file is used.
Definition CFEASolver.hpp:98
void ImplicitNewmark_Update(const CGeometry *geometry, const CConfig *config) final
Update the solution using an implicit Newmark solver.
Definition CFEASolver.cpp:2265
unsigned short * iElem_iDe
For DE cases, ID of the region considered for each iElem.
Definition CFEASolver.hpp:45
su2double Total_OFRefNode
Total Objective Function: Reference Node.
Definition CFEASolver.hpp:61
void Compute_StiffMatrix_NodalStressRes(CGeometry *geometry, CNumerics **numerics, const CConfig *config) final
Compute the stiffness matrix of the problem and the nodal stress terms at the same time.
Definition CFEASolver.cpp:750
su2double loadIncrement
Coefficient that determines the amount of load which is applied.
Definition CFEASolver.hpp:53
void Compute_StiffMatrix(CGeometry *geometry, CNumerics **numerics, const CConfig *config) final
Compute the stiffness matrix of the problem.
Definition CFEASolver.cpp:654
su2double GetTotal_OFRefNode(void) const final
Retrieve the value of the objective function for a reference node.
Definition CFEASolver.hpp:526
void Compute_OFCompliance(CGeometry *geometry, const CConfig *config)
Compute the compliance objective function.
Definition CFEASolver.cpp:3008
void Compute_OFVolFrac(CGeometry *geometry, const CConfig *config)
Compute the objective function for a volume fraction.
Definition CFEASolver.cpp:2965
static constexpr bool LockStrategy
Definition CFEASolver.hpp:94
su2double GetFSI_Residual(void) const final
Get the value of the FSI residual for the history file.
Definition CFEASolver.hpp:645
void BC_Dir_Load(CGeometry *geometry, const CConfig *config, unsigned short val_marker) final
Impose a load boundary condition in cartesian coordinates.
Definition CFEASolver.cpp:1984
bool initial_calc
Becomes false after first call to Preprocessing.
Definition CFEASolver.hpp:100
void BC_Normal_Load(CGeometry *geometry, const CConfig *config, unsigned short val_marker) final
Impose a load boundary condition normal to the boundary.
Definition CFEASolver.cpp:1889
void ImplicitNewmark_Relaxation(const CGeometry *geometry, const CConfig *config) final
A virtual member.
Definition CFEASolver.cpp:2316
array< DummyGridColor<>, 1 > ElemColoring
Definition CFEASolver.hpp:93
su2double RelaxCoeff
Relaxation coefficient .
Definition CFEASolver.hpp:73
void SetAitken_Relaxation(CGeometry *geometry, const CConfig *config) final
Aitken's relaxation of the solution.
Definition CFEASolver.cpp:2736
bool IsElementBased(void) const final
Determines whether there is an element-based file or not.
Definition CFEASolver.hpp:588
su2double Total_OFStressPenalty
Total Objective Function: Stress penalty.
Definition CFEASolver.hpp:65
su2double Global_OFRefNode
Global Objective Function (added over time steps): Reference Node.
Definition CFEASolver.hpp:68
void RegisterVariables(CGeometry *geometry, CConfig *config, bool reset) override
A virtual member.
Definition CFEASolver.cpp:3245
su2double Total_OFVolFrac
Total Objective Function: Volume fraction (topology optimization).
Definition CFEASolver.hpp:62
static void GetElemKindAndNumNodes(unsigned short VTK_Type, int &EL_KIND, unsigned short &nNodes)
Get the element container index and number of nodes of a given VTK type.
Definition CFEASolver.hpp:125
void Solve_System(CGeometry *geometry, CConfig *config) final
Routine to solve the Jacobian-Residual linearized system.
Definition CFEASolver.cpp:2558
su2double Total_OFRefGeom
Total Objective Function: Reference Geometry.
Definition CFEASolver.hpp:60
void ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config) override
A virtual member.
Definition CFEASolver.cpp:3257
void Compute_MassRes(const CGeometry *geometry, CNumerics **numerics, const CConfig *config) final
Compute the mass residual of the problem.
Definition CFEASolver.cpp:989
void Compute_IntegrationConstants(const CConfig *config)
Compute constants for time integration.
Definition CFEASolver.cpp:1533
void GeneralizedAlpha_Iteration(const CGeometry *geometry, CNumerics **numerics, const CConfig *config) final
Iterate using an implicit Generalized Alpha solver.
Definition CFEASolver.cpp:2368
void Compute_OFRefNode(CGeometry *geometry, const CConfig *config)
Compute the objective function for a reference node.
Definition CFEASolver.cpp:2921
void SetTotal_OFRefGeom(su2double val_ofrefgeom) final
Set the value of the objective function for a reference geometry.
Definition CFEASolver.hpp:600
su2double GetFSI_ConvValue(unsigned short val_index) const final
Get the value of the FSI convergence.
Definition CFEASolver.hpp:692
su2double Global_OFRefGeom
Global Objective Function (added over time steps): Reference Geometry.
Definition CFEASolver.hpp:67
su2double GetTotal_OFCompliance(void) const final
Retrieve the value of the structural compliance objective function.
Definition CFEASolver.hpp:541
su2double GetRelaxCoeff(void) const final
Get the value of the relaxation coefficient history for the history file.
Definition CFEASolver.hpp:639
void FilterElementDensities(CGeometry *geometry, const CConfig *config)
Filter the density field for topology optimization applications.
Definition CFEASolver.cpp:3303
su2double GetForceCoeff(void) const final
Get the value of the force coefficient history for the history file.
Definition CFEASolver.hpp:633
void SetWAitken_Dyn_tn1() final
Store the value of the last Aitken relaxation factor in the current time step.
Definition CFEASolver.hpp:697
void SetRelaxCoeff(su2double val_relaxcoeff) final
Set the value of the FSI relaxation factor.
Definition CFEASolver.hpp:627
su2double FSI_Conv[2]
Values to check the convergence of the FSI problem.
Definition CFEASolver.hpp:50
void SetTotal_OFRefNode(su2double val_ofrefnode) final
Set the value of the objective function for a reference node.
Definition CFEASolver.hpp:606
CProperty ** element_properties
Vector which stores the properties of each element.
Definition CFEASolver.hpp:86
void GeneralizedAlpha_UpdateLoads(const CGeometry *geometry, const CConfig *config) final
Update the solution using an implicit Generalized Alpha solver.
Definition CFEASolver.cpp:2549
su2double WAitken_Dyn
Aitken's dynamic coefficient.
Definition CFEASolver.hpp:55
void Set_Prestretch(CGeometry *geometry, CConfig *config)
Set a reference geometry for prestretched conditions.
Definition CFEASolver.cpp:396
bool topol_filter_applied
True if density filtering has been performed.
Definition CFEASolver.hpp:99
~CFEASolver(void) override
Destructor of the class.
Definition CFEASolver.cpp:224
void OutputForwardModeGradient(const CConfig *config, bool newFile, su2double fun, su2double fun_avg, su2double der, su2double der_avg) const
Write the forward mode gradient to file.
Definition CFEASolver.cpp:2777
su2double Total_OFCompliance
Total Objective Function: Compliance (topology optimization).
Definition CFEASolver.hpp:64
su2double ForceCoeff
Load transfer coefficient .
Definition CFEASolver.hpp:72
void SetFSI_Residual(su2double val_FSI_residual) final
Set the value of the FSI residual for the history file.
Definition CFEASolver.hpp:620
void Set_VertexEliminationSchedule(CGeometry *geometry, const vector< unsigned short > &markers)
Mitigation for an issue with Dirichlet boundary conditions and MPI, some ranks do not get enough of t...
Definition CFEASolver.cpp:545
void SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) override
Set the initial condition for the FEM structural problem.
Definition CFEASolver.cpp:624
CVariable * nodes
The highest level in the variable hierarchy this solver can safely use, CVariable is the common denom...
Definition CFEASolver.hpp:112
void SetForceCoeff(su2double val_forcecoeff) final
Set the value of the force coefficient history for the history file.
Definition CFEASolver.hpp:613
su2double a_dt[9]
Time integration constants.
Definition CFEASolver.hpp:47
CVariable * GetBaseClassPointerToNodes() override
Return nodes to allow CSolver::base_nodes to be set.
Definition CFEASolver.hpp:117
void Postprocessing(CGeometry *geometry, CConfig *config, CNumerics **numerics, bool of_comp_mode) final
Postprocessing.
Definition CFEASolver.cpp:1781
CSysMatrix< su2mixedfloat > MassMatrix
Sparse structure for storing the mass matrix.
Definition CFEASolver.hpp:81
void HybridParallelInitialization(CGeometry *geometry)
Actions required to initialize the supporting variables for hybrid parallel execution.
Definition CFEASolver.cpp:243
void SetFSI_ConvValue(unsigned short val_index, su2double val_criteria) final
Get the value of the FSI convergence.
Definition CFEASolver.hpp:685
su2double FSI_Residual
FSI residual.
Definition CFEASolver.hpp:74
void Compute_NodalStress(CGeometry *geometry, CNumerics **numerics, const CConfig *config)
Compute the stress at the nodes for output purposes.
Definition CFEASolver.cpp:1168
void LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) override
Load a solution from a restart file.
Definition CFEASolver.cpp:3147
unsigned short Get_iElem_iDe(unsigned long iElem) const final
Retrieve the iDe index for DE computations.
Definition CFEASolver.hpp:719
su2double Conv_Check[3]
Current values for convergence check: UTOL, RTOL, ETOL.
Definition CFEASolver.hpp:49
su2double Total_OFDiscreteness
Total Objective Function: Discreteness (topology optimization).
Definition CFEASolver.hpp:63
unsigned long idxIncrement
Index of the current load increment.
Definition CFEASolver.hpp:52
su2double WAitken_Dyn_tn1
Aitken's dynamic coefficient in the previous iteration.
Definition CFEASolver.hpp:56
void Evaluate_ObjFunc(const CConfig *config, CSolver **solver) final
Compute the objective function.
Definition CFEASolver.hpp:553
su2double GetRes_FEM(unsigned short val_var) const final
Get the residual for FEM structural analysis.
Definition CFEASolver.hpp:511
virtual su2double Get_ValCoord(const CGeometry *geometry, unsigned long indexNode, unsigned short iDim) const
Get the value of the reference coordinate to set on the element structure.
Definition CFEASolver.hpp:276
DummyVectorOfLocks UpdateLocks
Definition CFEASolver.hpp:95
su2double GetTotal_OFRefGeom(void) const final
Retrieve the value of the objective function for a reference geometry.
Definition CFEASolver.hpp:521
su2double PenaltyValue
Penalty value to maintain total stiffness constant.
Definition CFEASolver.hpp:58
void BC_Clamped(CGeometry *geometry, const CConfig *config, unsigned short val_marker) final
Clamped boundary conditions.
Definition CFEASolver.cpp:1582
void BC_DispDir(CGeometry *geometry, const CConfig *config, unsigned short val_marker) final
A virtual member.
Definition CFEASolver.cpp:1714
void Compute_NodalStressRes(CGeometry *geometry, CNumerics **numerics, const CConfig *config) final
Compute the nodal stress terms and add them to the residual.
Definition CFEASolver.cpp:1070
void PredictStruct_Displacement(CGeometry *geometry, const CConfig *config) final
Predictor for structural displacements based on previous iterations.
Definition CFEASolver.cpp:2593
void GeneralizedAlpha_UpdateSolution(const CGeometry *geometry, const CConfig *config) final
Update the solution using an implicit Generalized Alpha solver.
Definition CFEASolver.cpp:2493
void Set_ReferenceGeometry(CGeometry *geometry, CConfig *config)
Set a reference geometry for .
Definition CFEASolver.cpp:471
const CVariable * heat_nodes
Pointer to the heat solver nodes to access temperature for coupled simulations.
Definition CFEASolver.hpp:106
void BC_Sym_Plane(CGeometry *geometry, const CConfig *config, unsigned short val_marker) final
Symmetry boundary conditions.
Definition CFEASolver.cpp:1652
unsigned long omp_chunk_size
Chunk size used in light point loops.
Definition CFEASolver.hpp:41
void BC_Clamped_Post(CGeometry *geometry, const CConfig *config, unsigned short val_marker) final
Enforce the solution to be 0 in the clamped nodes - Avoids accumulation of numerical error.
Definition CFEASolver.cpp:1615
bool body_forces
Whether any body force is active.
Definition CFEASolver.hpp:101
void SetLoad_Increment(unsigned long iInc, su2double loadInc) final
Set the value of the load increment for nonlinear structural analysis.
Definition CFEASolver.hpp:703
CSysVector< su2double > LinSysReact
Vector to store the residual before applying the BCs.
Definition CFEASolver.hpp:78
su2double GetTotal_OFVolFrac(void) const final
Retrieve the value of the volume fraction objective function.
Definition CFEASolver.hpp:531
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition CGeometry.hpp:75
CPoint * nodes
Node vector (dual grid information).
Definition CGeometry.hpp:253
Class for defining the numerical methods.
Definition CNumerics.hpp:48
su2double GetCoord(unsigned long iPoint, unsigned long iDim) const
Get the coordinates dor the control volume.
Definition CPoint.hpp:158
Base class for defining element properties.
Definition CElementProperty.hpp:37
Definition CSolver.hpp:71
su2double Total_Custom_ObjFunc
Total custom objective function.
Definition CSolver.hpp:107
su2double Total_ComboObj
Total 'combo' objective for all monitored boundaries.
Definition CSolver.hpp:108
Main class for defining block-compressed-row-storage sparse matrices.
Definition CSysMatrix.hpp:256
Class for holding and manipulating vectors needed by linear solvers.
Definition CSysVector.hpp:195
Main class for defining the variables.
Definition CVariable.hpp:50
passivedouble su2double
Definition code_config.hpp:181
const int EL_QUAD
Elements of four nodes (2D).
Definition option_structure.hpp:617
@ VOLUME_FRACTION
Volume average physical density, for material-based topology optimization applications.
Definition option_structure.hpp:2261
@ TOPOL_DISCRETENESS
Measure of the discreteness of the current topology.
Definition option_structure.hpp:2262
@ STRESS_PENALTY
Penalty function of VM stresses above a maximum value.
Definition option_structure.hpp:2264
@ REFERENCE_GEOMETRY
Norm of displacements with respect to target geometry.
Definition option_structure.hpp:2259
@ TOPOL_COMPLIANCE
Measure of the discreteness of the current topology.
Definition option_structure.hpp:2263
@ CUSTOM_OBJFUNC
Custom objective function definition.
Definition option_structure.hpp:2258
@ REFERENCE_NODE
Objective function defined as the difference of a particular node respect to a reference position.
Definition option_structure.hpp:2260
@ TRIANGLE
VTK nomenclature for defining a triangle element.
Definition option_structure.hpp:134
@ PYRAMID
VTK nomenclature for defining a pyramid element.
Definition option_structure.hpp:139
@ PRISM
VTK nomenclature for defining a prism element.
Definition option_structure.hpp:138
@ QUADRILATERAL
VTK nomenclature for defining a quadrilateral element.
Definition option_structure.hpp:135
@ HEXAHEDRON
VTK nomenclature for defining a hexahedron element.
Definition option_structure.hpp:137
@ TETRAHEDRON
VTK nomenclature for defining a tetrahedron element.
Definition option_structure.hpp:136
const int EL_TRIA
Elements of three nodes (2D).
Definition option_structure.hpp:616
@ HEAT_SOL
Position of the heat equation in the solution solver array.
Definition option_structure.hpp:582
const int EL_HEXA
Elements of eight nodes (3D).
Definition option_structure.hpp:621
const int EL_PRISM
Elements of six nodes (3D).
Definition option_structure.hpp:623
const int EL_TETRA
Elements of four nodes (3D).
Definition option_structure.hpp:620
const int EL_PYRAM
Elements of five nodes (3D).
Definition option_structure.hpp:622
LINEAR_SOLVER_MODE
Type of operation for the linear system solver, changes the source of solver options.
Definition option_structure.hpp:3027
@ STANDARD
Operate in standard mode.
Definition omp_structure.hpp:101