From 5b5a6ceaacbcfa4c5ec7cfe84802dbe99fafa37d Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 29 Apr 2014 17:50:59 +0000 Subject: [PATCH] makefile modified not to link against wrong libraries when using PETSc, reading in of values in phenopowerlaw improved, HDF5 in mesh --- code/Makefile | 6 +- code/constitutive_phenopowerlaw.f90 | 107 ++++++++++++++++------------ code/mesh.f90 | 18 +++-- 3 files changed, 77 insertions(+), 54 deletions(-) diff --git a/code/Makefile b/code/Makefile index ae72b2af1..26ba69a4d 100644 --- a/code/Makefile +++ b/code/Makefile @@ -359,15 +359,15 @@ COMPILED_FILES = prec.o DAMASK_spectral_interface.o IO.o libs.o numerics.o debug ifdef PETSC_DIR PETSC_FILES = DAMASK_spectral_solverAL.o \ - DAMASK_spectral_solverBasicPETSc.o \ - DAMASK_spectral_solverPolarisation.o + DAMASK_spectral_solverBasicPETSc.o \ + DAMASK_spectral_solverPolarisation.o COMPILED_FILES += $(PETSC_FILES) endif DAMASK_spectral.exe: DAMASK_spectral_driver.o $(PREFIX) $(COMPILERNAME) $(OPENMP_FLAG_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(MAXOPTI)_$(F90)) \ -o DAMASK_spectral.exe DAMASK_spectral_driver.o \ - $(COMPILED_FILES) $(LIB_DIRS) $(LIBRARIES) $(RUN_PATH) $(SUFFIX) + $(COMPILED_FILES) $(LIBRARIES) $(LIB_DIRS) $(RUN_PATH) $(SUFFIX) DAMASK_spectral_driver.o: DAMASK_spectral_driver.f90 DAMASK_spectral_solverBasic.o $(PETSC_FILES) $(PREFIX) $(COMPILERNAME) $(COMPILE_MAXOPTI) -c DAMASK_spectral_driver.f90 $(SUFFIX) diff --git a/code/constitutive_phenopowerlaw.f90 b/code/constitutive_phenopowerlaw.f90 index 49a2f650e..20c9795c1 100644 --- a/code/constitutive_phenopowerlaw.f90 +++ b/code/constitutive_phenopowerlaw.f90 @@ -150,6 +150,7 @@ subroutine constitutive_phenopowerlaw_init(fileUnit) character(len=65536) :: & tag = '', & line = '' + real(pReal), dimension(:), allocatable :: tempPerSlip write(6,'(/,a)') ' <<<+- constitutive_'//PLASTICITY_PHENOPOWERLAW_label//' init -+>>>' write(6,'(a)') ' $Id$' @@ -232,6 +233,8 @@ subroutine constitutive_phenopowerlaw_init(fileUnit) Nchunks_TwinSlip = maxval(lattice_interactionTwinSlip(:,:,phase)) Nchunks_TwinTwin = maxval(lattice_interactionTwinTwin(:,:,phase)) Nchunks_nonSchmid = lattice_NnonSchmid(phase) + if(allocated(tempPerSlip)) deallocate(tempPerSlip) + allocate(tempPerSlip(Nchunks_SlipFamilies)) endif cycle ! skip to next line endif @@ -271,42 +274,80 @@ subroutine constitutive_phenopowerlaw_init(fileUnit) case default call IO_error(105_pInt,ext_msg=IO_stringValue(line,positions,2_pInt)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') end select +!-------------------------------------------------------------------------------------------------- +! parameters depending on slip number of twin families case ('nslip') - if (positions(1) < 1_pInt + Nchunks_SlipFamilies) & + if (positions(1) < Nchunks_SlipFamilies + 1_pInt) & call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') + if (positions(1) > Nchunks_SlipFamilies + 1_pInt) & + call IO_error(150_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') Nchunks_SlipFamilies = positions(1) - 1_pInt do j = 1_pInt, Nchunks_SlipFamilies - constitutive_phenopowerlaw_Nslip(j,instance) = IO_intValue(line,positions,1_pInt+j) + constitutive_phenopowerlaw_Nslip(j,instance) = IO_intValue(line,positions,1_pInt+j) enddo - case ('gdot0_slip') - constitutive_phenopowerlaw_gdot0_slip(instance) = IO_floatValue(line,positions,2_pInt) - case ('n_slip') - constitutive_phenopowerlaw_n_slip(instance) = IO_floatValue(line,positions,2_pInt) - case ('tau0_slip') - do j = 1_pInt,Nchunks_SlipFamilies - constitutive_phenopowerlaw_tau0_slip(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo - case ('tausat_slip') + case ('tausat_slip','tau0_slip') do j = 1_pInt, Nchunks_SlipFamilies - constitutive_phenopowerlaw_tausat_slip(j,instance) = IO_floatValue(line,positions,1_pInt+j) + tempPerSlip(j) = IO_floatValue(line,positions,1_pInt+j) enddo - case ('a_slip', 'w0_slip') - constitutive_phenopowerlaw_a_slip(instance) = IO_floatValue(line,positions,2_pInt) + select case(tag) + case ('tausat_slip') + constitutive_phenopowerlaw_tausat_slip(1:Nchunks_SlipFamilies,instance) = tempPerSlip(1:Nchunks_SlipFamilies) + case ('tau0_slip') + constitutive_phenopowerlaw_tau0_slip(1:Nchunks_SlipFamilies,instance) = tempPerSlip(1:Nchunks_SlipFamilies) + end select +!-------------------------------------------------------------------------------------------------- +! parameters depending on slip number of twin families case ('ntwin') - if (positions(1) < 1_pInt + Nchunks_TwinFamilies) & - call IO_warning(51_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') + if (positions(1) < Nchunks_TwinFamilies + 1_pInt) & + call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') + if (positions(1) > Nchunks_TwinFamilies + 1_pInt) & + call IO_error(150_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') Nchunks_TwinFamilies = positions(1) - 1_pInt do j = 1_pInt, Nchunks_TwinFamilies - constitutive_phenopowerlaw_Ntwin(j,instance) = IO_intValue(line,positions,1_pInt+j) + constitutive_phenopowerlaw_Ntwin(j,instance) = IO_intValue(line,positions,1_pInt+j) enddo - case ('gdot0_twin') - constitutive_phenopowerlaw_gdot0_twin(instance) = IO_floatValue(line,positions,2_pInt) - case ('n_twin') - constitutive_phenopowerlaw_n_twin(instance) = IO_floatValue(line,positions,2_pInt) case ('tau0_twin') do j = 1_pInt, Nchunks_TwinFamilies constitutive_phenopowerlaw_tau0_twin(j,instance) = IO_floatValue(line,positions,1_pInt+j) enddo +!-------------------------------------------------------------------------------------------------- +! parameters depending on number of interactions + case ('interaction_sliptwin') + if (positions(1) < 1_pInt + Nchunks_SlipTwin) & + call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') + do j = 1_pInt, Nchunks_SlipTwin + constitutive_phenopowerlaw_interaction_SlipTwin(j,instance) = IO_floatValue(line,positions,1_pInt+j) + enddo + case ('interaction_twinslip') + if (positions(1) < 1_pInt + Nchunks_TwinSlip) & + call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') + do j = 1_pInt, Nchunks_TwinSlip + constitutive_phenopowerlaw_interaction_TwinSlip(j,instance) = IO_floatValue(line,positions,1_pInt+j) + enddo + case ('interaction_twintwin') + if (positions(1) < 1_pInt + Nchunks_TwinTwin) & + call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') + do j = 1_pInt, Nchunks_TwinTwin + constitutive_phenopowerlaw_interaction_TwinTwin(j,instance) = IO_floatValue(line,positions,1_pInt+j) + enddo + case ('nonschmid_coefficients') + if (positions(1) < 1_pInt + Nchunks_nonSchmid) & + call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') + do j = 1_pInt,Nchunks_nonSchmid + constitutive_phenopowerlaw_nonSchmidCoeff(j,instance) = IO_floatValue(line,positions,1_pInt+j) + enddo +!-------------------------------------------------------------------------------------------------- +! parameters independent of number of slip/twin systems + case ('gdot0_slip') + constitutive_phenopowerlaw_gdot0_slip(instance) = IO_floatValue(line,positions,2_pInt) + case ('n_slip') + constitutive_phenopowerlaw_n_slip(instance) = IO_floatValue(line,positions,2_pInt) + case ('a_slip', 'w0_slip') + constitutive_phenopowerlaw_a_slip(instance) = IO_floatValue(line,positions,2_pInt) + case ('gdot0_twin') + constitutive_phenopowerlaw_gdot0_twin(instance) = IO_floatValue(line,positions,2_pInt) + case ('n_twin') + constitutive_phenopowerlaw_n_twin(instance) = IO_floatValue(line,positions,2_pInt) case ('s_pr') constitutive_phenopowerlaw_spr(instance) = IO_floatValue(line,positions,2_pInt) case ('twin_b') @@ -338,30 +379,6 @@ subroutine constitutive_phenopowerlaw_init(fileUnit) do j = 1_pInt, Nchunks_SlipSlip constitutive_phenopowerlaw_interaction_SlipSlip(j,instance) = IO_floatValue(line,positions,1_pInt+j) enddo - case ('interaction_sliptwin') - if (positions(1) < 1_pInt + Nchunks_SlipTwin) & - call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') - do j = 1_pInt, Nchunks_SlipTwin - constitutive_phenopowerlaw_interaction_SlipTwin(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo - case ('interaction_twinslip') - if (positions(1) < 1_pInt + Nchunks_TwinSlip) & - call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') - do j = 1_pInt, Nchunks_TwinSlip - constitutive_phenopowerlaw_interaction_TwinSlip(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo - case ('interaction_twintwin') - if (positions(1) < 1_pInt + Nchunks_TwinTwin) & - call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') - do j = 1_pInt, Nchunks_TwinTwin - constitutive_phenopowerlaw_interaction_TwinTwin(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo - case ('nonschmid_coefficients') - if (positions(1) < 1_pInt + Nchunks_nonSchmid) & - call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') - do j = 1_pInt,Nchunks_nonSchmid - constitutive_phenopowerlaw_nonSchmidCoeff(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo case default call IO_error(210_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_PHENOPOWERLAW_label//')') end select diff --git a/code/mesh.f90 b/code/mesh.f90 index 63efee56a..b59ffba75 100644 --- a/code/mesh.f90 +++ b/code/mesh.f90 @@ -8,7 +8,7 @@ !> @author Krishna Komerla, Max-Planck-Institut für Eisenforschung GmbH !> @brief Sets up the mesh for the solvers MSC.Marc, Abaqus and the spectral solver !-------------------------------------------------------------------------------------------------- -module mesh +module mesh use, intrinsic :: iso_c_binding use prec, only: pReal, pInt @@ -5076,9 +5076,6 @@ end subroutine mesh_build_FEdata !> @brief writes out initial cell geometry !-------------------------------------------------------------------------------------------------- subroutine mesh_write_cellGeom - - - use DAMASK_interface, only: & getSolverJobName, & getSolverWorkingDirectoryName @@ -5094,8 +5091,12 @@ subroutine mesh_write_cellGeom HDF5_mappingCells #endif implicit none - integer(I4P), dimension(1:mesh_Ncells) :: celltype + integer(I4P), dimension(1:mesh_Ncells) :: celltype integer(I4P), dimension(mesh_Ncells*(1_pInt+FE_maxNcellnodesPerCell)) :: cellconnection +#ifdef HDF + integer(pInt), dimension(mesh_Ncells*FE_maxNcellnodesPerCell) :: cellconnectionHDF5 + integer(pInt) :: j2=0_pInt +#endif integer(I4P):: error integer(I4P):: g, c, e, CellID, i, j @@ -5110,10 +5111,15 @@ subroutine mesh_write_cellGeom cellconnection(j+1_pInt:j+FE_NcellnodesPerCell(c)+1_pInt) & = [FE_NcellnodesPerCell(c),mesh_cell(1:FE_NcellnodesPerCell(c),i,e)-1_pInt] ! number of cellnodes per cell & list of global cellnode IDs belnging to this cell (cellnode counting starts at 0) j = j + FE_NcellnodesPerCell(c) + 1_pInt +#ifdef HDF + cellconnectionHDF5(j2+1_pInt:j2+FE_NcellnodesPerCell(c)) & + = mesh_cell(1:FE_NcellnodesPerCell(c),i,e)-1_pInt + j2=j2 + FE_ncellnodesPerCell(c) +#endif enddo enddo #ifdef HDF - call HDF5_mappingCells(cellconnection(1:j)) + call HDF5_mappingCells(cellconnectionHDF5(1:j2)) #endif error=VTK_ini(output_format = 'ASCII', &