FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module with subroutines for recovery of internal displacements. More...
Functions/Subroutines | |
subroutine | readresponsepointers (triads, sup, pointers, ierr) |
Retrieves result database file pointers for system response data. More... | |
subroutine | readdisplpointer (sup, disPtr, ierr) |
Retrieves result database pointer for superelement displacements. More... | |
subroutine | readsupelposition (sup, supPtr, iprint, lpu, ierr) |
Reads position matrix for a superelement from the results database. More... | |
subroutine | readsupeldisplacements (triads, sup, pointers, iprint, lpu, ierr) |
Reads external nodal displacements for the specified superelement. More... | |
subroutine | readstaticdisplacements (fileName, gvec, vii, lpu, ierr) |
Calculates the internal displacements due to gravitation forces. More... | |
subroutine | allocatebandematrices (nPart, ierr) |
Allocates the B- and E-matrix file objects. More... | |
subroutine | openbandematrices (ndof1, ndof2, ngen, nColSwap, ierr, Bmatfile, Ematfile, indx) |
Opens the B- and E-matrix files associated with a superelement. More... | |
subroutine | closebandematrices (ierr) |
Closes the B- and E-matrix files and deallocates related arrays. More... | |
subroutine | closebandematrix (indx, ierr) |
Closes the B- and E-matrix files for one particular superelement. More... | |
subroutine | readintdisplacements (disPtr, supId, sam, sv, iprint, lpu, ierr) |
Reads the internal displacements for a superelement from file. More... | |
subroutine | calcintdisplacements (sam, sv, finit, vg, iprint, lpu, ierr, indx, vii, g) |
Extracts the internal displacements for a superelement. More... | |
subroutine | calctotaldisplacements (sup, madof, minex, sv, svTotal, ierr) |
Calculates the total displacements at the nodal points. More... | |
subroutine | eldispfromsupeldisp (sam, mnpcPtr, Hel_Ptr, ierr, indx) |
Calculates superelement-to-element displacement extraction matrices. More... | |
subroutine, private | disexpand (sam, sveq, svdof) |
Expands and rearranges a displacement vector. More... | |
subroutine | dis1expand (sam, sveq, svdof, ierr) |
Expands and rearranges a displacement vector. More... | |
subroutine | getgroupbmat (sam, MNPC, MGMAP, Bsub, bInd, iprint, lpu, ierr) |
Extracts a sub-matrix from the B-matrix associated with node groups. More... | |
subroutine | calcgroupdisplacements (vd, vt, sam, sup, Bmat, nodes, iprint, lpu, ierr) |
Extracts the internal displacements for a group of nodes. More... | |
subroutine | extractexternaldisp (sv, svTotal, sam, sup, nodes, iprint, lpu, ierr) |
Extracts local and total displacements for external group nodes. More... | |
subroutine, private | calctotalnodaldisplacement (sup, inod, minex, uLoc, uTot, ierr) |
Calculates the total displacement at a nodal point. More... | |
Variables | |
type(diskmatrixtype), dimension(:), allocatable, save, private | bmatdisk |
Displacement recovery matrices associated with external nodal DOFs. More... | |
type(diskmatrixtype), dimension(:), allocatable, save, private | ematdisk |
Displacement recovery matrices associated with generalized modes. More... | |
Module with subroutines for recovery of internal displacements.
This module contains a set of subroutines for calculation of displacements at the internal nodes of a superelement, based on the updated positions of the triads connected to the superelement, as well as the generalized modes (or static gravitation modes). The module is used by all four recovery modules. Some subroutines are also used by the dynamics solver, when (stress and/or gage) recovery during time integration is requested.
subroutine displacementmodule::allocatebandematrices | ( | integer, intent(in) | nPart, |
integer, intent(out) | ierr | ||
) |
Allocates the B- and E-matrix file objects.
[in] | nPart | Number of superelements to allocate matrices for |
[out] | ierr | Error flag |
subroutine displacementmodule::calcgroupdisplacements | ( | real(rk), dimension(:), intent(out) | vd, |
real(rk), dimension(:), intent(out) | vt, | ||
type(samtype), intent(in) | sam, | ||
type(supeltype), intent(in) | sup, | ||
real(rk), dimension(:,:), intent(in) | Bmat, | ||
integer, dimension(:), intent(in) | nodes, | ||
integer, intent(in) | iprint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Extracts the internal displacements for a group of nodes.
[out] | vd | Internal local nodal displacements |
[out] | vt | Internal total nodal displacements |
[in] | sam | Assembly management data for the superelement |
[in] | sup | The superelement to calculate internal displacements for |
[in] | Bmat | Displacement recovery matrix of node group to calculate for |
[in] | nodes | List of node numbers for node group to calculate for |
[in] | iprint | Print switch. If positive, print the local displacements. |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
This subroutine is used by the dynamics solver only, when stress/displacement recovery on element groups has been requested.
subroutine displacementmodule::calcintdisplacements | ( | type(samtype), intent(in) | sam, |
real(rk), dimension(sam%ndof), intent(out) | sv, | ||
real(dp), dimension(:), intent(in) | finit, | ||
real(dp), dimension(:), intent(in) | vg, | ||
integer, intent(in) | iprint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr, | ||
integer, intent(in), optional | indx, | ||
real(rk), dimension(:), intent(in), optional | vii, | ||
real(rk), dimension(3), intent(in), optional | g | ||
) |
Extracts the internal displacements for a superelement.
[in] | sam | Assembly management data for the superelement |
[out] | sv | Local nodal displacements in DOF-order |
[in] | finit | Deformational displacements at the supernodes |
[in] | vg | Amplitudes of the generalized modes |
[in] | iprint | Print switch. If positive, print the local displacements. |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
[in] | indx | Disk-matrix index for the superelement |
[in] | vii | Amplitudes of static gravitation modes |
[in] | g | Gravitation vector |
The internal (VI) and external (VE) displacement vectors are established for the superelement. Then they are rearranged from equation- order into nodal point DOF-order (SV).
subroutine displacementmodule::calctotaldisplacements | ( | type(supeltype), intent(in) | sup, |
integer, dimension(:), intent(in) | madof, | ||
integer, dimension(:), intent(in) | minex, | ||
real(rk), dimension(:), intent(in) | sv, | ||
real(rk), dimension(:), intent(out) | svTotal, | ||
integer, intent(out) | ierr | ||
) |
Calculates the total displacements at the nodal points.
[in] | sup | The superelement to calculate internal displacements for |
[in] | madof | Matrix of accumulated DOFs for the superelement |
[in] | minex | Matrix of internal to external node number mapping |
[in] | sv | Local nodal displacements in DOF-order |
[out] | svTotal | Total nodal displacements in DOF-order |
[out] | ierr | Error flag |
|
private |
Calculates the total displacement at a nodal point.
[in] | sup | The superelement to calculate displacement for |
[in] | inod | Internal node number to calculate displacement at |
[in] | minex | Matrix of internal to external node number mapping |
[in] | uLoc | Local nodal displacement w.r.t. rotated superelement system |
[out] | uTot | Total nodal displacement w.r.t. global system |
[out] | ierr | Error flag |
subroutine displacementmodule::closebandematrices | ( | integer, intent(out) | ierr | ) |
Closes the B- and E-matrix files and deallocates related arrays.
[out] | ierr | Error flag |
subroutine displacementmodule::closebandematrix | ( | integer, intent(in) | indx, |
integer, intent(out) | ierr | ||
) |
Closes the B- and E-matrix files for one particular superelement.
[in] | indx | Index of the matrix to close |
[out] | ierr | Error flag |
This subroutine is used by the dynamics solver only, when stress/displacement recovery during time integration has been requested.
subroutine displacementmodule::dis1expand | ( | type(samtype), intent(in) | sam, |
real(rk), dimension(:), intent(in) | sveq, | ||
real(rk), dimension(:), intent(out) | svdof, | ||
integer, intent(out) | ierr | ||
) |
Expands and rearranges a displacement vector.
[in] | sam | Assembly management data for the superelement |
[in] | sveq | Displacement vector expressed in status-1 equation order |
[in] | svdof | Displacement vector expressed in nodal point DOF order |
[out] | ierr | Error flag |
|
private |
Expands and rearranges a displacement vector.
[in] | sam | Assembly management data for the superelement |
[in] | sveq | Displacement vector expressed in equation order |
[out] | svdof | Displacement vector expressed in nodal point DOF order |
This is the same as the subroutine solextensionmodule::csexpand, but we don't want the recovery modules to depend on that big module. The implementation is essentially the same as the subroutine EXPAND from the SAM library. Notice that the first coefficient of each constraint equation, i.e., c0=ttcc(mpmceq(iceq))
is ignored here, under the assumption that all constraint equations represents coupling elements (RBE2 and RBE3), and no prescribed motions.
subroutine displacementmodule::eldispfromsupeldisp | ( | type(samtype), intent(in) | sam, |
type(ivectorptr), dimension(:), intent(in) | mnpcPtr, | ||
type(rmatrixptr), dimension(:), intent(out) | Hel_Ptr, | ||
integer, intent(out) | ierr, | ||
integer, intent(in), optional | indx | ||
) |
Calculates superelement-to-element displacement extraction matrices.
[in] | sam | Assembly management data for the superelement |
[in] | mnpcPtr | Array of pointers to MNPC-arrays for the elements |
[out] | Hel_Ptr | Array of element displacement extraction matrices |
[out] | ierr | Error flag |
[in] | indx | Disk-matrix index for the superelement |
This subroutine establishes the transformation matrices that give the displacement vectors for strain rosette elements in global coordinates from the superelement displacement vector.
subroutine displacementmodule::extractexternaldisp | ( | real(rk), dimension(:), intent(inout) | sv, |
real(rk), dimension(:), intent(inout) | svTotal, | ||
type(samtype), intent(in) | sam, | ||
type(supeltype), intent(in) | sup, | ||
integer, dimension(:), intent(in) | nodes, | ||
integer, intent(in) | iprint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Extracts local and total displacements for external group nodes.
sv | Local nodal displacements in DOF-order | |
svTotal | Total nodal displacements in DOF-order | |
[in] | sam | Assembly management data for the superelement |
[in] | sup | The superelement to extract displacements for |
[in] | nodes | List of node numbers for node group to calculate for |
[in] | iprint | Print switch. If positive, print the local displacements. |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
This subroutine is used by the dynamics solver only, when stress/displacement recovery on element groups has been requested.
subroutine displacementmodule::getgroupbmat | ( | type(samtype), intent(in) | sam, |
integer, dimension(:), intent(out), pointer | MNPC, | ||
integer, dimension(:), intent(out), pointer | MGMAP, | ||
real(rk), dimension(:,:), intent(out), pointer | Bsub, | ||
integer, intent(in) | bInd, | ||
integer, intent(in) | iprint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Extracts a sub-matrix from the B-matrix associated with node groups.
[in] | sam | Assembly management data for the superelement |
[out] | MNPC | List of node numbers for node group to calculate for |
[out] | MGMAP | DOF-mapping from node group to global |
[out] | Bsub | Displacement recovery matrix for the node group |
[in] | bind | Index of the superelement B-matrix to extract from |
[in] | iprint | Print switch |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
This subroutine is used by the dynamics solver only, when stress/displacement recovery on element groups has been requested.
subroutine displacementmodule::openbandematrices | ( | integer, intent(in) | ndof1, |
integer, intent(in) | ndof2, | ||
integer, intent(in) | ngen, | ||
integer, intent(in) | nColSwap, | ||
integer, intent(out) | ierr, | ||
character(len=*), intent(in), optional | Bmatfile, | ||
character(len=*), intent(in), optional | Ematfile, | ||
integer, intent(in), optional | indx | ||
) |
Opens the B- and E-matrix files associated with a superelement.
[in] | ndof1 | Number of 1-status (internal) DOFs in superelement |
[in] | ndof2 | Number of 2-status (external) DOFs in superelement |
[in] | ngen | Number of generalized DOFs in superelement |
[in] | nColSwap | Number of columns in one swap section of the B-matrix |
[out] | ierr | Error flag |
[in] | Bmatfile | Name of the B-matrix file |
[in] | Ematfile | Name of the E-matrix file |
[in] | indx | Disk-matrix index for the superelement |
subroutine displacementmodule::readdisplpointer | ( | type(supeltype), intent(in) | sup, |
integer(ptr), intent(out) | disPtr, | ||
integer, intent(out) | ierr | ||
) |
Retrieves result database pointer for superelement displacements.
[in] | sup | The superelement to read displacement response variable for |
[out] | disPtr | Result database variable pointer for displacement vector |
[out] | ierr | Error flag |
subroutine displacementmodule::readintdisplacements | ( | integer(ptr), intent(in) | disPtr, |
type(idtype), intent(in) | supId, | ||
type(samtype), intent(in) | sam, | ||
real(rk), dimension(sam%ndof), intent(out) | sv, | ||
integer, intent(in) | iprint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Reads the internal displacements for a superelement from file.
[in] | disPtr | Result database variable pointer for displacement |
[in] | supId | Id of the superelement to read displacements for |
[in] | sam | Assembly management data for the superelement |
[out] | sv | Local nodal displacements in DOF-order |
[in] | iprint | Print switch. If positive, print the local displacements. |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
subroutine displacementmodule::readresponsepointers | ( | type(triadtype), dimension(:), intent(in) | triads, |
type(supeltype), intent(in) | sup, | ||
integer(ptr), dimension(:), intent(out) | pointers, | ||
integer, intent(out) | ierr | ||
) |
Retrieves result database file pointers for system response data.
[in] | triads | Array of triads to read response variables for |
[in] | sup | The superelement to read response variables for |
[out] | pointers | Array of result database variable pointers |
[out] | ierr | Error flag |
subroutine displacementmodule::readstaticdisplacements | ( | character(len=*), intent(in) | fileName, |
real(dp), dimension(3), intent(in) | gvec, | ||
real(dp), dimension(:), intent(out) | vii, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Calculates the internal displacements due to gravitation forces.
[in] | fileName | Name of file with static gravitation mode shapes |
[in] | gvec | The gravitation vector |
[out] | vii | Amplitudes of static gravitation modes |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
subroutine displacementmodule::readsupeldisplacements | ( | type(triadtype), dimension(:), intent(inout) | triads, |
type(supeltype), intent(inout) | sup, | ||
integer(ptr), dimension(:), intent(in) | pointers, | ||
integer, intent(in) | iprint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Reads external nodal displacements for the specified superelement.
[in] | triads | Array of triads connected to the superelement |
[in] | sup | The superelement to read displacements for |
[in] | pointers | Array of result database variable pointers |
[in] | iprint | Print switch |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
This subroutine reads the updated positions for the triads connected to the superelement from the results database, and calculates the associated local deformational displacements of the superelement.
subroutine displacementmodule::readsupelposition | ( | type(supeltype), intent(inout) | sup, |
integer(ptr), intent(in) | supPtr, | ||
integer, intent(in) | iprint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Reads position matrix for a superelement from the results database.
[in] | sup | The superelement to read position matrix for |
[in] | supPtr | Result database variable pointer for the superelement |
[in] | iprint | Print switch |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
|
private |
Displacement recovery matrices associated with external nodal DOFs.
|
private |
Displacement recovery matrices associated with generalized modes.