FEDEM Solver  R8.0
Source code of the dynamics solver
Functions/Subroutines | Variables
displacementmodule Module Reference

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...
 

Detailed Description

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.

Function/Subroutine Documentation

◆ allocatebandematrices()

subroutine displacementmodule::allocatebandematrices ( integer, intent(in)  nPart,
integer, intent(out)  ierr 
)

Allocates the B- and E-matrix file objects.

Parameters
[in]nPartNumber of superelements to allocate matrices for
[out]ierrError flag
Author
Knut Morten Okstad
Date
13 Jan 2016
Here is the call graph for this function:
Here is the caller graph for this function:

◆ calcgroupdisplacements()

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.

Parameters
[out]vdInternal local nodal displacements
[out]vtInternal total nodal displacements
[in]samAssembly management data for the superelement
[in]supThe superelement to calculate internal displacements for
[in]BmatDisplacement recovery matrix of node group to calculate for
[in]nodesList of node numbers for node group to calculate for
[in]iprintPrint switch. If positive, print the local displacements.
[in]lpuFile unit number for res-file output
[out]ierrError flag

This subroutine is used by the dynamics solver only, when stress/displacement recovery on element groups has been requested.

Author
Knut Morten Okstad
Date
18 May 2020
Here is the call graph for this function:
Here is the caller graph for this function:

◆ calcintdisplacements()

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.

Parameters
[in]samAssembly management data for the superelement
[out]svLocal nodal displacements in DOF-order
[in]finitDeformational displacements at the supernodes
[in]vgAmplitudes of the generalized modes
[in]iprintPrint switch. If positive, print the local displacements.
[in]lpuFile unit number for res-file output
[out]ierrError flag
[in]indxDisk-matrix index for the superelement
[in]viiAmplitudes of static gravitation modes
[in]gGravitation 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).

Author
Knut Morten Okstad
Date
11 Oct 2000
Here is the call graph for this function:
Here is the caller graph for this function:

◆ calctotaldisplacements()

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.

Parameters
[in]supThe superelement to calculate internal displacements for
[in]madofMatrix of accumulated DOFs for the superelement
[in]minexMatrix of internal to external node number mapping
[in]svLocal nodal displacements in DOF-order
[out]svTotalTotal nodal displacements in DOF-order
[out]ierrError flag
Author
Knut Morten Okstad
Date
23 Mar 2018
Here is the call graph for this function:
Here is the caller graph for this function:

◆ calctotalnodaldisplacement()

subroutine, private displacementmodule::calctotalnodaldisplacement ( type(supeltype), intent(in)  sup,
integer, intent(in)  inod,
integer, dimension(:), intent(in)  minex,
real(rk), dimension(:), intent(in)  uLoc,
real(rk), dimension(:), intent(out)  uTot,
integer, intent(out)  ierr 
)
private

Calculates the total displacement at a nodal point.

Parameters
[in]supThe superelement to calculate displacement for
[in]inodInternal node number to calculate displacement at
[in]minexMatrix of internal to external node number mapping
[in]uLocLocal nodal displacement w.r.t. rotated superelement system
[out]uTotTotal nodal displacement w.r.t. global system
[out]ierrError flag
Author
Knut Morten Okstad
Date
23 May 2020
Here is the call graph for this function:
Here is the caller graph for this function:

◆ closebandematrices()

subroutine displacementmodule::closebandematrices ( integer, intent(out)  ierr)

Closes the B- and E-matrix files and deallocates related arrays.

Parameters
[out]ierrError flag
Author
Knut Morten Okstad
Date
11 Oct 2000
Here is the call graph for this function:
Here is the caller graph for this function:

◆ closebandematrix()

subroutine displacementmodule::closebandematrix ( integer, intent(in)  indx,
integer, intent(out)  ierr 
)

Closes the B- and E-matrix files for one particular superelement.

Parameters
[in]indxIndex of the matrix to close
[out]ierrError flag

This subroutine is used by the dynamics solver only, when stress/displacement recovery during time integration has been requested.

Author
Knut Morten Okstad
Date
20 May 2020
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dis1expand()

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.

Parameters
[in]samAssembly management data for the superelement
[in]sveqDisplacement vector expressed in status-1 equation order
[in]svdofDisplacement vector expressed in nodal point DOF order
[out]ierrError flag
Author
Knut Morten Okstad
Date
Mar 2018
Here is the call graph for this function:

◆ disexpand()

subroutine, private displacementmodule::disexpand ( type(samtype), intent(in)  sam,
real(rk), dimension(:), intent(in)  sveq,
real(rk), dimension(:), intent(out)  svdof 
)
private

Expands and rearranges a displacement vector.

Parameters
[in]samAssembly management data for the superelement
[in]sveqDisplacement vector expressed in equation order
[out]svdofDisplacement 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.

Author
Knut Morten Okstad
Date
Feb 2017
Here is the caller graph for this function:

◆ eldispfromsupeldisp()

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.

Parameters
[in]samAssembly management data for the superelement
[in]mnpcPtrArray of pointers to MNPC-arrays for the elements
[out]Hel_PtrArray of element displacement extraction matrices
[out]ierrError flag
[in]indxDisk-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.

Author
Bjorn Haugen
Date
11 Dec 1999
Here is the call graph for this function:
Here is the caller graph for this function:

◆ extractexternaldisp()

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.

Parameters
svLocal nodal displacements in DOF-order
svTotalTotal nodal displacements in DOF-order
[in]samAssembly management data for the superelement
[in]supThe superelement to extract displacements for
[in]nodesList of node numbers for node group to calculate for
[in]iprintPrint switch. If positive, print the local displacements.
[in]lpuFile unit number for res-file output
[out]ierrError flag

This subroutine is used by the dynamics solver only, when stress/displacement recovery on element groups has been requested.

Author
Knut Morten Okstad
Date
19 Jun 2020
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getgroupbmat()

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.

Parameters
[in]samAssembly management data for the superelement
[out]MNPCList of node numbers for node group to calculate for
[out]MGMAPDOF-mapping from node group to global
[out]BsubDisplacement recovery matrix for the node group
[in]bindIndex of the superelement B-matrix to extract from
[in]iprintPrint switch
[in]lpuFile unit number for res-file output
[out]ierrError flag

This subroutine is used by the dynamics solver only, when stress/displacement recovery on element groups has been requested.

Author
Knut Morten Okstad
Date
18 May 2020
Here is the call graph for this function:
Here is the caller graph for this function:

◆ openbandematrices()

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.

Parameters
[in]ndof1Number of 1-status (internal) DOFs in superelement
[in]ndof2Number of 2-status (external) DOFs in superelement
[in]ngenNumber of generalized DOFs in superelement
[in]nColSwapNumber of columns in one swap section of the B-matrix
[out]ierrError flag
[in]BmatfileName of the B-matrix file
[in]EmatfileName of the E-matrix file
[in]indxDisk-matrix index for the superelement
Author
Knut Morten Okstad
Date
11 Oct 2000
Here is the call graph for this function:
Here is the caller graph for this function:

◆ readdisplpointer()

subroutine displacementmodule::readdisplpointer ( type(supeltype), intent(in)  sup,
integer(ptr), intent(out)  disPtr,
integer, intent(out)  ierr 
)

Retrieves result database pointer for superelement displacements.

Parameters
[in]supThe superelement to read displacement response variable for
[out]disPtrResult database variable pointer for displacement vector
[out]ierrError flag
Author
Knut Morten Okstad
Date
14 Jul 2021

◆ readintdisplacements()

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.

Parameters
[in]disPtrResult database variable pointer for displacement
[in]supIdId of the superelement to read displacements for
[in]samAssembly management data for the superelement
[out]svLocal nodal displacements in DOF-order
[in]iprintPrint switch. If positive, print the local displacements.
[in]lpuFile unit number for res-file output
[out]ierrError flag
Author
Knut Morten Okstad
Date
14 Jul 2021

◆ readresponsepointers()

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.

Parameters
[in]triadsArray of triads to read response variables for
[in]supThe superelement to read response variables for
[out]pointersArray of result database variable pointers
[out]ierrError flag
Author
Knut Morten Okstad
Date
9 Oct 2000

◆ readstaticdisplacements()

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.

Parameters
[in]fileNameName of file with static gravitation mode shapes
[in]gvecThe gravitation vector
[out]viiAmplitudes of static gravitation modes
[in]lpuFile unit number for res-file output
[out]ierrError flag
Author
Knut Morten Okstad
Date
19 Feb 2018
Here is the call graph for this function:

◆ readsupeldisplacements()

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.

Parameters
[in]triadsArray of triads connected to the superelement
[in]supThe superelement to read displacements for
[in]pointersArray of result database variable pointers
[in]iprintPrint switch
[in]lpuFile unit number for res-file output
[out]ierrError 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.

Author
Knut Morten Okstad
Date
9 Oct 2000
Here is the call graph for this function:

◆ readsupelposition()

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.

Parameters
[in]supThe superelement to read position matrix for
[in]supPtrResult database variable pointer for the superelement
[in]iprintPrint switch
[in]lpuFile unit number for res-file output
[out]ierrError flag
Author
Knut Morten Okstad
Date
7 Mar 2006

Variable Documentation

◆ bmatdisk

type(diskmatrixtype), dimension(:), allocatable, save, private displacementmodule::bmatdisk
private

Displacement recovery matrices associated with external nodal DOFs.

◆ ematdisk

type(diskmatrixtype), dimension(:), allocatable, save, private displacementmodule::ematdisk
private

Displacement recovery matrices associated with generalized modes.