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().
|
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().
|
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().
|
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().
|
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().
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
private |
calculation of IP interface areas
Definition at line 11046 of file DAMASK_marc.f90.
References math::math_cross().
Referenced by discretization_marc_init().
|
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().
|
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().
|
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().