FrontISTR  6.0.0
Large-scale structural analysis program with finit element method
m_fstr_creatematrix_and_dampingforce Module Reference

This module assembles the tangent stiffness matrix and, in the implicit dynamic case, also the effective dynamic system matrix A = c1*K + c2*M (+ b3*C for connectors) together with the corresponding RHS contribution stored in fstrSOLIDDFORCE. More...

Functions/Subroutines

subroutine, public fstr_creatematrix_and_dampingforce (hecMESH, hecMAT, fstrSOLID, time, tincr, fstrDYNAMIC, coef)
 Assemble the system matrix and, optionally, the dynamic damping force. More...
 
real(kind=kreal) function, public fstr_calc_kinetic_energy (hecMESH, fstrSOLID, fstrDYNAMIC, velocity)
 Recompute each element mass matrix and evaluate 0.5*v^T*M*v. Only rows owned by this rank are accumulated before the global reduction. More...
 
subroutine, public fstr_calc_mass_product (hecMESH, fstrSOLID, fstrDYNAMIC, vec, mass_vec)
 Recompute each element mass matrix and evaluate M*vec. Only rows owned by this rank are computed; the other rows are set to zero. More...
 
subroutine, public fstr_report_lumped_mass_fallback (hecMESH, fstrDYNAMIC)
 Report the element types that use the lumped mass although the consistent mass is selected. The element types are gathered from all ranks. More...
 
subroutine calc_mass_elem (ic_type, nn, ndof, ecoord, fstrSOLID, hecMESH, icel, use_lumped_mass, mass_mat, lumped)
 Compute the element mass matrix for the given element type. More...
 
subroutine set_diagonal_mass (nsize, lumped, mass)
 

Detailed Description

This module assembles the tangent stiffness matrix and, in the implicit dynamic case, also the effective dynamic system matrix A = c1*K + c2*M (+ b3*C for connectors) together with the corresponding RHS contribution stored in fstrSOLIDDFORCE.

Function/Subroutine Documentation

◆ calc_mass_elem()

subroutine m_fstr_creatematrix_and_dampingforce::calc_mass_elem ( integer(kind=kint), intent(in)  ic_type,
integer(kind=kint), intent(in)  nn,
integer(kind=kint), intent(in)  ndof,
real(kind=kreal), dimension(:,:), intent(in)  ecoord,
type(fstr_solid), intent(in)  fstrSOLID,
type(hecmwst_local_mesh), intent(in)  hecMESH,
integer(kind=kint), intent(in)  icel,
logical, intent(in)  use_lumped_mass,
real(kind=kreal), dimension(:,:), intent(inout)  mass_mat,
real(kind=kreal), dimension(:), intent(inout)  lumped 
)

Compute the element mass matrix for the given element type.

use_lumped_mass selects the lumped or the consistent mass. Element types in kLumpedMassFallbackTypes return their lumped mass in either case, and element types without inertia return mass_mat unchanged. Every element type accepted by calc_stiff_and_mass_elem must be listed here, otherwise the dynamic analysis aborts.

Definition at line 557 of file fstr_CreateMatrix.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_calc_kinetic_energy()

real(kind=kreal) function, public m_fstr_creatematrix_and_dampingforce::fstr_calc_kinetic_energy ( type(hecmwst_local_mesh), intent(in)  hecMESH,
type(fstr_solid), intent(in)  fstrSOLID,
type(fstr_dynamic), intent(in)  fstrDYNAMIC,
real(kind=kreal), dimension(:), intent(in)  velocity 
)

Recompute each element mass matrix and evaluate 0.5*v^T*M*v. Only rows owned by this rank are accumulated before the global reduction.

Definition at line 232 of file fstr_CreateMatrix.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_calc_mass_product()

subroutine, public m_fstr_creatematrix_and_dampingforce::fstr_calc_mass_product ( type(hecmwst_local_mesh), intent(in)  hecMESH,
type(fstr_solid), intent(in)  fstrSOLID,
type(fstr_dynamic), intent(in)  fstrDYNAMIC,
real(kind=kreal), dimension(:), intent(in)  vec,
real(kind=kreal), dimension(:), intent(out)  mass_vec 
)

Recompute each element mass matrix and evaluate M*vec. Only rows owned by this rank are computed; the other rows are set to zero.

Definition at line 306 of file fstr_CreateMatrix.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_creatematrix_and_dampingforce()

subroutine, public m_fstr_creatematrix_and_dampingforce::fstr_creatematrix_and_dampingforce ( type(hecmwst_local_mesh)  hecMESH,
type(hecmwst_matrix)  hecMAT,
type(fstr_solid)  fstrSOLID,
real(kind=kreal), intent(in)  time,
real(kind=kreal), intent(in)  tincr,
type(fstr_dynamic), intent(in), optional  fstrDYNAMIC,
real(kind=kreal), dimension(6), intent(in), optional  coef 
)

Assemble the system matrix and, optionally, the dynamic damping force.

Static / eigen / frequency (fstrDYNAMIC and coef absent): Assemble only the tangent stiffness matrix K into hecMAT.

Implicit dynamic (fstrDYNAMIC and coef present): Assemble the effective dynamic system matrix A = c1*K + c2*M (+ b3*C for connector elements) into hecMAT, and accumulate the mass / Rayleigh damping / connector damping contribution to the RHS into fstrSOLIDDFORCE.

Parameters
hecmeshmesh information
hecmatsystem matrix
fstrsolidsolid state
[in]timecurrent time
[in]tincrtime increment
[in]fstrdynamicdynamic info (omit for static)
[in]coefNewmark time-integration coefficients

Definition at line 36 of file fstr_CreateMatrix.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_report_lumped_mass_fallback()

subroutine, public m_fstr_creatematrix_and_dampingforce::fstr_report_lumped_mass_fallback ( type(hecmwst_local_mesh), intent(in)  hecMESH,
type(fstr_dynamic), intent(in)  fstrDYNAMIC 
)

Report the element types that use the lumped mass although the consistent mass is selected. The element types are gathered from all ranks.

Definition at line 378 of file fstr_CreateMatrix.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_diagonal_mass()

subroutine m_fstr_creatematrix_and_dampingforce::set_diagonal_mass ( integer(kind=kint), intent(in)  nsize,
real(kind=kreal), dimension(:), intent(in)  lumped,
real(kind=kreal), dimension(:,:), intent(inout)  mass 
)

Definition at line 636 of file fstr_CreateMatrix.f90.

Here is the caller graph for this function: