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

Module with data types representing strain rosette objects. More...

Data Types

type  straingagetype
 Data type representing a single strain gage. More...
 
type  strainrosettetype
 Data type representing a strain rosette. More...
 
type  strainelementtype
 Data type representing a surface stress/strain recovery element. More...
 
interface  nullifyrosette
 Initializes a stress/strain recovery object. More...
 

Functions/Subroutines

subroutine readstrainelements (infp, strainRosettes, thisPart, err)
 Initializes strain elements with data from the solver input file. More...
 
subroutine, private nullifystrainrosette (rosette)
 Initializes a strainrosettemodule::strainrosettetype object. More...
 
subroutine, private nullifystrainelement (rosette)
 Initializes a strainrosettemodule::strainelementtype object. More...
 
subroutine deallocaterosette (rosette)
 Deallocates a strainrosettemodule::strainelementtype object. More...
 
subroutine checkrosette (ros, nodes, ierr)
 Checks the nodal ordering of a strain rosette element. More...
 
subroutine initstraingauges (gages, alphaGages, posInGl)
 Initializes the strain gage objects. More...
 
subroutine evaluatestraingages (gages, epsC, sigC)
 Evaluates the given strain gages based on given strain/stress state. More...
 
subroutine calcrosettestrains (rosette, displ, ierr)
 Evaluates the given strain rosette based on the given displacements. More...
 
subroutine calczerostartrosettestrains (rosette, displ, ierr)
 Evaluates the initial strain of a strain rosette. More...
 
subroutine printrosettestrains (rosette, time, lpu)
 Prints the current state of a strain rosette to ASCII file. More...
 
subroutine printinitialstrain (rosette, time, lpu)
 Prints the initial state of a strain rosette to ASCII file. More...
 
subroutine printrosetteheading (rosette, globalNodes, minex, posInGl, rosId, feId, lpu)
 Prints the ASCII file heading for a given strain rosette object. More...
 
subroutine calcelmcoordsystem (id, globalNodes, posInGl, X_el, T_el, lpu, ierr, useElCoordSys)
 Computes nodal coordinates and transformation matrix for an element. More...
 
subroutine initstrainrosette (rosette, H_el, madof, addSigma0, sigma0, iprint, lpu, ierr, useElCoordSys, openFiles, calcDisp, vgii)
 Computes strain-displacement matrices for all strain rosettes. More...
 
subroutine calcrosettedisplacements (rosette, madof, H_el, displ, supTr, lpu, ierr)
 Computes nodal displacements in a strain rosette. More...
 

Variables

character(len=14), dimension(4), parameter, private gagetype_p = (/'SINGLE_GAGE ', 'DOUBLE_GAGE_90', 'TRIPLE_GAGE_60', 'TRIPLE_GAGE_45'/)
 The allowable strain gage types. More...
 
integer, parameter singlegage_p = 1
 Along X-direction vector. More...
 
integer, parameter doublegage_p = 2
 90 degrees spread More...
 
integer, parameter triplegage1_p = 3
 60 degrees spread More...
 
integer, parameter triplegage2_p = 4
 45 degrees spread More...
 

Detailed Description

Module with data types representing strain rosette objects.

The module also contains subroutines for accessing the data, and to perform some calculations.

Function/Subroutine Documentation

◆ calcelmcoordsystem()

subroutine strainrosettemodule::calcelmcoordsystem ( type(idtype), intent(in)  id,
integer, dimension(:), intent(in)  globalNodes,
real(dp), dimension(:,:), intent(inout)  posInGl,
real(dp), dimension(:,:), intent(out)  X_el,
real(dp), dimension(:,:), intent(out)  T_el,
integer, intent(in)  lpu,
integer, intent(out)  ierr,
logical, intent(in), optional  useElCoordSys 
)

Computes nodal coordinates and transformation matrix for an element.

This subroutine extracts the global nodal coordinates for a strain-gage element and calculates its associated global-to-local transformation matrix. If the initial nodal ordering gives wrong Z-axis direction, the element nodes are reordered and the calculation is repeated.

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

◆ calcrosettedisplacements()

subroutine strainrosettemodule::calcrosettedisplacements ( type(strainelementtype), intent(inout)  rosette,
integer, dimension(:), intent(in)  madof,
real(rk), dimension(:,:), intent(in)  H_el,
real(rk), dimension(:), intent(in)  displ,
real(dp), dimension(:,:), intent(in)  supTr,
integer, intent(in)  lpu,
integer, intent(out)  ierr 
)

Computes nodal displacements in a strain rosette.

Author
Knut Morten Okstad
Date
31 May 2007
Here is the call graph for this function:

◆ calcrosettestrains()

subroutine strainrosettemodule::calcrosettestrains ( type(strainrosettetype), intent(inout)  rosette,
real(rk), dimension(:), intent(in)  displ,
integer, intent(out)  ierr 
)

Evaluates the given strain rosette based on the given displacements.

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

◆ calczerostartrosettestrains()

subroutine strainrosettemodule::calczerostartrosettestrains ( type(strainrosettetype), intent(inout)  rosette,
real(rk), dimension(:), intent(in)  displ,
integer, intent(out)  ierr 
)

Evaluates the initial strain of a strain rosette.

Author
Knut Morten Okstad
Date
30 May 2001
Here is the caller graph for this function:

◆ checkrosette()

subroutine strainrosettemodule::checkrosette ( type(strainelementtype), intent(inout)  ros,
integer, dimension(:), intent(in)  nodes,
integer, intent(out)  ierr 
)

Checks the nodal ordering of a strain rosette element.

Parameters
[out]rosThe strain rosette element to check orientation of
[in]nodesLocal node numbers of the element
[out]ierrError flag

Firstly, the node numbers of the strain rosette element is converted to external numbers. Then it is checked that the nodal ordering of the strain rosette yields a proper normal vector compared with its local Z-axis. The element nodes are otherwise swapped.

Author
Knut Morten Okstad
Date
21 Jan 2016
Here is the caller graph for this function:

◆ deallocaterosette()

subroutine strainrosettemodule::deallocaterosette ( type(strainelementtype), intent(inout)  rosette)

Deallocates a strainrosettemodule::strainelementtype object.

Author
Knut Morten Okstad
Date
23 Jan 2017

◆ evaluatestraingages()

subroutine strainrosettemodule::evaluatestraingages ( type(straingagetype), dimension(:), intent(inout)  gages,
real(dp), dimension(:), intent(in)  epsC,
real(dp), dimension(:), intent(in)  sigC 
)

Evaluates the given strain gages based on given strain/stress state.

Parameters
gagesThe strain gage objects to evaluate
[in]epsCCartesian strain vector
[in]sigCCartesian stress vector
Author
Knut Morten Okstad
Date
30 May 2001
Here is the caller graph for this function:

◆ initstraingauges()

subroutine strainrosettemodule::initstraingauges ( type(straingagetype), dimension(:), intent(inout)  gages,
real(dp), intent(in)  alphaGages,
real(dp), dimension(:,:), intent(in)  posInGl 
)

Initializes the strain gage objects.

Parameters
gagesThe strain gage objects to initialize
[in]alphaGagesAngle between each strain gage
[in]posInGlPosition matrix of the strain rosette owing the gages

This subroutine establishes the strain-gage direction vectors and the transformation from Cartesian strains to strains in the gage direction.

Author
Knut Morten Okstad
Date
25 May 2001
Here is the caller graph for this function:

◆ initstrainrosette()

subroutine strainrosettemodule::initstrainrosette ( type(strainelementtype), intent(inout)  rosette,
real(rk), dimension(:,:), intent(in)  H_el,
integer, dimension(:), intent(in)  madof,
logical, intent(in)  addSigma0,
real(dp), dimension(:), intent(inout), optional  sigma0,
integer, intent(in)  iprint,
integer, intent(in)  lpu,
integer, intent(out)  ierr,
logical, intent(in), optional  useElCoordSys,
logical, intent(in), optional  openFiles,
logical, intent(in), optional  calcDisp,
real(rk), dimension(:), intent(in), optional  vgii 
)

Computes strain-displacement matrices for all strain rosettes.

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

◆ nullifystrainelement()

subroutine, private strainrosettemodule::nullifystrainelement ( type(strainelementtype), intent(out)  rosette)
private

Initializes a strainrosettemodule::strainelementtype object.

Author
Knut Morten Okstad
Date
6 Feb 2004

◆ nullifystrainrosette()

subroutine, private strainrosettemodule::nullifystrainrosette ( type(strainrosettetype), intent(out)  rosette)
private

Initializes a strainrosettemodule::strainrosettetype object.

Author
Knut Morten Okstad
Date
30 May 2001

◆ printinitialstrain()

subroutine strainrosettemodule::printinitialstrain ( type(strainrosettetype), intent(inout)  rosette,
real(dp), intent(in)  time,
integer, intent(in)  lpu 
)

Prints the initial state of a strain rosette to ASCII file.

Author
Knut Morten Okstad
Date
25 May 2001
Here is the call graph for this function:

◆ printrosetteheading()

subroutine strainrosettemodule::printrosetteheading ( type(strainrosettetype), intent(in)  rosette,
integer, dimension(:), intent(in)  globalNodes,
integer, dimension(:), intent(in)  minex,
real(dp), dimension(:,:), intent(in)  posInGl,
integer, intent(in)  rosId,
integer, intent(in)  feId,
integer, intent(in)  lpu 
)

Prints the ASCII file heading for a given strain rosette object.

Author
Knut Morten Okstad
Date
25 May 2001
Here is the caller graph for this function:

◆ printrosettestrains()

subroutine strainrosettemodule::printrosettestrains ( type(strainrosettetype), intent(in)  rosette,
real(dp), intent(in)  time,
integer, intent(in)  lpu 
)

Prints the current state of a strain rosette to ASCII file.

Author
Knut Morten Okstad
Date
25 May 2001
Here is the caller graph for this function:

◆ readstrainelements()

subroutine strainrosettemodule::readstrainelements ( integer, intent(in)  infp,
type(strainelementtype), dimension(:), pointer  strainRosettes,
integer, intent(in), optional  thisPart,
integer, intent(out)  err 
)

Initializes strain elements with data from the solver input file.

Parameters
[in]infpFile unit number for the solver input file
[out]strainRosettesArray of strain rosette elements in the model
[in]thisPartIf given, only consider strain rosettes on this part
[out]errError flag
Author
Knut Morten Okstad
Date
6 Feb 2004
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ doublegage_p

integer, parameter strainrosettemodule::doublegage_p = 2

90 degrees spread

◆ gagetype_p

character(len=14), dimension(4), parameter, private strainrosettemodule::gagetype_p = (/'SINGLE_GAGE ', 'DOUBLE_GAGE_90', 'TRIPLE_GAGE_60', 'TRIPLE_GAGE_45'/)
private

The allowable strain gage types.

◆ singlegage_p

integer, parameter strainrosettemodule::singlegage_p = 1

Along X-direction vector.

◆ triplegage1_p

integer, parameter strainrosettemodule::triplegage1_p = 3

60 degrees spread

◆ triplegage2_p

integer, parameter strainrosettemodule::triplegage2_p = 4

45 degrees spread