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

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

Detailed Description

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.

Function/Subroutine Documentation

◆ closerecovery()

subroutine, public stressrecoverymodule::closerecovery ( logical, intent(in)  finished,
integer, intent(out)  ierr 
)

Closes files and deallocates memory associated with stress recovery.

Parameters
[in]finishedIf .true., also deallocate private recovery containers
[out]ierrError flag
Author
Knut Morten Okstad
Date
27 Oct 2015
Here is the call graph for this function:
Here is the caller graph for this function:

◆ flushrecoveryfiles()

subroutine, public stressrecoverymodule::flushrecoveryfiles ( integer, intent(in)  tsav,
integer, intent(out)  ierr 
)

Flushes the strain gage results database file to disk.

Parameters
[in]tsavTimer ID for file saving operations
[out]ierrError flag
Author
Knut Morten Okstad
Date
3 Feb 2016
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gagerecovery()

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.

Parameters
[in]supsAll superelements in the model
[in]iStepTime increment counter
[in]timeCurrent simulation time
[in]lPrintIf zero, suppress all res-file output
[in]lpuFile unit number for res-file output
[out]ierrError flag
Author
Knut Morten Okstad
Date
27 Oct 2015
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getdeformation()

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.

Parameters
[in]idBase ID of the FE part to return deformations for
[in]dataArray with deformation vector
[in]ndatSize of data array
idatRunning array index, negative on return if error occurred
Author
Runar Heggelien Refsnaes
Date
30 Oct 2017
Here is the caller graph for this function:

◆ getdeformationsize()

integer function, public stressrecoverymodule::getdeformationsize ( integer, intent(in)  id)

Returns the size of deformation vector for the specified part.

Parameters
[in]idBase ID of the FE part to return deformations for
Author
Runar Heggelien Refsnaes
Date
30 Oct 2017
Here is the caller graph for this function:

◆ getgagerecoveryfiles()

subroutine, public stressrecoverymodule::getgagerecoveryfiles ( character(len=*), dimension(:), intent(out)  chnames)

Returns the file names of the gage recovery results database files.

Parameters
[out]chnamesList of results database file names
Author
Knut Morten Okstad
Date
13 May 2020
Here is the caller graph for this function:

◆ getstraingagessize()

integer function, public stressrecoverymodule::getstraingagessize

Returns the number of strain gage values.

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

◆ getstrainrosette()

type(strainrosettetype) function, pointer, public stressrecoverymodule::getstrainrosette ( integer, intent(in)  id)

Returns pointer to (first) strain rosette object with specified ID.

Parameters
[in]idBase ID of the object to search for

If the strain rosette object is not found, NULL is returned.

Author
Knut Morten Okstad
Date
7 Sep 2016
Here is the caller graph for this function:

◆ getstress()

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.

Parameters
[in]idBase ID of the FE part to return stresses for
[in]dataArray with von Mises stresses
[in]ndatSize of data array
idatRunning array index, negative on return if error occurred
Author
Runar Heggelien Refsnaes
Date
31 Oct 2017
Here is the caller graph for this function:

◆ getstresssize()

integer function, public stressrecoverymodule::getstresssize ( integer, intent(in)  id)

Returns the size of von Mises stress array for the specified part.

Parameters
[in]idBase ID of the FE part to return stresses for
Author
Runar Heggelien Refsnaes
Date
30 Oct 2017
Here is the caller graph for this function:

◆ initgagestrains()

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.

Parameters
[in]lSaveSave to array if equal to 1, restore from it if equal to 2
dataArray with strain gage values
[out]ierrError flag

If lSave is 0, then this subroutine will do nothing, except for restoring the zeroInit flag to .false. for each strain gage.

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

◆ initrecovery()

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.

Parameters
[in]supsAll superelements in the model
[in]iopFlag telling what type of results to recover, see below
[in]trec1Timer ID for displacement recovery setup
[in]ipswPrint switch for debug output
[in]lpuFile unit number for res-file output
[out]ierrError 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:

  • = 1: Deformations and von Mises stresses
  • = 2: Strain gages
  • = 3: As both 1 and 2
  • A negative value implies loading substructure data from in-core arrays residing in a shared library, instead of reading from files.
Author
Knut Morten Okstad
Date
27 Oct 2015
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initstrainrosettes()

subroutine stressrecoverymodule::initstrainrosettes ( integer, intent(in)  ipsw,
integer, intent(in)  lpu,
integer, intent(out)  ierr 
)

Initiates all strain rosettes with recovery data from superelements.

Parameters
[in]ipswPrint switch for debug output
[in]lpuFile unit number for res-file output
[out]ierrError flag
Author
Knut Morten Okstad
Date
15 Jan 2016
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initstrainrosettesfromcore()

subroutine stressrecoverymodule::initstrainrosettesfromcore ( integer, intent(out)  ierr)

Initiates all strain rosettes that are on parts marked for recovery.

Parameters
[out]ierrError flag

This subroutine is obsolete/not used. Retained only for the historical reason.

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

◆ readstrainrosettes()

subroutine, public stressrecoverymodule::readstrainrosettes ( integer, intent(in)  infp,
integer, intent(out)  ierr 
)

Initializes all strain rosette elements from the solver input file.

Parameters
[in]infpFile unit number for the solver input file
[out]ierrError flag
Author
Knut Morten Okstad
Date
15 Jan 2016
Here is the call graph for this function:
Here is the caller graph for this function:

◆ savegageresults()

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.

Parameters
[in]supsAll superelements in the model
[in]iStepTime increment counter
[in]timeCurrent simulation time
[out]ierrError flag
Author
Knut Morten Okstad
Date
14 May 2020
Here is the caller graph for this function:

◆ stressrecovery()

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.

Parameters
[in]supsAll superelements in the model
[in]iStepTime increment counter
[in]timeCurrent simulation time
[in]doSaveIf .true., save the results to results database file
[in]trecTimer ID for recovery operations
[in]trec2Timer ID for displacement recovery
[in]tsavTimer ID for file saving operations
[in]lPrintIf zero, suppress all res-file output
[in]jpswPrint switch for debug output
[in]lpuFile unit number for res-file output
[out]ierrError 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

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

◆ writerecoveryheaders()

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.

Parameters
[in]frsFileNameList of results database file names
[in]modelFileNameName of the FEDEM model file
[in]supsAll superelements in the model
[in]bRatRelative buffer size for the results database files
[in]iopFlag telling what type of results to recover, see stressrecoverymodule::initrecovery
[out]ierrError flag
Author
Knut Morten Okstad
Date
3 Feb 2016
Here is the call graph for this function:
Here is the caller graph for this function:

◆ writerosettes2ftn()

subroutine, public stressrecoverymodule::writerosettes2ftn ( type(supeltype), dimension(:), intent(in)  sups,
integer, intent(out)  ierr 
)

Writes a Fortran90 subroutine with the strain recovery matrices.

Parameters
[in]supsAll superelements in the model
[out]ierrError flag

This subroutine is obsolete/not used. Retained only for the historical reason.

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

Variable Documentation

◆ part

type(recparttype), dimension(:), allocatable, save stressrecoverymodule::part
private

Superelement recovery data container.

◆ strainrosettes

type(strainelementtype), dimension(:), pointer, save stressrecoverymodule::strainrosettes => null()
private

Strain rosette container.