Fixed a physics issue: sense change with respect to difference between resolved stress and backstress
This commit is contained in:
parent
7f487bb77b
commit
f26fd1d1dc
|
@ -522,13 +522,9 @@ program DAMASK_spectral
|
||||||
real(loadCases(currentLoadCase)%incs ,pReal)))
|
real(loadCases(currentLoadCase)%incs ,pReal)))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
<<<<<<< HEAD
|
|
||||||
timeinc = timeinc / 2.0_pReal**real(cutBackLevel,pReal) ! depending on cut back level, decrease time step
|
|
||||||
! QUESTION: what happens to inc-counter when cutbacklevel is not zero? not clear where half an inc gets incremented..?
|
|
||||||
=======
|
|
||||||
timeinc = timeinc / real(subStepFactor,pReal)**real(cutBackLevel,pReal) ! depending on cut back level, decrease time step
|
timeinc = timeinc / real(subStepFactor,pReal)**real(cutBackLevel,pReal) ! depending on cut back level, decrease time step
|
||||||
|
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
skipping: if (totalIncsCounter < restartInc) then ! not yet at restart inc?
|
skipping: if (totalIncsCounter < restartInc) then ! not yet at restart inc?
|
||||||
time = time + timeinc ! just advance time, skip already performed calculation
|
time = time + timeinc ! just advance time, skip already performed calculation
|
||||||
guess = .true. ! QUESTION:why forced guessing instead of inheriting loadcase preference
|
guess = .true. ! QUESTION:why forced guessing instead of inheriting loadcase preference
|
||||||
|
@ -633,38 +629,7 @@ program DAMASK_spectral
|
||||||
stagIter = stagIter + 1_pInt
|
stagIter = stagIter + 1_pInt
|
||||||
stagIterate = stagIter < stagItMax &
|
stagIterate = stagIter < stagItMax &
|
||||||
.and. all(solres(:)%converged) &
|
.and. all(solres(:)%converged) &
|
||||||
<<<<<<< HEAD
|
|
||||||
.and. .not. all(solres(:)%stagConverged)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! check solution
|
|
||||||
cutBack = .False.
|
|
||||||
|
|
||||||
if (solres(1)%termIll &
|
|
||||||
.or. .not. all(solres(:)%converged .and. solres(:)%stagConverged)) then ! no solution found
|
|
||||||
! QUESTION: why termIll checked only for first field? only one that can be mechanic?
|
|
||||||
if (cutBackLevel < maxCutBack) then ! further cutbacking tolerated?
|
|
||||||
write(6,'(/,a)') ' cutting back '
|
|
||||||
cutBack = .true.
|
|
||||||
stepFraction = (stepFraction - 1_pInt) * subStepFactor ! adjust to new denominator
|
|
||||||
cutBackLevel = cutBackLevel + 1_pInt
|
|
||||||
time = time - timeinc ! rewind time
|
|
||||||
timeinc = timeinc/2.0_pReal
|
|
||||||
elseif (continueCalculation == 1_pInt .and. .not. solres(1)%termIll) then
|
|
||||||
guess = .true. ! accept non converged BVP solution
|
|
||||||
else ! material point model cannot find a solution
|
|
||||||
call IO_warning(850_pInt)
|
|
||||||
call MPI_file_close(resUnit,ierr)
|
|
||||||
close(statUnit)
|
|
||||||
call quit(-1_pInt*(lastRestartWritten+1_pInt)) ! quit and provide information about last restart inc written
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
guess = .true. ! start guessing after first converged (sub)inc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if (.not. cutBack) then
|
|
||||||
=======
|
|
||||||
.and. .not. all(solres(:)%stagConverged) ! stationary with respect to staggered iteration
|
.and. .not. all(solres(:)%stagConverged) ! stationary with respect to staggered iteration
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -676,7 +641,6 @@ program DAMASK_spectral
|
||||||
timeIncOld = timeinc
|
timeIncOld = timeinc
|
||||||
cutBack = .false.
|
cutBack = .false.
|
||||||
guess = .true. ! start guessing after first converged (sub)inc
|
guess = .true. ! start guessing after first converged (sub)inc
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
if (worldrank == 0) then
|
if (worldrank == 0) then
|
||||||
write(statUnit,*) totalIncsCounter, time, cutBackLevel, &
|
write(statUnit,*) totalIncsCounter, time, cutBackLevel, &
|
||||||
solres%converged, solres%iterationsNeeded
|
solres%converged, solres%iterationsNeeded
|
||||||
|
@ -695,10 +659,7 @@ program DAMASK_spectral
|
||||||
close(statUnit)
|
close(statUnit)
|
||||||
call quit(-1_pInt*(lastRestartWritten+1_pInt)) ! quit and provide information about last restart inc written
|
call quit(-1_pInt*(lastRestartWritten+1_pInt)) ! quit and provide information about last restart inc written
|
||||||
endif
|
endif
|
||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
|
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
enddo subStepLooping
|
enddo subStepLooping
|
||||||
|
|
||||||
cutBackLevel = max(0_pInt, cutBackLevel - 1_pInt) ! try half number of subincs next inc
|
cutBackLevel = max(0_pInt, cutBackLevel - 1_pInt) ! try half number of subincs next inc
|
||||||
|
@ -719,11 +680,8 @@ program DAMASK_spectral
|
||||||
flush(6)
|
flush(6)
|
||||||
call materialpoint_postResults()
|
call materialpoint_postResults()
|
||||||
call MPI_file_seek (resUnit,fileOffset,MPI_SEEK_SET,ierr)
|
call MPI_file_seek (resUnit,fileOffset,MPI_SEEK_SET,ierr)
|
||||||
<<<<<<< HEAD
|
|
||||||
if (ierr /=0_pInt) call IO_error(894_pInt, ext_msg='MPI_file_seek')
|
|
||||||
=======
|
|
||||||
if (ierr /= 0_pInt) call IO_error(894_pInt, ext_msg='MPI_file_seek')
|
if (ierr /= 0_pInt) call IO_error(894_pInt, ext_msg='MPI_file_seek')
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
do i=1, size(materialpoint_results,3)/(maxByteOut/(materialpoint_sizeResults*pReal))+1 ! slice the output of my process in chunks not exceeding the limit for one output
|
do i=1, size(materialpoint_results,3)/(maxByteOut/(materialpoint_sizeResults*pReal))+1 ! slice the output of my process in chunks not exceeding the limit for one output
|
||||||
outputIndex=int([(i-1_pInt)*((maxRealOut)/materialpoint_sizeResults)+1_pInt, &
|
outputIndex=int([(i-1_pInt)*((maxRealOut)/materialpoint_sizeResults)+1_pInt, &
|
||||||
min(i*((maxRealOut)/materialpoint_sizeResults),size(materialpoint_results,3))],pLongInt)
|
min(i*((maxRealOut)/materialpoint_sizeResults),size(materialpoint_results,3))],pLongInt)
|
||||||
|
@ -740,9 +698,7 @@ program DAMASK_spectral
|
||||||
restartWrite = .true. ! set restart parameter for FEsolving
|
restartWrite = .true. ! set restart parameter for FEsolving
|
||||||
lastRestartWritten = inc ! QUESTION: first call to CPFEM_general will write?
|
lastRestartWritten = inc ! QUESTION: first call to CPFEM_general will write?
|
||||||
endif
|
endif
|
||||||
<<<<<<< HEAD
|
|
||||||
endif skipping
|
|
||||||
=======
|
|
||||||
else forwarding
|
else forwarding
|
||||||
time = time + timeinc
|
time = time + timeinc
|
||||||
guess = .true.
|
guess = .true.
|
||||||
|
@ -812,7 +768,6 @@ program DAMASK_spectral
|
||||||
call quit(0_pInt)
|
call quit(0_pInt)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
>>>>>>> development
|
|
||||||
|
|
||||||
enddo incLooping
|
enddo incLooping
|
||||||
enddo loadCaseLooping
|
enddo loadCaseLooping
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Philip Eisenlohr, Michigan State University
|
||||||
!> @author Zhuowen Zhao, Michigan State University
|
!> @author Zhuowen Zhao, Michigan State University
|
||||||
!> @brief Introducing Voce-type kinematic hardening rule into crystal plasticity
|
!> @brief Introducing Voce-type kinematic hardening rule into crystal plasticity
|
||||||
!! formulation using a power law fitting
|
!! formulation using a power law fitting
|
||||||
|
@ -611,13 +611,13 @@ subroutine plastic_kinehardening_shearRates(gdot_pos,gdot_neg,tau_pos,tau_neg, &
|
||||||
enddo slipFamilies
|
enddo slipFamilies
|
||||||
|
|
||||||
gdot_pos = 0.5_pReal * param(instance)%gdot0 * &
|
gdot_pos = 0.5_pReal * param(instance)%gdot0 * &
|
||||||
(abs(tau_pos-state(instance)%sense(:,of)*state(instance)%crss_back(:,of))/ &
|
(abs(tau_pos-state(instance)%crss_back(:,of))/ &
|
||||||
state(instance)%crss(:,of))**param(instance)%n_slip &
|
state(instance)%crss(:,of))**param(instance)%n_slip &
|
||||||
*sign(1.0_pReal,tau_pos)
|
*sign(1.0_pReal,tau_pos-state(instance)%crss_back(:,of))
|
||||||
gdot_neg = 0.5_pReal * param(instance)%gdot0 * &
|
gdot_neg = 0.5_pReal * param(instance)%gdot0 * &
|
||||||
(abs(tau_neg-state(instance)%sense(:,of)*state(instance)%crss_back(:,of))/ &
|
(abs(tau_neg-state(instance)%crss_back(:,of))/ &
|
||||||
state(instance)%crss(:,of))**param(instance)%n_slip &
|
state(instance)%crss(:,of))**param(instance)%n_slip &
|
||||||
*sign(1.0_pReal,tau_neg)
|
*sign(1.0_pReal,tau_neg-state(instance)%crss_back(:,of))
|
||||||
|
|
||||||
! gdot_pos = 0.5_pReal * param(instance)%gdot0 * &
|
! gdot_pos = 0.5_pReal * param(instance)%gdot0 * &
|
||||||
! exp(-param(instance)%F0/(1.38e-23*298.15)* &
|
! exp(-param(instance)%F0/(1.38e-23*298.15)* &
|
||||||
|
@ -765,7 +765,8 @@ end subroutine plastic_kinehardening_LpAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_kinehardening_deltaState(Tstar_v,ipc,ip,el)
|
subroutine plastic_kinehardening_deltaState(Tstar_v,ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dNeq
|
dNeq, &
|
||||||
|
dEq0
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_constitutive, &
|
debug_constitutive, &
|
||||||
|
@ -804,8 +805,9 @@ subroutine plastic_kinehardening_deltaState(Tstar_v,ipc,ip,el)
|
||||||
|
|
||||||
call plastic_kinehardening_shearRates(gdot_pos,gdot_neg,tau_pos,tau_neg, &
|
call plastic_kinehardening_shearRates(gdot_pos,gdot_neg,tau_pos,tau_neg, &
|
||||||
Tstar_v,ph,instance,of)
|
Tstar_v,ph,instance,of)
|
||||||
|
sense = merge(state(instance)%sense(:,of), & ! keep existing...
|
||||||
sense = sign(1.0_pReal,gdot_pos+gdot_neg) ! current sense of shear direction
|
sign(1.0_pReal,gdot_pos+gdot_neg), & ! ...or have a defined
|
||||||
|
dEq0(gdot_pos+gdot_neg,1e-10_pReal)) ! current sense of shear direction
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (iand(debug_level(debug_constitutive), debug_levelExtensive) /= 0_pInt &
|
if (iand(debug_level(debug_constitutive), debug_levelExtensive) /= 0_pInt &
|
||||||
|
|
|
@ -280,13 +280,8 @@ type(tSolutionState) function basicPETSc_solution(incInfoIn,timeinc,timeinc_old,
|
||||||
basicPETSC_solution%iterationsNeeded = totalIter
|
basicPETSC_solution%iterationsNeeded = totalIter
|
||||||
basicPETSc_solution%termIll = terminallyIll
|
basicPETSc_solution%termIll = terminallyIll
|
||||||
terminallyIll = .false.
|
terminallyIll = .false.
|
||||||
<<<<<<< HEAD
|
|
||||||
if (reason == -4) call IO_error(893_pInt)
|
|
||||||
BasicPETSc_solution%converged = reason > 0
|
|
||||||
basicPETSC_solution%iterationsNeeded = totalIter
|
|
||||||
=======
|
|
||||||
if (reason == -4) call IO_error(893_pInt) ! MPI error
|
if (reason == -4) call IO_error(893_pInt) ! MPI error
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
|
|
||||||
end function BasicPETSc_solution
|
end function BasicPETSc_solution
|
||||||
|
|
||||||
|
@ -343,10 +338,6 @@ subroutine BasicPETSC_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
call SNESGetIterationNumber(snes,PETScIter,ierr); CHKERRQ(ierr)
|
call SNESGetIterationNumber(snes,PETScIter,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
if (nfuncs == 0 .and. PETScIter == 0) totalIter = -1_pInt ! new increment
|
if (nfuncs == 0 .and. PETScIter == 0) totalIter = -1_pInt ! new increment
|
||||||
<<<<<<< HEAD
|
|
||||||
newIteration: if (totalIter <= PETScIter) then
|
|
||||||
=======
|
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! begin of new iteration
|
! begin of new iteration
|
||||||
newIteration: if (totalIter <= PETScIter) then
|
newIteration: if (totalIter <= PETScIter) then
|
||||||
|
@ -449,106 +440,6 @@ end subroutine BasicPETSc_converged
|
||||||
!> possibly writing restart information, triggering of state increment in DAMASK, and updating of IPcoordinates
|
!> possibly writing restart information, triggering of state increment in DAMASK, and updating of IPcoordinates
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,deformation_BC,stress_BC,rotation_BC)
|
subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,deformation_BC,stress_BC,rotation_BC)
|
||||||
<<<<<<< HEAD
|
|
||||||
use math, only: &
|
|
||||||
math_mul33x33 ,&
|
|
||||||
math_rotate_backward33
|
|
||||||
use numerics, only: &
|
|
||||||
worldrank
|
|
||||||
use mesh, only: &
|
|
||||||
grid, &
|
|
||||||
grid3
|
|
||||||
use spectral_utilities, only: &
|
|
||||||
Utilities_calculateRate, &
|
|
||||||
Utilities_forwardField, &
|
|
||||||
Utilities_updateIPcoords, &
|
|
||||||
tBoundaryCondition, &
|
|
||||||
cutBack
|
|
||||||
use IO, only: &
|
|
||||||
IO_write_JobRealFile
|
|
||||||
use FEsolving, only: &
|
|
||||||
restartWrite
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), intent(in) :: &
|
|
||||||
timeinc_old, &
|
|
||||||
timeinc, &
|
|
||||||
loadCaseTime !< remaining time of current load case
|
|
||||||
type(tBoundaryCondition), intent(in) :: &
|
|
||||||
stress_BC, &
|
|
||||||
deformation_BC
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
|
||||||
logical, intent(in) :: &
|
|
||||||
guess
|
|
||||||
PetscErrorCode :: ierr
|
|
||||||
PetscScalar, pointer :: F(:,:,:,:)
|
|
||||||
|
|
||||||
character(len=1024) :: rankStr
|
|
||||||
|
|
||||||
call DMDAVecGetArrayF90(da,solution_vec,F,ierr) ! get F from PETSc data structure
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! restart information for spectral solver
|
|
||||||
if (restartWrite) then ! QUESTION: where is this logical properly set?
|
|
||||||
write(6,'(/,a)') ' writing converged results for restart'
|
|
||||||
flush(6)
|
|
||||||
write(rankStr,'(a1,i0)')'_',worldrank
|
|
||||||
call IO_write_jobRealFile(777,'F'//trim(rankStr),size(F)) ! writing deformation gradient field to file
|
|
||||||
write (777,rec=1) F
|
|
||||||
close (777)
|
|
||||||
call IO_write_jobRealFile(777,'F_lastInc'//trim(rankStr),size(F_lastInc)) ! writing F_lastInc field to file
|
|
||||||
write (777,rec=1) F_lastInc
|
|
||||||
close (777)
|
|
||||||
if (worldrank == 0_pInt) then
|
|
||||||
call IO_write_jobRealFile(777,'F_aimDot',size(F_aimDot))
|
|
||||||
write (777,rec=1) F_aimDot
|
|
||||||
close(777)
|
|
||||||
call IO_write_jobRealFile(777,'C_volAvg',size(C_volAvg))
|
|
||||||
write (777,rec=1) C_volAvg
|
|
||||||
close(777)
|
|
||||||
call IO_write_jobRealFile(777,'C_volAvgLastInc',size(C_volAvgLastInc))
|
|
||||||
write (777,rec=1) C_volAvgLastInc
|
|
||||||
close(777)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
call utilities_updateIPcoords(F) ! QUESTION: why do this even when cutback happened??
|
|
||||||
|
|
||||||
if (cutBack) then ! reset to former inc's values
|
|
||||||
F = reshape(F_lastInc,[9,grid(1),grid(2),grid3]) ! QUESTION: purpose of resetting this when updating in line 541?
|
|
||||||
F_aim = F_aim_lastInc
|
|
||||||
C_volAvg = C_volAvgLastInc
|
|
||||||
else
|
|
||||||
ForwardData = .true. ! QUESTION: who is resetting this?
|
|
||||||
C_volAvgLastInc = C_volAvg
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! calculate rate for aim
|
|
||||||
if (deformation_BC%myType=='l') then ! calculate f_aimDot from given L and current F
|
|
||||||
f_aimDot = deformation_BC%maskFloat * math_mul33x33(deformation_BC%values, F_aim)
|
|
||||||
elseif(deformation_BC%myType=='fdot') then ! f_aimDot is prescribed
|
|
||||||
f_aimDot = deformation_BC%maskFloat * deformation_BC%values
|
|
||||||
elseif (deformation_BC%myType=='f') then ! aim at end of load case is prescribed
|
|
||||||
f_aimDot = deformation_BC%maskFloat * (deformation_BC%values - F_aim)/loadCaseTime
|
|
||||||
endif
|
|
||||||
if (guess) f_aimDot = f_aimDot + stress_BC%maskFloat * (F_aim - F_aim_lastInc)/timeinc_old
|
|
||||||
F_aim_lastInc = F_aim
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! update coordinates and rate and forward last inc
|
|
||||||
call utilities_updateIPcoords(F)
|
|
||||||
Fdot = Utilities_calculateRate(math_rotate_backward33(f_aimDot,rotation_BC), &
|
|
||||||
timeinc_old,guess,F_lastInc,reshape(F,[3,3,grid(1),grid(2),grid3])) ! QUESTION: what do we need Fdot for and why is it not restored at cutback?
|
|
||||||
F_lastInc = reshape(F,[3,3,grid(1),grid(2),grid3])
|
|
||||||
endif
|
|
||||||
|
|
||||||
F_aim = F_aim + f_aimDot * timeinc
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! update local deformation gradient
|
|
||||||
F = reshape(Utilities_forwardField(timeinc,F_lastInc,Fdot, & ! ensure that it matches rotated F_aim
|
|
||||||
math_rotate_backward33(F_aim,rotation_BC)),[9,grid(1),grid(2),grid3])
|
|
||||||
call DMDAVecRestoreArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr)
|
|
||||||
|
|
||||||
=======
|
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33x33 ,&
|
math_mul33x33 ,&
|
||||||
math_rotate_backward33
|
math_rotate_backward33
|
||||||
|
@ -660,8 +551,7 @@ subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,deformation
|
||||||
F = reshape(Utilities_forwardField(timeinc,F_lastInc,Fdot, & ! estimate of F at end of time+timeinc that matches rotated F_aim on average
|
F = reshape(Utilities_forwardField(timeinc,F_lastInc,Fdot, & ! estimate of F at end of time+timeinc that matches rotated F_aim on average
|
||||||
math_rotate_backward33(F_aim,rotation_BC)),[9,grid(1),grid(2),grid3])
|
math_rotate_backward33(F_aim,rotation_BC)),[9,grid(1),grid(2),grid3])
|
||||||
call DMDAVecRestoreArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr)
|
call DMDAVecRestoreArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
end subroutine BasicPETSc_forward
|
end subroutine BasicPETSc_forward
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -823,11 +823,8 @@ function utilities_maskedCompliance(rot_BC,mask_stress,C)
|
||||||
.or. (m/=n .and. abs(sTimesC(m,n)) > 1.0e-12_pReal) ! off-diagonal elements of S*C should be 0
|
.or. (m/=n .and. abs(sTimesC(m,n)) > 1.0e-12_pReal) ! off-diagonal elements of S*C should be 0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
<<<<<<< HEAD
|
|
||||||
if(debugGeneral .or. errmatinv) then
|
|
||||||
=======
|
|
||||||
if (debugGeneral .or. errmatinv) then
|
if (debugGeneral .or. errmatinv) then
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
write(formatString, '(i2)') size_reduced
|
write(formatString, '(i2)') size_reduced
|
||||||
formatString = '(/,a,/,'//trim(formatString)//'('//trim(formatString)//'(2x,es9.2,1x)/))'
|
formatString = '(/,a,/,'//trim(formatString)//'('//trim(formatString)//'(2x,es9.2,1x)/))'
|
||||||
write(6,trim(formatString),advance='no') ' C * S (load) ', &
|
write(6,trim(formatString),advance='no') ' C * S (load) ', &
|
||||||
|
@ -841,18 +838,13 @@ function utilities_maskedCompliance(rot_BC,mask_stress,C)
|
||||||
else
|
else
|
||||||
temp99_real = 0.0_pReal
|
temp99_real = 0.0_pReal
|
||||||
endif
|
endif
|
||||||
<<<<<<< HEAD
|
|
||||||
if(debugGeneral) &
|
|
||||||
write(6,'(/,a,/,9(9(2x,f10.5,1x)/),/)',advance='no') ' Masked Compliance (load) / GPa =', &
|
|
||||||
transpose(temp99_Real*1.e9_pReal)
|
|
||||||
flush(6)
|
|
||||||
=======
|
|
||||||
if(debugGeneral) then
|
if(debugGeneral) then
|
||||||
write(6,'(/,a,/,9(9(2x,f10.5,1x)/),/)',advance='no') &
|
write(6,'(/,a,/,9(9(2x,f10.5,1x)/),/)',advance='no') &
|
||||||
' Masked Compliance (load) / GPa =', transpose(temp99_Real*1.e-9_pReal)
|
' Masked Compliance (load) / GPa =', transpose(temp99_Real*1.e-9_pReal)
|
||||||
flush(6)
|
flush(6)
|
||||||
endif
|
endif
|
||||||
>>>>>>> spectralSolver-cutbackfix
|
|
||||||
utilities_maskedCompliance = math_Plain99to3333(temp99_Real)
|
utilities_maskedCompliance = math_Plain99to3333(temp99_Real)
|
||||||
|
|
||||||
end function utilities_maskedCompliance
|
end function utilities_maskedCompliance
|
||||||
|
|
Loading…
Reference in New Issue