|
| | IWG_Poisson (const ModelDimensionality aModelDimensionality, const IwgType aType=IwgType::Poisson, const IwgMode aMode=IwgMode::Direct) |
| | ~IWG_Poisson () override=default |
| void | compute_jacobian (Element *aElement, Matrix< real > &aJacobian) override |
| | IWG_Timestep (const IwgType aType, const ModelDimensionality aDimensionality, const IwgMode aMode=IwgMode::Iterative, const SymmetryMode aSymmetryMode=SymmetryMode::Unsymmetric, const DofMode aDofMode=DofMode::AllBlocksEqual, const SideSetDofLinkMode aSideSetDofLinkMode=SideSetDofLinkMode::FacetOnly) |
| | ~IWG_Timestep () override |
| void | set_timestepping_method (const EulerMethod aMethod, const bool aHaveStiffness=true) override |
| EulerMethod | method () const override |
| uint | order_active () const |
| uint | order_pending () const |
| void | compute_jacobian_and_rhs (Element *aElement, Matrix< real > &aJacobian, Vector< real > &aRHS) override |
| void | shift_fields () override |
| | called by main file to copy fields into last timestep eg.
|
| void | compute_bdf_coefficients () |
| | compute BDF coefficients (alpha, beta) for variable-step BDF and select the scheme for the upcoming step (startup ramp).
|
| const Vector< real > & | collect_qhist () |
| | The beta-weighted dof history of the scheme running this step:
|
| void | reset_fields () override |
| | called by main file to copy fields from last timestep eg.
|
| void | make_savepoint () |
| | save a deep copy of all dof fields, the step-size history and the step counter.
|
| void | restore_savepoint () |
| | restore the state stored by make_savepoint
|
| void | save_history_state (Vector< real > &aH, uint &aStepCount, real &aLastDeltaTime) const |
| | Export the multi-step integrator state for the memdump, so a warm restart can resume at full BDF order instead of re-anchoring the ramp at order 1 ( the restart cliff observed 2026-08-15: a BDF1 re-entry into an active state is a different tangent and detonated the Newton promotion ).
|
| void | history_field_labels (Cell< string > &aParents, Cell< string > &aHistory, const uint aDepth=0) const |
| | the dof labels ( aParents ) and their numbered history labels ( aHistory, label + "0".."order-1" ) — the fields shift_fields() rotates.
|
| bool | restore_history_state (const Vector< real > &aH, const uint aStepCount, const real aLastDeltaTime) |
| | Counterpart of save_history_state.
|
| TimestepMatrices * | matrices () override |
| | IWG (const IWG &)=delete |
| IWG & | operator= (const IWG &)=delete |
| | IWG (IWG &&)=delete |
| IWG & | operator= (IWG &&)=delete |
| | IWG (const IwgType aType, const ModelDimensionality aDimensionality, const IwgMode aMode=IwgMode::Iterative, const SymmetryMode aSymmetryMode=SymmetryMode::Unsymmetric, const DofMode aDofMode=DofMode::AllBlocksEqual, const SideSetDofLinkMode aSideSetDofLinkMode=SideSetDofLinkMode::FacetOnly) |
| virtual | ~IWG () |
| void | select_blocks (const Vector< id_t > &aBlockIDs) |
| | the blocks are selected over the IWG object.
|
| void | select_block (const id_t aBlockID) |
| void | select_sidesets (const Vector< id_t > &aSidesetIDs) |
| | the sidesets are selected over the IWG object.
|
| const Vector< id_t > & | selected_blocks () const |
| | returns the list of selected blocks
|
| const Vector< id_t > & | selected_sidesets () const |
| | returns the list of selected sidesets
|
| virtual void | compute_convection (Element *aElement, Vector< real > &aConvection) |
| virtual void | compute_alpha_boundary_condition (Element *aElement, Matrix< real > &aJacobian, Vector< real > &aRHS) |
| virtual void | compute_rhs (Element *aElement, Vector< real > &aRHS) |
| virtual void | compute_rhs (Element *aElement, Matrix< real > &aRHS) |
| virtual void | link_to_group (Group *aGroup) |
| const Cell< string > & | dof_fields () const |
| | return the names of the potential fields
|
| const Cell< string > & | flux_fields () const |
| | return the names of the flux fields
|
| const Cell< string > & | tensor_fields () const |
| | special purpose if RHS is a matrix
|
| const Cell< string > & | other_fields () const |
| | return the names of the other fields
|
| const Cell< string > & | all_fields () const |
| | return the names of all fields
|
| const string & | field (const index_t aIndex) const |
| | return the names of a specific field
|
| index_t | number_of_fields () const |
| | return the number of connected fiends
|
| uint | number_of_dofs_per_node () const |
| | DEPRECATED!
|
| uint | number_of_dofs_per_node (const id_t aBlockID) const |
| uint | number_of_dofs_per_node_on_sideset (const id_t aSideSetID) const |
| uint | number_of_dofs_per_edge (const id_t aBlockID) const |
| uint | number_of_dofs_per_face (const id_t aBlockID) const |
| uint | number_of_dofs_per_cell (const id_t aBlockID) const |
| virtual uint | number_of_dofs_per_element (Block *aBlock) const |
| uint | number_of_nodes_per_element (SideSet *aSideSet) const |
| uint | number_of_edges_per_element (SideSet *aSideSet) const |
| uint | number_of_faces_per_element (SideSet *aSideSet) const |
| virtual uint | number_of_dofs_per_element (SideSet *aSideSet) const |
| uint | number_of_lambda_dofs (const id_t aSideSetID) const |
| const Vector< index_t > & | dofs_per_node (const id_t aBlockID) const |
| const Vector< index_t > & | dofs_per_edge (const id_t aBlockID) const |
| const Vector< index_t > & | dofs_per_face (const id_t aBlockID) const |
| const Vector< index_t > & | dofs_per_cell (const id_t aBlockID) const |
| const Vector< index_t > & | lambda_dofs (const id_t aSideSetID) const |
| const Vector< index_t > & | dofs_per_node_on_sideset (const id_t aSideSetID, const bool aSideSetOnly=false) const |
| const Vector< index_t > & | dofs_per_edge_on_sideset (const id_t aSideSetID, const bool aSideSetOnly=false) const |
| const Vector< index_t > & | dofs_per_face_on_sideset (const id_t aSideSetID, const bool aSideSetOnly=false) const |
| const Vector< index_t > & | dofs_per_cell_on_sideset (const id_t, const bool aSideSetOnly=false) const |
| const Vector< index_t > & | dof_entity_types () const |
| const Vector< index_t > & | default_dof_types () const |
| index_t | edge_multiplicity () const |
| | tells how many dofs sit on one edge
|
| index_t | face_multiplicity () const |
| | tells how many dofs sit on one face
|
| index_t | cell_multiplicity () const |
| | tells how many dofs sit on one cell
|
| index_t | edge_field_index (const index_t aDofType) const |
| index_t | face_field_index (const index_t aDofType) const |
| const Vector< index_t > & | dofs_per_sideset (const id_t aSidesetID) const |
| | intended to be used for interface dof creation
|
| uint | num_rhs_cols () const |
| IwgType | type () const |
| | return the type of this IWG
|
| ModelDimensionality | model_dimensionality () const |
| | return the dimensionality of this IWG
|
| void | set_interpolation_type (const InterpolationType aType) |
| | set the interpolation type of node elements
|
| InterpolationType | interpolation_type () const |
| | return the interpolation type of node elements
|
| IwgMode | mode () const |
| | return the calculation mode of this IWG
|
| real | omega () const |
| | get relaxation parameter
|
| void | set_omega (const real &aOmega) |
| | set the relaxation parameter
|
| void | set_penalty (const real aPsi, const uint aIndex=0) |
| | set the penalty parameter
|
| real | penalty (const uint aIndex) const |
| | get penalty parameter
|
| SymmetryMode | symmetry_mode () const |
| | flag telling if matrices are symmetric
|
| void | set_num_rhs_cols (const uint &aNumRhsCols) |
| | special function, must be called before init->jacobian() is called
|
| virtual void | set_wetted_sidesets (const Vector< id_t > &aSideSets) |
| const Vector< id_t > & | wetted_sidesets () const |
| real & | delta_time () |
| uint & | time_loop () |
| void | add_fields (const Cell< string > &aFieldLabels) |
| | add additional non-dof fields to mOtherFields and mAllFields; a label "alpha" also sets mHasConvection
|
| bool | has_convection () const |
| | tells if this field has an alpha boundary condition
|
| virtual void | compute_boundary_flux_matrix (Element *aElement, const uint aDirection, Matrix< real > &aJacobian) |
| | special function to compute the boundary flux in magnetics impose zero as weak BC
|
| const Matrix< real > & | N (const uint &aIntegrationPoint) |
| void | set_blocks (const Vector< id_t > &aBlockIDs, const Cell< DomainType > &aBlockTypes) |
| void | set_sidesets (const Vector< id_t > &aSideSetIDs, const Cell< DomainType > &aSideSetTypes) |
| DomainType | block_type (const id_t aID) const |
| DomainType | sideset_type (const id_t aID) const |
| GroupActivationMode | block_activation_mode (const DomainType aType) const |
| | returns the activation mode for a block based on its domain type
|
| GroupActivationMode | sideset_activation_mode (const DomainType aType) const |
| | returns the activation mode for a sideset based on its domain type
|
| virtual void | initialize () |
| virtual void | initialize (const IwgType aType) |
| bool | is_initialized () const |
| bool | enrich_sidesets () const |
| virtual int | check_mesh (Mesh *aMesh, const proc_t aMasterRank=0) |
| | This routine makes sure that the mesh fulfills the requirements.
|
| void | hide_fields_from_exodus (Mesh *aMesh) |
| | hides fields that are not to be saved to exodus
|
| virtual bool | has_edge_dofs () const |
| | flag telling if the IWG has edge dofs
|
| uint | lambda_multiplicity () const |
| | if this number is > 0, we have langrande dofs such as contact
|
| SideSetDofLinkMode | sideset_dof_link_mode () const |
| | return the dof linking mode for sideset
|
| void | set_algorithm (const SolverAlgorithm aAlgorithm) |
| | sets the mode for the solver algorithm
|
| SolverAlgorithm | algorithm () const |
| | returns the solver algorithm
|
| void | collect_node_data (Element *aElement, Cell< string > &aFieldLabels, Matrix< real > &aData) |
| void | collect_node_data (Element *aElement, const string &aFieldLabel) |
| void | collect_node_data (Element *aElement, const Cell< string > &aFieldLabels) |
| void | collect_node_data (Element *aElement, const string &aFieldLabel, Vector< real > &aData) |
| void | collect_node_data (Element *aElement, const string &aFieldLabel, Vector< real > &aData, uint &aOffset) |
| void | collect_edge_data (Element *aElement, const string &aEdgeFieldLabel, Vector< real > &aData) |
| void | collect_edge_data (Element *aElement, const string &aEdgeFieldLabel, const string &aFaceFieldLabel, Vector< real > &aData) |
| void | collect_lambda_data (Element *aElement, const string &aFieldLabel, real &aData) |
| uint | doftype (const string &aDofLabel) const |
| | return the type id of a dof
|
| void | unique_and_rearrange (Cell< string > &aDofs, const bool aMakeMap=false) |
| | makes sure that dof list is unique and also creares dofmap must be accessible by Mawell_FieldList as well
|
| bool | compute_jacobian_on_sideset () const |
| | called by dof manager
|
| bool | compute_jacobian_on_block () const |
| | called by dof manager
|
| void | print_dofs (Element *aElement, const bool aLocal=false) |
| | for debugging
|
| const string & | dof_label (const index_t aDofIndex) |
| | for debugging
|
| Calculator * | calc () |
| void | set_abstract_nodes (Cell< mesh::Node * > &aNodes) |
| void | set_orphaned_nodes (Cell< mesh::Node * > &aNodes) |
| Cell< mesh::Node * > & | abstract_nodes () |
| Cell< mesh::Node * > & | orphaned_nodes () |
| index_t | abstract_dof_type () const |
| virtual void | collect_abstract_node_dofs () |
| virtual void | create_custom_vectors_and_matrices (Calculator *aCalc) |
| uint | get_field_index (const uint aDofType) const |
| virtual void | custom_postprocess () |
| void | set_abstract_dof_type (const uint aDofType) |
|
| void | compute_mkf (Element *aElement) override |
| | a default interface to compute the matrices of a timestepping scheme of shape of \( M \, \dot q + K \, q = f \)
|
| void | compute_timestep (Matrix< real > &aJ, Vector< real > &aRHS) |
| void | set_field (DofManagerBase *aField) override |
| void | delete_boundary_conditions () |
| | Reserved; not defined and not called by the destructor.
|
| void | delete_block_dof_tables () |
| | Tidy up memory.Called by destructor.
|
| void | delete_sideset_dof_tables () |
| | Tidy up memory.Called by destructor.
|
| virtual void | assign_dofs_per_block (const Vector< id_t > &aBlockIDs) |
| | this function assumes that all blocks are treated equally.
|
| virtual void | assign_dofs_per_sideset (const Vector< id_t > &aSideSetIDs) |
| | this function assumes that all sidesets are treated equally.
|
| virtual void | init_activation_maps () |
| | populates the activation mode maps for blocks and sidesets based on domain types.
|
| virtual void | allocate_work_matrices (Group *aGroup) |
| void | collect_nodes_on_wetted_sitdesets (Mesh *aMesh, const Vector< id_t > &aSideSets) |
| | populate the node indices for the nodes that sit on wetted sidesets
|
| void | count_dofs_per_block () |
| void | count_dofs_per_sideset () |
| void | collect_node_coords (Element *aElement, Matrix< real > &aX) |
| uint | mOrder = 1 |
| TimestepMatrices * | mTimeStepMatrices |
| const proc_t | mCommRank |
| real | mOmega = 0.9 |
| Vector< real > | mPenalty |
| bool | mIsInitialized = false |
| | flag telling if we have been initialized
|
| bool | mEnrichSideSets = false |
| uint | mTimeLoop = 0 |
| | value for timeloop, needed if we don't want to write every timestep
|
| bool | mComputeJacobianOnBlock = true |
| bool | mComputeJacobianOnSideset = false |
| const IwgType | mType |
| | this enum tells which equation object is used
|
| const ModelDimensionality | mDimensionality |
| | this enum tells which dimensionality we have
|
| const IwgMode | mMode |
| | this enum tells if we have to perform a Newton-Raphson
|
| SymmetryMode | mSymmetryMode |
| | needed for the solver
|
| const DofMode | mDofMode |
| | except maxwell, most IWGs are AllBlocksEqual
|
| const SideSetDofLinkMode | mSideSetDofLinkMode |
| | mode how sidesets are linked
|
| SolverAlgorithm | mSolverAlgorithm = SolverAlgorithm::UNDEFINED |
| Mesh * | mMesh = nullptr |
| DofManagerBase * | mField = nullptr |
| Group * | mGroup = nullptr |
| Calculator * | mCalc = nullptr |
| const Material * | mMaterial = nullptr |
| uint | mNumberOfDofsPerNode = 0 |
| uint | mNumberOfDofsPerEdge = 0 |
| uint | mNumberOfDofsPerFace = 0 |
| uint | mNumberOfRhsDofsPerEdge = 0 |
| uint | mNumberOfRhsDofsPerFace = 0 |
| uint | mNumberOfThinShellLayers = 0 |
| uint | mNumberOfSpatialDimensions = BELFEM_UINT_MAX |
| uint | mNumberOfDerivativeDimensions = 0 |
| uint | mNumberOfNodesPerElement = BELFEM_UINT_MAX |
| uint | mNumberOfNodesPerMaster = BELFEM_UINT_MAX |
| uint | mNumberOfNodesPerSlave = BELFEM_UINT_MAX |
| uint | mNumberOfEdgesPerElement = 0 |
| uint | mNumberOfFacesPerElement = 0 |
| uint | mNumberOfDofsPerElement = BELFEM_UINT_MAX |
| uint | mNumberOfNodeDofsPerElement = 0 |
| uint | mNumberOfEdgeDofsPerElement = 0 |
| uint | mNumberOfRhsEdgeDofsPerElement = 0 |
| Cell< string > | mDofFields |
| Cell< string > | mFluxFields |
| Cell< string > | mTensorFields |
| Cell< string > | mOtherFields |
| Cell< string > | mAllFields |
| Cell< string > | mHiddenFields |
| uint | mNumberOfRhsCols = 1 |
| Vector< id_t > | mWettedSidesets |
| real | mDeltaTime = 1.0 |
| Vector< index_t > | mNodesOnWettedSidesets |
| bool | mHasConvection = false |
| Vector< id_t > | mBlockIDs |
| Vector< id_t > | mSideSetIDs |
| Map< id_t, index_t > | mBlockIndices |
| Map< id_t, index_t > | mSideSetIndices |
| Map< string, uint > | mDofTypeMap |
| Map< uint, uint > | mDofFieldMap |
| Vector< index_t > | mDefaultDofTypes |
| Vector< index_t > | mDofEntityTypes |
| Cell< Vector< index_t > > | mDofsPerBlock |
| Cell< Vector< index_t > > | mDofsPerSideSet |
| Cell< DofTable * > | mBlockDofs |
| | contains the block dofs
|
| Cell< DofTable * > | mSideSetDofs |
| | contains the sideset dofs
|
| Cell< DofTable * > | mSideSetOnlyDofs |
| Vector< index_t > | mEdgeFieldIndices |
| Vector< index_t > | mFaceFieldIndices |
| index_t | mEdgeDofMultiplicity = 0 |
| index_t | mFaceDofMultiplicity = 0 |
| index_t | mCellDofMultiplicity = 0 |
| index_t | mLambdaDofMultiplicity = 0 |
| Map< string, uint > | mDofMap |
| Cell< string > | mDofLabels |
| | needed for debug output
|
| Map< id_t, DomainType > | mBlockTypes |
| Map< id_t, DomainType > | mSideSetTypes |
| | links sideset IDs with the designated types
|
| Map< id_t, DomainType > | mSideSetSubTypes |
| | links sideset IDs with the designated types
|
| Map< DomainType, GroupActivationMode > | mBlockActivationModes |
| | maps domain types to activation modes for blocks
|
| Map< DomainType, GroupActivationMode > | mSideSetActivationModes |
| | maps domain types to activation modes for sidesets
|
| Vector< real > | mNormal2D = { 0., 0. } |
| | normal, if this is a 2d problem, todo: delete
|
| Vector< real > | mNormal3D = { 0., 0., 0. } |
| | normal, if this is a 3d problem, todo: delete
|
| InterpolationType | mInterpolationType = InterpolationType::LAGRANGE |
| Cell< mesh::Node * > | mAbstractNodes |
| | abstract nodes needed for cut BCs in MAXWELL
|
| Cell< mesh::Node * > | mOrphanedNodes |
| | nodes that belong to no active element but still carry a phi dof ( see Mesh::orphaned_nodes() )
|
| Cell< Dof * > | mAbstractNodeDofs |
| | list with special dofs that sit on abstract nodes
|
| DofTable | mAbstractNodeTable |
| index_t | mAbstractDofType = gNoIndex |