diff --git a/src/commercialFEM_fileList.f90 b/src/commercialFEM_fileList.f90 index e2b04336f..ac4aa009a 100644 --- a/src/commercialFEM_fileList.f90 +++ b/src/commercialFEM_fileList.f90 @@ -19,6 +19,7 @@ #include "mesh_base.f90" #include "HDF5_utilities.f90" #include "results.f90" +#include "discretization.f90" #ifdef Abaqus #include "mesh_abaqus.f90" #endif diff --git a/src/discretization.f90 b/src/discretization.f90 index c90ce16ca..1a4666e1b 100644 --- a/src/discretization.f90 +++ b/src/discretization.f90 @@ -13,9 +13,12 @@ module discretization integer, public, protected :: & discretization_nIP, & discretization_nElem + + integer, dimension(:), allocatable :: & + discretization_homogenizationAt, & + discretization_microstructureAt - - real(pReal), dimension(:,:), allocatable :: & + real(pReal), dimension(:,:), allocatable :: & discretization_IPcoords0, & discretization_NodeCoords0, & discretization_IPcoords, & @@ -29,21 +32,26 @@ module discretization contains -subroutine discretization_init(nElem,IPcoords0,NodeCoords0) +subroutine discretization_init(homogenizationAt,microstructureAt,IPcoords0,NodeCoords0) - integer, intent(in) :: & - nElem + integer, dimension(:), intent(in) :: & + homogenizationAt, & + microstructureAt real(pReal), dimension(:,:), intent(in) :: & IPcoords0, & NodeCoords0 write(6,'(/,a)') ' <<<+- discretization init -+>>>' - - discretization_nElem = nElem + + discretization_nElem = size(microstructureAt,1) discretization_nIP = size(IPcoords0,2) + discretization_homogenizationAt = homogenizationAt + discretization_microstructureAt = microstructureAt + discretization_IPcoords0 = IPcoords0 discretization_IPcoords = IPcoords0 + discretization_NodeCoords0 = NodeCoords0 discretization_NodeCoords = NodeCoords0 @@ -51,7 +59,7 @@ end subroutine discretization_init subroutine discretization_results - +#if defined(PETSc) || defined(DAMASK_HDF5) real(pReal), dimension(:,:), allocatable :: u u = discretization_NodeCoords -discretization_NodeCoords0 @@ -59,7 +67,7 @@ subroutine discretization_results u = discretization_IPcoords -discretization_IPcoords0 call results_writeDataset('current',u,'u','IP displacements','m') - +#endif end subroutine discretization_results diff --git a/src/mesh_abaqus.f90 b/src/mesh_abaqus.f90 index 336fdb095..d32709478 100644 --- a/src/mesh_abaqus.f90 +++ b/src/mesh_abaqus.f90 @@ -9,9 +9,11 @@ module mesh use prec use mesh_base use geometry_plastic_nonlocal + use discretization implicit none private + integer, public, protected :: & mesh_NcpElems, & !< total number of CP elements in local mesh mesh_elemType, & !< Element type of the mesh (only support homogeneous meshes) @@ -519,6 +521,9 @@ subroutine mesh_init(ip,el) theMesh%homogenizationAt = mesh_element(3,:) theMesh%microstructureAt = mesh_element(4,:) + call discretization_init(mesh_element(3,:),mesh_element(4,:),& + reshape(mesh_ipCoordinates,[3,theMesh%elem%nIPs*theMesh%nElems]),& + mesh_node0) contains diff --git a/src/mesh_grid.f90 b/src/mesh_grid.f90 index 6034686ff..bc7eb4880 100644 --- a/src/mesh_grid.f90 +++ b/src/mesh_grid.f90 @@ -197,7 +197,7 @@ subroutine mesh_init(ip,el) theMesh%homogenizationAt = mesh_element(3,:) theMesh%microstructureAt = mesh_element(4,:) !!!!!!!!!!!!!!!!!!!!!!!! - call discretization_init(product(grid), & + call discretization_init(mesh_element(3,:),mesh_element(4,:),& reshape(mesh_ipCoordinates,[3,grid(1)*grid(2)*grid3]),& mesh_node0) diff --git a/src/mesh_marc.f90 b/src/mesh_marc.f90 index e6aa69f7a..2d2ee9b10 100644 --- a/src/mesh_marc.f90 +++ b/src/mesh_marc.f90 @@ -375,6 +375,10 @@ subroutine mesh_init(ip,el) theMesh%homogenizationAt = mesh_element(3,:) theMesh%microstructureAt = mesh_element(4,:) + + call discretization_init(mesh_element(3,:),mesh_element(4,:),& + reshape(mesh_ipCoordinates,[3,theMesh%elem%nIPs*theMesh%nElems]),& + mesh_node0) end subroutine mesh_init