Sets up the mesh for the solver MSC.Marc. More...
Data Types | |
| type | tcellnodedefinition | 
Functions/Subroutines | |
| subroutine, public | discretization_marc_init (ip, el) | 
| initializes the mesh by calling all necessary private routines the mesh module Order and routines strongly depend on type of solver  More... | |
| subroutine | writegeometry (elem, connectivity_elem, connectivity_cell, coordinates_nodes, coordinates_points) | 
| Write all information needed for the DADF5 geometry.  More... | |
| subroutine | inputread (elem, node0_elem, connectivity_elem, microstructureAt, homogenizationAt) | 
| Read mesh from marc input file.  More... | |
| subroutine | inputread_fileformat (fileFormat, fileContent) | 
| Figures out version of Marc input file format.  More... | |
| subroutine | inputread_tablestyles (initialcond, hypoelastic, fileContent) | 
| Figures out table styles for initial cond and hypoelastic.  More... | |
| subroutine | inputread_matnumber (matNumber, tableStyle, fileContent) | 
| Figures out material number of hypoelastic material.  More... | |
| subroutine | inputread_nnodesandelements (nNodes, nElems, fileContent) | 
| Count overall number of nodes and elements.  More... | |
| subroutine | inputread_nelemsets (nElemSets, maxNelemInSet, fileContent) | 
| Count overall number of element sets in mesh.  More... | |
| subroutine | inputread_mapelemsets (nameElemSet, mapElemSet, fileContent) | 
| map element sets  More... | |
| subroutine | inputread_mapelems (FEM2DAMASK, nElems, nNodesPerElem, fileContent) | 
| Maps elements from FE ID to internal (consecutive) representation.  More... | |
| subroutine | inputread_mapnodes (FEM2DAMASK, nNodes, fileContent) | 
| Maps node from FE ID to internal (consecutive) representation.  More... | |
| subroutine | inputread_elemnodes (nodes, nNode, fileContent) | 
| store x,y,z coordinates of all nodes in mesh.  More... | |
| subroutine | inputread_elemtype (elem, nElem, fileContent) | 
| Gets element type (and checks if the whole mesh comprises of only one type)  More... | |
| integer function, dimension(nnodes, nelem) | inputread_connectivityelem (nElem, nNodes, fileContent) | 
| Stores node IDs.  More... | |
| subroutine | inputread_microstructureandhomogenization (microstructureAt, homogenizationAt, nElem, nNodes, nameElemSet, mapElemSet, initialcondTableStyle, fileContent) | 
| Stores homogenization and microstructure ID.  More... | |
| subroutine | buildcells (connectivity_cell, cellNodeDefinition, elem, connectivity_elem) | 
| Calculates cell node coordinates from element node coordinates.  More... | |
| subroutine | buildcellnodes (node_cell, definition, node_elem) | 
| Calculates cell node coordinates from element node coordinates.  More... | |
| subroutine | buildipcoordinates (IPcoordinates, connectivity_cell, node_cell) | 
| Calculates IP coordinates as center of cell.  More... | |
| real(preal) function, dimension(elem%nips, size(connectivity, 3)) | ipvolume (elem, node, connectivity) | 
| Calculates IP volume.  More... | |
| real(preal) function, dimension(3, elem%nipneighbors, elem%nips, nelem) | ipareanormal (elem, nElem, connectivity, node) | 
| calculation of IP interface areas  More... | |
| integer function, dimension(1+maxn) | continuousintvalues (fileContent, maxN, lookupName, lookupMap, lookupMaxN) | 
| return integer list corresponding to items in consecutive lines. First integer in array is counter  More... | |
| logical function | containsrange (str, chunkPos) | 
| return whether a line contains a range ('X to Y')  More... | |
Variables | |
| type(tcellnodedefinition), dimension(:), allocatable | cellnodedefinition | 
| real(preal), public, protected | mesh_unitlength | 
| physical length of one unit in mesh  More... | |
| integer, dimension(:), allocatable, public | mesh_fem2damask_elem | 
| DAMASK element ID for Marc element ID.  More... | |
| integer, dimension(:), allocatable, public | mesh_fem2damask_node | 
| DAMASK node ID for Marc node ID.  More... | |
Sets up the mesh for the solver MSC.Marc.
      
  | 
  private | 
Calculates cell node coordinates from element node coordinates.
| [out] | node_cell | cell node coordinates | 
| [in] | definition | cell node definition (weights and parents) | 
| [in] | node_elem | element nodes | 
Definition at line 10933 of file DAMASK_marc.f90.
References cellnodedefinition.
Referenced by discretization_marc_init().
 Here is the caller graph for this function:
      
  | 
  private | 
Calculates cell node coordinates from element node coordinates.
Definition at line 10776 of file DAMASK_marc.f90.
References math::math_sort(), and uniquerows().
Referenced by discretization_marc_init().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Calculates IP coordinates as center of cell.
| [out] | ipcoordinates | cell-center/IP coordinates | 
| [in] | connectivity_cell | connectivity for each cell | 
| [in] | node_cell | cell node coordinates | 
Definition at line 10963 of file DAMASK_marc.f90.
Referenced by discretization_marc_init().
 Here is the caller graph for this function:
      
  | 
  private | 
return whether a line contains a range ('X to Y')
| [in] | chunkpos | positions of start and end of each tag/chunk in given string | 
Definition at line 11153 of file DAMASK_marc.f90.
References io::io_lc(), and io::io_stringvalue().
Referenced by continuousintvalues(), and inputread_nelemsets().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
return integer list corresponding to items in consecutive lines. First integer in array is counter
ints concatenated by "c" as last char, range of a "to" b, or named set
| [in] | filecontent | file content, separated per lines | 
Definition at line 11097 of file DAMASK_marc.f90.
References containsrange(), io::io_intvalue(), io::io_lc(), io::io_stringpos(), and io::io_stringvalue().
Referenced by inputread_mapelemsets(), and inputread_microstructureandhomogenization().
 Here is the call graph for this function:
 Here is the caller graph for this function:| subroutine, public discretization_marc::discretization_marc_init | ( | integer, intent(in) | ip, | 
| integer, intent(in) | el | ||
| ) | 
initializes the mesh by calling all necessary private routines the mesh module Order and routines strongly depend on type of solver
Definition at line 10093 of file DAMASK_marc.f90.
References buildcellnodes(), buildcells(), buildipcoordinates(), fesolving::calcmode, cellnodedefinition, debug::debug_e, debug::debug_i, discretization::discretization_init(), fesolving::fesolving_execelem, fesolving::fesolving_execip, geometry_plastic_nonlocal::geometry_plastic_nonlocal_results(), geometry_plastic_nonlocal::geometry_plastic_nonlocal_setiparea(), geometry_plastic_nonlocal::geometry_plastic_nonlocal_setipareanormal(), geometry_plastic_nonlocal::geometry_plastic_nonlocal_setipvolume(), inputread(), io::io_error(), ipareanormal(), ipvolume(), mesh_fem2damask_elem, mesh_unitlength, numerics::numerics_unitlength, and writegeometry().
Referenced by cpfem_initall().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Read mesh from marc input file.
| [out] | node0_elem | node x,y,z coordinates (initially!) | 
Definition at line 10214 of file DAMASK_marc.f90.
References damask_interface::getsolverjobname(), damask_interface::inputfileextension, inputread_connectivityelem(), inputread_elemnodes(), inputread_elemtype(), inputread_fileformat(), inputread_mapelems(), inputread_mapelemsets(), inputread_mapnodes(), inputread_matnumber(), inputread_microstructureandhomogenization(), inputread_nnodesandelements(), inputread_tablestyles(), io::io_read_ascii(), mesh_fem2damask_elem, and mesh_fem2damask_node.
Referenced by discretization_marc_init().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Stores node IDs.
| [in] | nnodes | number of nodes per element | 
| [in] | filecontent | file content, separated per lines | 
Definition at line 10670 of file DAMASK_marc.f90.
References io::io_intvalue(), io::io_lc(), io::io_stringpos(), io::io_stringvalue(), mesh_fem2damask_elem, and mesh_fem2damask_node.
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
store x,y,z coordinates of all nodes in mesh.
| [in] | filecontent | file content, separated per lines | 
Definition at line 10554 of file DAMASK_marc.f90.
References io::io_floatvalue(), io::io_intvalue(), io::io_lc(), io::io_stringpos(), io::io_stringvalue(), mesh_fem2damask_node, and mesh_unitlength.
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Gets element type (and checks if the whole mesh comprises of only one type)
| [in] | filecontent | file content, separated per lines | 
Definition at line 10587 of file DAMASK_marc.f90.
References io::io_error(), io::io_lc(), io::io_stringpos(), io::io_stringvalue(), and mapelemtype().
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Figures out version of Marc input file format.
| [in] | filecontent | file content, separated per lines | 
Definition at line 10279 of file DAMASK_marc.f90.
References io::io_intvalue(), io::io_lc(), io::io_stringpos(), and io::io_stringvalue().
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Maps elements from FE ID to internal (consecutive) representation.
| [in] | nnodesperelem | number of nodes per element | 
| [in] | filecontent | file content, separated per lines | 
| nElems | number of elements | 
Definition at line 10474 of file DAMASK_marc.f90.
References io::io_intvalue(), io::io_lc(), io::io_stringpos(), io::io_stringvalue(), and math::math_sort().
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
map element sets
| [in] | filecontent | file content, separated per lines | 
Definition at line 10441 of file DAMASK_marc.f90.
References continuousintvalues(), inputread_nelemsets(), io::io_lc(), io::io_stringpos(), and io::io_stringvalue().
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Maps node from FE ID to internal (consecutive) representation.
| [in] | nnodes | number of nodes | 
| [in] | filecontent | file content, separated per lines | 
Definition at line 10518 of file DAMASK_marc.f90.
References io::io_intvalue(), io::io_lc(), io::io_stringpos(), io::io_stringvalue(), and math::math_sort().
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Figures out material number of hypoelastic material.
| [in] | filecontent | file content, separated per lines | 
Definition at line 10330 of file DAMASK_marc.f90.
References io::io_intvalue(), io::io_lc(), io::io_stringpos(), and io::io_stringvalue().
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Stores homogenization and microstructure ID.
| [in] | mapelemset | list of elements in elementSet | 
| [in] | filecontent | file content, separated per lines | 
| nNodes | number of nodes per element | 
Definition at line 10721 of file DAMASK_marc.f90.
References continuousintvalues(), io::io_floatvalue(), io::io_intvalue(), io::io_lc(), io::io_stringpos(), io::io_stringvalue(), and mesh_fem2damask_elem.
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Count overall number of element sets in mesh.
| [in] | filecontent | file content, separated per lines | 
Definition at line 10395 of file DAMASK_marc.f90.
References containsrange(), io::io_intvalue(), io::io_lc(), io::io_stringpos(), and io::io_stringvalue().
Referenced by inputread_mapelemsets().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Count overall number of nodes and elements.
| [in] | filecontent | file content, separated per lines | 
Definition at line 10366 of file DAMASK_marc.f90.
References io::io_intvalue(), io::io_lc(), io::io_stringpos(), and io::io_stringvalue().
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Figures out table styles for initial cond and hypoelastic.
| [in] | filecontent | file content, separated per lines | 
Definition at line 10302 of file DAMASK_marc.f90.
References io::io_intvalue(), io::io_lc(), io::io_stringpos(), and io::io_stringvalue().
Referenced by inputread().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
calculation of IP interface areas
Definition at line 11046 of file DAMASK_marc.f90.
References math::math_cross().
Referenced by discretization_marc_init().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Calculates IP volume.
The IP volume is calculated differently depending on the cell type. 2D cells assume an element depth of 1.0
Definition at line 10988 of file DAMASK_marc.f90.
References math::math_areatriangle(), math::math_cross(), and math::math_voltetrahedron().
Referenced by discretization_marc_init().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Write all information needed for the DADF5 geometry.
Definition at line 10170 of file DAMASK_marc.f90.
References results::results_addgroup(), results::results_closegroup(), results::results_closejobfile(), and results::results_openjobfile().
Referenced by discretization_marc_init().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Definition at line 10074 of file DAMASK_marc.f90.
Referenced by buildcellnodes(), and discretization_marc_init().
| integer, dimension(:), allocatable, public discretization_marc::mesh_fem2damask_elem | 
DAMASK element ID for Marc element ID.
Definition at line 10079 of file DAMASK_marc.f90.
Referenced by cpfem_general(), discretization_marc_init(), flux(), hypela2(), inputread(), inputread_connectivityelem(), and inputread_microstructureandhomogenization().
| integer, dimension(:), allocatable, public discretization_marc::mesh_fem2damask_node | 
DAMASK node ID for Marc node ID.
Definition at line 10079 of file DAMASK_marc.f90.
Referenced by inputread(), inputread_connectivityelem(), and inputread_elemnodes().
| real(preal), public, protected discretization_marc::mesh_unitlength | 
physical length of one unit in mesh
Definition at line 10076 of file DAMASK_marc.f90.
Referenced by discretization_marc_init(), and inputread_elemnodes().