![]() |
FrontISTR
6.0.0
Large-scale structural analysis program with finit element method
|
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) |
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.
| 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.
| 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.
| 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.
| 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.
| hecmesh | mesh information | |
| hecmat | system matrix | |
| fstrsolid | solid state | |
| [in] | time | current time |
| [in] | tincr | time increment |
| [in] | fstrdynamic | dynamic info (omit for static) |
| [in] | coef | Newmark time-integration coefficients |
Definition at line 36 of file fstr_CreateMatrix.f90.
| 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.
| 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 | ||
| ) |