FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module with subroutines for recovery within the time integration loop. More...
Data Types | |
type | recparttype |
Data type holding recovery data for superelements. More... | |
Functions/Subroutines | |
type(strainrosettetype) function, pointer, public | getstrainrosette (id) |
Returns pointer to (first) strain rosette object with specified ID. More... | |
subroutine, public | getdeformation (id, data, ndat, idat) |
Returns deformation vector of the specified part. More... | |
integer function, public | getdeformationsize (id) |
Returns the size of deformation vector for the specified part. More... | |
subroutine, public | getstress (id, data, ndat, idat) |
Returns the array of von Mises stresses for the specified part. More... | |
integer function, public | getstresssize (id) |
Returns the size of von Mises stress array for the specified part. More... | |
subroutine, public | readstrainrosettes (infp, ierr) |
Initializes all strain rosette elements from the solver input file. More... | |
subroutine | initstrainrosettes (ipsw, lpu, ierr) |
Initiates all strain rosettes with recovery data from superelements. More... | |
subroutine | initstrainrosettesfromcore (ierr) |
Initiates all strain rosettes that are on parts marked for recovery. More... | |
subroutine, public | initrecovery (sups, iop, trec1, ipsw, lpu, ierr) |
Initializes for superelement stress recovery. More... | |
subroutine, public | writerecoveryheaders (frsFileName, modelFileName, sups, bRat, iop, ierr) |
Initializes the stress- and strain gage recovery frs-files. More... | |
subroutine, public | closerecovery (finished, ierr) |
Closes files and deallocates memory associated with stress recovery. More... | |
subroutine, public | stressrecovery (sups, iStep, time, doSave, trec, trec2, tsav, lPrint, jpsw, lpu, ierr) |
Calculates internal displacements and stresses in superelements. More... | |
subroutine, public | gagerecovery (sups, iStep, time, lPrint, lpu, ierr) |
Calculates strain gage results for the superelements. More... | |
subroutine, public | savegageresults (sups, iStep, time, ierr) |
Save strain gage results to the results database file. More... | |
subroutine, public | flushrecoveryfiles (tsav, ierr) |
Flushes the strain gage results database file to disk. More... | |
subroutine, public | getgagerecoveryfiles (chnames) |
Returns the file names of the gage recovery results database files. More... | |
subroutine, public | writerosettes2ftn (sups, ierr) |
Writes a Fortran90 subroutine with the strain recovery matrices. More... | |
integer function, public | getstraingagessize () |
Returns the number of strain gage values. More... | |
subroutine, public | initgagestrains (lSave, data, ierr) |
Saves/restores the initial gage strains to/from an in-core array. More... | |
Variables | |
type(recparttype), dimension(:), allocatable, save | part |
Superelement recovery data container. More... | |
type(strainelementtype), dimension(:), pointer, save | strainrosettes => null() |
Strain rosette container. More... | |
Module with subroutines for recovery within the time integration loop.
This module contains data and subroutines for performing stress- and/or strain gage recovery during the time integration loop, by calling subroutines from the stress recovery solver.
subroutine, public stressrecoverymodule::closerecovery | ( | logical, intent(in) | finished, |
integer, intent(out) | ierr | ||
) |
Closes files and deallocates memory associated with stress recovery.
[in] | finished | If .true., also deallocate private recovery containers |
[out] | ierr | Error flag |
subroutine, public stressrecoverymodule::flushrecoveryfiles | ( | integer, intent(in) | tsav, |
integer, intent(out) | ierr | ||
) |
Flushes the strain gage results database file to disk.
[in] | tsav | Timer ID for file saving operations |
[out] | ierr | Error flag |
subroutine, public stressrecoverymodule::gagerecovery | ( | type(supeltype), dimension(:), intent(in) | sups, |
integer(i8), intent(in) | iStep, | ||
real(dp), intent(in) | time, | ||
integer, intent(in) | lPrint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Calculates strain gage results for the superelements.
[in] | sups | All superelements in the model |
[in] | iStep | Time increment counter |
[in] | time | Current simulation time |
[in] | lPrint | If zero, suppress all res-file output |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
subroutine, public stressrecoverymodule::getdeformation | ( | integer, intent(in) | id, |
real(dp), dimension(ndat), intent(out) | data, | ||
integer, intent(in) | ndat, | ||
integer, intent(inout) | idat | ||
) |
Returns deformation vector of the specified part.
[in] | id | Base ID of the FE part to return deformations for |
[in] | data | Array with deformation vector |
[in] | ndat | Size of data array |
idat | Running array index, negative on return if error occurred |
integer function, public stressrecoverymodule::getdeformationsize | ( | integer, intent(in) | id | ) |
Returns the size of deformation vector for the specified part.
[in] | id | Base ID of the FE part to return deformations for |
subroutine, public stressrecoverymodule::getgagerecoveryfiles | ( | character(len=*), dimension(:), intent(out) | chnames | ) |
Returns the file names of the gage recovery results database files.
[out] | chnames | List of results database file names |
integer function, public stressrecoverymodule::getstraingagessize |
Returns the number of strain gage values.
type(strainrosettetype) function, pointer, public stressrecoverymodule::getstrainrosette | ( | integer, intent(in) | id | ) |
Returns pointer to (first) strain rosette object with specified ID.
[in] | id | Base ID of the object to search for |
If the strain rosette object is not found, NULL is returned.
subroutine, public stressrecoverymodule::getstress | ( | integer, intent(in) | id, |
real(dp), dimension(ndat), intent(out) | data, | ||
integer, intent(in) | ndat, | ||
integer, intent(inout) | idat | ||
) |
Returns the array of von Mises stresses for the specified part.
[in] | id | Base ID of the FE part to return stresses for |
[in] | data | Array with von Mises stresses |
[in] | ndat | Size of data array |
idat | Running array index, negative on return if error occurred |
integer function, public stressrecoverymodule::getstresssize | ( | integer, intent(in) | id | ) |
Returns the size of von Mises stress array for the specified part.
[in] | id | Base ID of the FE part to return stresses for |
subroutine, public stressrecoverymodule::initgagestrains | ( | integer, intent(in) | lSave, |
real(dp), dimension(:), intent(inout) | data, | ||
integer, intent(out) | ierr | ||
) |
Saves/restores the initial gage strains to/from an in-core array.
[in] | lSave | Save to array if equal to 1, restore from it if equal to 2 |
data | Array with strain gage values | |
[out] | ierr | Error flag |
If lSave is 0, then this subroutine will do nothing, except for restoring the zeroInit flag to .false. for each strain gage.
subroutine, public stressrecoverymodule::initrecovery | ( | type(supeltype), dimension(:), intent(in) | sups, |
integer, intent(in) | iop, | ||
integer, intent(in) | trec1, | ||
integer, intent(in) | ipsw, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Initializes for superelement stress recovery.
[in] | sups | All superelements in the model |
[in] | iop | Flag telling what type of results to recover, see below |
[in] | trec1 | Timer ID for displacement recovery setup |
[in] | ipsw | Print switch for debug output |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
This subroutine performs all necessary preprocessing in order to recover internal nodal displacements and stresses during time integration. This involves allocation of additional data structures and loading the required substructure data from files associated with each superelement.
What type of results to recover is controlled by the input argument iop, which can have the following values:
subroutine stressrecoverymodule::initstrainrosettes | ( | integer, intent(in) | ipsw, |
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Initiates all strain rosettes with recovery data from superelements.
[in] | ipsw | Print switch for debug output |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
subroutine stressrecoverymodule::initstrainrosettesfromcore | ( | integer, intent(out) | ierr | ) |
Initiates all strain rosettes that are on parts marked for recovery.
[out] | ierr | Error flag |
This subroutine is obsolete/not used. Retained only for the historical reason.
subroutine, public stressrecoverymodule::readstrainrosettes | ( | integer, intent(in) | infp, |
integer, intent(out) | ierr | ||
) |
Initializes all strain rosette elements from the solver input file.
[in] | infp | File unit number for the solver input file |
[out] | ierr | Error flag |
subroutine, public stressrecoverymodule::savegageresults | ( | type(supeltype), dimension(:), intent(in) | sups, |
integer(i8), intent(in) | iStep, | ||
real(dp), intent(in) | time, | ||
integer, intent(out) | ierr | ||
) |
Save strain gage results to the results database file.
[in] | sups | All superelements in the model |
[in] | iStep | Time increment counter |
[in] | time | Current simulation time |
[out] | ierr | Error flag |
subroutine, public stressrecoverymodule::stressrecovery | ( | type(supeltype), dimension(:), intent(in) | sups, |
integer(i8), intent(in) | iStep, | ||
real(dp), intent(in) | time, | ||
logical, intent(in) | doSave, | ||
integer, intent(in) | trec, | ||
integer, intent(in) | trec2, | ||
integer, intent(in) | tsav, | ||
integer, intent(in) | lPrint, | ||
integer, intent(in) | jpsw, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Calculates internal displacements and stresses in superelements.
[in] | sups | All superelements in the model |
[in] | iStep | Time increment counter |
[in] | time | Current simulation time |
[in] | doSave | If .true., save the results to results database file |
[in] | trec | Timer ID for recovery operations |
[in] | trec2 | Timer ID for displacement recovery |
[in] | tsav | Timer ID for file saving operations |
[in] | lPrint | If zero, suppress all res-file output |
[in] | jpsw | Print switch for debug output |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
This subroutine is invoked once after each time/load increment in order to recover internal nodal displacements and von Mises stresses for the finite elements of the superelements during the time integration. If recovery for one (more more) element group has been requested, the internal displacements are calculated only for the nodes connected to the elements in the specified group(s), unless doSave is .false.
for the finite elements
subroutine, public stressrecoverymodule::writerecoveryheaders | ( | character(len=*), intent(in) | frsFileName, |
character(len=*), intent(in) | modelFileName, | ||
type(supeltype), dimension(:), intent(in) | sups, | ||
real(dp), intent(in) | bRat, | ||
integer, intent(in) | iop, | ||
integer, intent(out) | ierr | ||
) |
Initializes the stress- and strain gage recovery frs-files.
[in] | frsFileName | List of results database file names |
[in] | modelFileName | Name of the FEDEM model file |
[in] | sups | All superelements in the model |
[in] | bRat | Relative buffer size for the results database files |
[in] | iop | Flag telling what type of results to recover, see stressrecoverymodule::initrecovery |
[out] | ierr | Error flag |
subroutine, public stressrecoverymodule::writerosettes2ftn | ( | type(supeltype), dimension(:), intent(in) | sups, |
integer, intent(out) | ierr | ||
) |
Writes a Fortran90 subroutine with the strain recovery matrices.
[in] | sups | All superelements in the model |
[out] | ierr | Error flag |
This subroutine is obsolete/not used. Retained only for the historical reason.
|
private |
Superelement recovery data container.
|
private |
Strain rosette container.