Abaqus interfaces dapted to newest version of the rest of the code

does not yet check for restart, have to check out first how restarts work in Abaqus
explicit code not checked as we do not have a license
This commit is contained in:
Franz Roters 2011-03-07 12:49:27 +00:00
parent 654b5ea987
commit 18e668340f
3 changed files with 82 additions and 69 deletions

View File

@ -21,6 +21,7 @@ MODULE mpie_interface
character(len=64), parameter :: FEsolver = 'Abaqus' character(len=64), parameter :: FEsolver = 'Abaqus'
character(len=4), parameter :: InputFileExtension = '.inp' character(len=4), parameter :: InputFileExtension = '.inp'
character(len=4), parameter :: LogFileExtension = '.log'
CONTAINS CONTAINS
@ -81,6 +82,7 @@ END MODULE
include "material.f90" ! uses prec, math, IO, mesh include "material.f90" ! uses prec, math, IO, mesh
include "lattice.f90" ! uses prec, math, IO, material include "lattice.f90" ! uses prec, math, IO, material
include "constitutive_phenopowerlaw.f90" ! uses prec, math, IO, latt ice, material, debug include "constitutive_phenopowerlaw.f90" ! uses prec, math, IO, latt ice, material, debug
include "constitutive_titanmod.f90" ! uses prec, math, IO, lattice, material, debug
include "constitutive_j2.f90" ! uses prec, math, IO, latt ice, material, debug include "constitutive_j2.f90" ! uses prec, math, IO, latt ice, material, debug
include "constitutive_dislotwin.f90" ! uses prec, math, IO, latt ice, material, debug include "constitutive_dislotwin.f90" ! uses prec, math, IO, latt ice, material, debug
include "constitutive_nonlocal.f90" ! uses prec, math, IO, latt ice, material, debug include "constitutive_nonlocal.f90" ! uses prec, math, IO, latt ice, material, debug
@ -154,7 +156,7 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
debug_reset, & debug_reset, &
verboseDebugger verboseDebugger
use mesh, only: mesh_FEasCP use mesh, only: mesh_FEasCP
use CPFEM, only: CPFEM_general,CPFEM_init_done use CPFEM, only: CPFEM_general,CPFEM_init_done, CPFEM_initAll
use homogenization, only: materialpoint_sizeResults, materialpoint_results use homogenization, only: materialpoint_sizeResults, materialpoint_results
include 'vaba_param.inc' ! Abaqus exp initializes a first step in single prec. for this a two-step compilation is used. include 'vaba_param.inc' ! Abaqus exp initializes a first step in single prec. for this a two-step compilation is used.
@ -185,7 +187,9 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
do n = 1,nblock ! loop over vector of IPs do n = 1,nblock ! loop over vector of IPs
temp = tempOld(n)
if ( .not. CPFEM_init_done ) then if ( .not. CPFEM_init_done ) then
call CPFEM_initAll(temp,nElement(n),nMatPoint(n))
outdatedByNewInc = .false. outdatedByNewInc = .false.
if ( verboseDebugger ) then if ( verboseDebugger ) then
@ -227,7 +231,6 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
defgrd0 = 0.0_pReal defgrd0 = 0.0_pReal
defgrd1 = 0.0_pReal defgrd1 = 0.0_pReal
temp = tempOld(n)
timeInc = dt timeInc = dt
! ABAQUS explicit: deformation gradient as vector 11, 22, 33, 12, 23, 31, 21, 32, 13 ! ABAQUS explicit: deformation gradient as vector 11, 22, 33, 12, 23, 31, 21, 32, 13

View File

@ -21,6 +21,7 @@ MODULE mpie_interface
character(len=64), parameter :: FEsolver = 'Abaqus' character(len=64), parameter :: FEsolver = 'Abaqus'
character(len=4), parameter :: InputFileExtension = '.inp' character(len=4), parameter :: InputFileExtension = '.inp'
character(len=4), parameter :: LogFileExtension = '.log'
CONTAINS CONTAINS
@ -83,6 +84,7 @@ END MODULE
include "material.f90" ! uses prec, math, IO, mesh include "material.f90" ! uses prec, math, IO, mesh
include "lattice.f90" ! uses prec, math, IO, material include "lattice.f90" ! uses prec, math, IO, material
include "constitutive_phenopowerlaw.f90" ! uses prec, math, IO, latt ice, material, debug include "constitutive_phenopowerlaw.f90" ! uses prec, math, IO, latt ice, material, debug
include "constitutive_titanmod.f90" ! uses prec, math, IO, lattice, material, debug
include "constitutive_j2.f90" ! uses prec, math, IO, latt ice, material, debug include "constitutive_j2.f90" ! uses prec, math, IO, latt ice, material, debug
include "constitutive_dislotwin.f90" ! uses prec, math, IO, latt ice, material, debug include "constitutive_dislotwin.f90" ! uses prec, math, IO, latt ice, material, debug
include "constitutive_nonlocal.f90" ! uses prec, math, IO, latt ice, material, debug include "constitutive_nonlocal.f90" ! uses prec, math, IO, latt ice, material, debug
@ -118,7 +120,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
debug_reset, & debug_reset, &
verboseDebugger verboseDebugger
use mesh, only: mesh_FEasCP use mesh, only: mesh_FEasCP
use CPFEM, only: CPFEM_general,CPFEM_init_done use CPFEM, only: CPFEM_general,CPFEM_init_done, CPFEM_initAll
use homogenization, only: materialpoint_sizeResults, materialpoint_results use homogenization, only: materialpoint_sizeResults, materialpoint_results
@ -151,47 +153,54 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
!$OMP END CRITICAL (write2out) !$OMP END CRITICAL (write2out)
endif endif
if ( .not. CPFEM_init_done ) then if (.not. CPFEM_init_done) call CPFEM_initAll(temp,noel,npt)
computationMode = 2 ! calc + init
if ( verboseDebugger ) then
!$OMP CRITICAL (write2out)
write(6,'(i6,x,i2,x,a)') noel,npt,'first call special case..!'; call flush(6)
!$OMP END CRITICAL (write2out)
endif
else
cp_en = mesh_FEasCP('elem',noel) cp_en = mesh_FEasCP('elem',noel)
if (theTime < time(2) .or. theInc /= kinc) then ! reached convergence if (time(2) > theTime .or. kinc /= theInc) then ! reached convergence
lastIncConverged = .true.
outdatedByNewInc = .true.
terminallyIll = .false. terminallyIll = .false.
cycleCounter = 0 cycleCounter = -1 ! first calc step increments this to cycle = 0
if (kinc == 0) then ! >> start of analysis <<
if ( verboseDebugger ) then lastIncConverged = .false. ! no Jacobian backup
outdatedByNewInc = .false. ! no aging of state
lastMode = .false. ! pretend last step was collection
calcMode = .false. ! pretend last step was collection
!$OMP CRITICAL (write2out) !$OMP CRITICAL (write2out)
write (6,'(i6,x,i2,x,a)') noel,npt,'lastIncConverged + outdated'; call flush(6) write (6,'(i6,x,i2,x,a)') noel,npt,'<< UMAT >> start of analysis..!'; call flush(6)
!$OMP END CRITICAL (write2out)
else if (kinc - theInc > 1) then ! >> restart of broken analysis <<
lastIncConverged = .false. ! no Jacobian backup
outdatedByNewInc = .false. ! no aging of state
lastMode = .true. ! pretend last step was calculation
calcMode = .true. ! pretend last step was calculation
!$OMP CRITICAL (write2out)
write (6,'(i6,x,i2,x,a)') noel,npt,'<< UMAT >> restart of analysis..!'; call flush(6)
!$OMP END CRITICAL (write2out)
else ! >> just the next inc <<
lastIncConverged = .true. ! request Jacobian backup
outdatedByNewInc = .true. ! request aging of state
lastMode = .true. ! assure last step was calculation
calcMode = .true. ! assure last step was calculation
!$OMP CRITICAL (write2out)
write (6,'(i6,x,i2,x,a)') noel,npt,'<< UMAT >> new increment..!'; call flush(6)
!$OMP END CRITICAL (write2out) !$OMP END CRITICAL (write2out)
endif endif
else if ( dtime < theDelta ) then ! or check for cutBack else if ( dtime < theDelta ) then ! >> cutBack <<
calcMode = .true. ! pretend last step was calculation
cutBack = .true. cutBack = .true.
terminallyIll = .false. terminallyIll = .false.
cycleCounter = 0 cycleCounter = -1 ! first calc step increments this to cycle = 0
calcMode = .true. ! pretend last step was calculation
if ( verboseDebugger ) then
!$OMP CRITICAL (write2out) !$OMP CRITICAL (write2out)
write(6,'(i6,x,i2,x,a)') noel,npt,'cutback detected..!'; call flush(6) write(6,'(i6,x,i2,x,a)') noel,npt,'<< UMAT >> cutback detected..!'; call flush(6)
!$OMP END CRITICAL (write2out) !$OMP END CRITICAL (write2out)
endif
endif endif ! convergence treatment end
calcMode(npt,cp_en) = .not. calcMode(npt,cp_en) ! ping pong (calc <--> collect) calcMode(npt,cp_en) = .not. calcMode(npt,cp_en) ! ping pong (calc <--> collect)
if ( calcMode(npt,cp_en) ) then ! now calc if ( calcMode(npt,cp_en) ) then ! now calc
if ( lastMode .neqv. calcMode(npt,cp_en) ) then ! first after ping pong if ( lastMode /= calcMode(npt,cp_en) ) then ! first after ping pong
call debug_reset() ! resets debugging call debug_reset() ! resets debugging
outdatedFFN1 = .false. outdatedFFN1 = .false.
cycleCounter = cycleCounter + 1 cycleCounter = cycleCounter + 1
@ -203,7 +212,10 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
computationMode = 2 ! plain calc computationMode = 2 ! plain calc
endif endif
else ! now collect else ! now collect
if ( lastMode .neqv. calcMode(npt,cp_en) ) call debug_info() ! first after ping pong reports debugging if ( lastMode /= calcMode(npt,cp_en) .and. &
.not. terminallyIll) then
call debug_info() ! first after ping pong reports debugging
endif
if ( lastIncConverged ) then if ( lastIncConverged ) then
lastIncConverged = .false. lastIncConverged = .false.
computationMode = 4 ! collect and backup Jacobian after convergence computationMode = 4 ! collect and backup Jacobian after convergence
@ -215,12 +227,10 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
endif endif
endif endif
endif
theTime = time(2) ! record current starting time theTime = time(2) ! record current starting time
theDelta = dtime ! record current time increment theDelta = dtime ! record current time increment
theInc = kinc ! record current increment number theInc = kinc ! record current increment number
if (CPFEM_init_done) lastMode = calcMode(npt,cp_en) ! record calculationMode lastMode = calcMode(npt,cp_en) ! record calculationMode
if ( verboseDebugger ) then if ( verboseDebugger ) then
!$OMP CRITICAL (write2out) !$OMP CRITICAL (write2out)

View File

@ -1,7 +1,7 @@
$Id$ $Id$
Things to be implemented into the code Things to be implemented into the code
# make OpenMP parallelization work again # make Abaqus restart aware
# define set of test problems with known solution # define set of test problems with known solution