Merge branch 'development' of magit1.mpie.de:damask/DAMASK into development
This commit is contained in:
commit
f88f2cd16a
|
@ -25,11 +25,11 @@ endif
|
||||||
# this seems to make sense for the stack size
|
# this seems to make sense for the stack size
|
||||||
if ( `which free` != "free: Command not found." ) then
|
if ( `which free` != "free: Command not found." ) then
|
||||||
set freeMem=`free -k | grep -E '(Mem|Speicher):' | awk '{print $4;}'`
|
set freeMem=`free -k | grep -E '(Mem|Speicher):' | awk '{print $4;}'`
|
||||||
set stack=`expr $freeMem / $DAMASK_NUM_THREADS / 2`
|
|
||||||
set heap=` expr $freeMem / 2`
|
set heap=` expr $freeMem / 2`
|
||||||
|
set stack=`expr $freeMem / $DAMASK_NUM_THREADS / 2`
|
||||||
# http://superuser.com/questions/220059/what-parameters-has-ulimit
|
# http://superuser.com/questions/220059/what-parameters-has-ulimit
|
||||||
limit stacksize $stack # maximum stack size (kB)
|
|
||||||
limit datasize $heap # maximum heap size (kB)
|
limit datasize $heap # maximum heap size (kB)
|
||||||
|
limit stacksize $stack # maximum stack size (kB)
|
||||||
endif
|
endif
|
||||||
if ( `limit | grep memoryuse` != "" ) then
|
if ( `limit | grep memoryuse` != "" ) then
|
||||||
limit memoryuse unlimited # maximum physical memory size
|
limit memoryuse unlimited # maximum physical memory size
|
||||||
|
@ -53,9 +53,6 @@ if ( $?prompt ) then
|
||||||
if ( $?PETSC_DIR) then
|
if ( $?PETSC_DIR) then
|
||||||
echo "PETSc location $PETSC_DIR"
|
echo "PETSc location $PETSC_DIR"
|
||||||
endif
|
endif
|
||||||
if ( $?PETSC_ARCH) then
|
|
||||||
echo "PETSc architecture $PETSC_ARCH"
|
|
||||||
endif
|
|
||||||
if ( $?MSC_ROOT) then
|
if ( $?MSC_ROOT) then
|
||||||
echo "MSC.Marc/Mentat $MSC_ROOT"
|
echo "MSC.Marc/Mentat $MSC_ROOT"
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -40,8 +40,8 @@ FREE=$(which free 2>/dev/null)
|
||||||
if [ "x$FREE" != "x" ]; then
|
if [ "x$FREE" != "x" ]; then
|
||||||
freeMem=$(free -k | grep -E '(Mem|Speicher):' | awk '{print $4;}')
|
freeMem=$(free -k | grep -E '(Mem|Speicher):' | awk '{print $4;}')
|
||||||
# http://superuser.com/questions/220059/what-parameters-has-ulimit
|
# http://superuser.com/questions/220059/what-parameters-has-ulimit
|
||||||
ulimit -s $(expr $freeMem / $DAMASK_NUM_THREADS / 2) 2>/dev/null # maximum stack size (kB)
|
|
||||||
ulimit -d $(expr $freeMem / 2) 2>/dev/null # maximum heap size (kB)
|
ulimit -d $(expr $freeMem / 2) 2>/dev/null # maximum heap size (kB)
|
||||||
|
ulimit -s $(expr $freeMem / $DAMASK_NUM_THREADS / 2) 2>/dev/null # maximum stack size (kB)
|
||||||
fi
|
fi
|
||||||
ulimit -v unlimited 2>/dev/null # maximum virtual memory size
|
ulimit -v unlimited 2>/dev/null # maximum virtual memory size
|
||||||
ulimit -m unlimited 2>/dev/null # maximum physical memory size
|
ulimit -m unlimited 2>/dev/null # maximum physical memory size
|
||||||
|
@ -63,8 +63,6 @@ if [ ! -z "$PS1" ]; then
|
||||||
[[ $(python -c "import os,sys; print(os.path.realpath(os.path.expanduser(sys.argv[1])))" "$PETSC_DIR") == $PETSC_DIR ]] \
|
[[ $(python -c "import os,sys; print(os.path.realpath(os.path.expanduser(sys.argv[1])))" "$PETSC_DIR") == $PETSC_DIR ]] \
|
||||||
|| echo " ~~> "$(python -c "import os,sys; print(os.path.realpath(os.path.expanduser(sys.argv[1])))" "$PETSC_DIR")
|
|| echo " ~~> "$(python -c "import os,sys; print(os.path.realpath(os.path.expanduser(sys.argv[1])))" "$PETSC_DIR")
|
||||||
fi
|
fi
|
||||||
[[ "x$PETSC_ARCH" == "x" ]] \
|
|
||||||
|| echo "PETSc architecture $PETSC_ARCH"
|
|
||||||
echo "MSC.Marc/Mentat $MSC_ROOT"
|
echo "MSC.Marc/Mentat $MSC_ROOT"
|
||||||
echo
|
echo
|
||||||
echo -n "heap size "
|
echo -n "heap size "
|
||||||
|
|
|
@ -1,74 +1,87 @@
|
||||||
# sets up an environment for DAMASK on bash
|
# sets up an environment for DAMASK on zsh
|
||||||
# usage: source DAMASK_env.sh
|
# usage: source DAMASK_env.zsh
|
||||||
|
|
||||||
if [ "$OSTYPE" = "linux-gnu" ] || [ "$OSTYPE" = 'linux' ]; then
|
DAMASK_ROOT=${0:a:h}
|
||||||
DAMASK_ROOT=$(readlink -f "`dirname ${(%):-%N}`")
|
|
||||||
else
|
|
||||||
print 'Not done yet'
|
|
||||||
fi
|
|
||||||
|
|
||||||
[[ -f $HOME/.damask/damask.conf ]] && source $HOME/.damask/damask.conf || source /etc/damask.conf
|
# defining set() allows to source the same file for tcsh and zsh, with and without space around =
|
||||||
|
set() {
|
||||||
|
export $1$2$3
|
||||||
|
}
|
||||||
|
source $DAMASK_ROOT/CONFIG
|
||||||
|
unset -f set
|
||||||
|
|
||||||
# if DAMASK_BIN is present and not in $PATH, add it
|
# add DAMASK_BIN if present but not yet in $PATH
|
||||||
#if [[ [[ "x$DAMASK_BIN" != "x" ]] && ! `echo ":$PATH:" | grep $DAMASK_BIN:` ]]; then
|
MATCH=`echo ":$PATH:" | grep $DAMASK_BIN:`
|
||||||
|
if [[ ( "x$DAMASK_BIN" != "x" ) && ( "x$MATCH" = "x" ) ]]; then
|
||||||
export PATH=$DAMASK_BIN:$PATH
|
export PATH=$DAMASK_BIN:$PATH
|
||||||
#fi
|
fi
|
||||||
|
|
||||||
SOLVER=`which DAMASK_spectral 2>/dev/null`
|
SOLVER=`which DAMASK_spectral 2>/dev/null`
|
||||||
if [ "x$SOLVER" = "x" ]; then
|
|
||||||
export SOLVER='Not found!'
|
|
||||||
fi
|
|
||||||
PROCESSING=`which postResults 2>/dev/null`
|
PROCESSING=`which postResults 2>/dev/null`
|
||||||
if [ "x$PROCESSING" = "x" ]; then
|
if [ "x$DAMASK_NUM_THREADS" = "x" ]; then
|
||||||
export PROCESSING='Not found!'
|
DAMASK_NUM_THREADS=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# according to http://software.intel.com/en-us/forums/topic/501500
|
# according to http://software.intel.com/en-us/forums/topic/501500
|
||||||
# this seems to make sense for the stack size
|
# this seems to make sense for the stack size
|
||||||
#FREE=`which free 2>/dev/null`
|
if [ "`which free 2>/dev/null`" != "free not found" ]; then
|
||||||
#if [ "x$FREE" != "x" ]; then
|
freeMem=`free -k | grep -E '(Mem|Speicher):' | awk '{print $4;}'`
|
||||||
# freeMem=`free -k | grep -E '(Mem|Speicher):' | awk '{print $4;}'`
|
|
||||||
# heap=`expr $freeMem / 2`
|
# http://superuser.com/questions/220059/what-parameters-has-ulimit
|
||||||
# stack=`expr $freeMem / 2`
|
#ulimit -d `expr $freeMem / 2` 2>/dev/null # maximum heap size (kB)
|
||||||
#
|
ulimit -s `expr $freeMem / $DAMASK_NUM_THREADS / 2` 2>/dev/null # maximum stack size (kB)
|
||||||
# # http://superuser.com/questions/220059/what-parameters-has-ulimit
|
fi
|
||||||
# ulimit -s $stack 2>/dev/null # maximum stack size (kB)
|
ulimit -v unlimited 2>/dev/null # maximum virtual memory size
|
||||||
# ulimit -d $heap 2>/dev/null # maximum heap size (kB)
|
|
||||||
#fi
|
|
||||||
#ulimit -c 2000 2>/dev/null # core file size (512-byte blocks)
|
|
||||||
#ulimit -v unlimited 2>/dev/null # maximum virtual memory size
|
|
||||||
ulimit -m unlimited 2>/dev/null # maximum physical memory size
|
ulimit -m unlimited 2>/dev/null # maximum physical memory size
|
||||||
|
|
||||||
# disable output in case of scp
|
# disable output in case of scp
|
||||||
if [ ! -z "$PS1" ]; then
|
if [ ! -z "$PS1" ]; then
|
||||||
echo
|
echo
|
||||||
echo Düsseldorf Advanced Materials Simulation Kit - DAMASK
|
echo Düsseldorf Advanced Materials Simulation Kit --- DAMASK
|
||||||
echo Max-Planck-Institut für Eisenforschung, Düsseldorf
|
echo Max-Planck-Institut für Eisenforschung GmbH, Düsseldorf
|
||||||
echo http://damask.mpie.de
|
echo https://damask.mpie.de
|
||||||
echo
|
echo
|
||||||
echo Using environment with ...
|
echo "Using environment with ..."
|
||||||
echo "DAMASK $DAMASK_ROOT"
|
echo "DAMASK $DAMASK_ROOT"
|
||||||
[[ "x$SOLVER" != "x" ]] && echo "Spectral Solver $SOLVER"
|
echo "Spectral Solver $SOLVER"
|
||||||
[[ "x$PROCESSING" != "x" ]] && echo "Post Processing $PROCESSING"
|
echo "Post Processing $PROCESSING"
|
||||||
echo "Multithreading DAMASK_NUM_THREADS=$DAMASK_NUM_THREADS"
|
echo "Multithreading DAMASK_NUM_THREADS=$DAMASK_NUM_THREADS"
|
||||||
if [ "x$PETSC_DIR" != "x" ]; then
|
if [ "x$PETSC_DIR" != "x" ]; then
|
||||||
echo "PETSc location $PETSC_DIR"
|
echo "PETSc location $PETSC_DIR"
|
||||||
[[ `readlink -f $PETSC_DIR` == $PETSC_DIR ]] || echo " ~~> "`readlink -f $PETSC_DIR`
|
[[ $(python -c "import os,sys; print(os.path.realpath(os.path.expanduser(sys.argv[1])))" "$PETSC_DIR") == $PETSC_DIR ]] \
|
||||||
|
|| echo " ~~> "$(python -c "import os,sys; print(os.path.realpath(os.path.expanduser(sys.argv[1])))" "$PETSC_DIR")
|
||||||
fi
|
fi
|
||||||
[[ "x$PETSC_ARCH" != "x" ]] && echo "PETSc architecture $PETSC_ARCH"
|
[[ "x$PETSC_ARCH" == "x" ]] \
|
||||||
|
|| echo "PETSc architecture $PETSC_ARCH"
|
||||||
echo "MSC.Marc/Mentat $MSC_ROOT"
|
echo "MSC.Marc/Mentat $MSC_ROOT"
|
||||||
echo
|
echo
|
||||||
echo -n "heap size/MiB "; echo "`ulimit -d`/1024" | bc
|
echo -n "heap size "
|
||||||
echo -n "stack size/MiB "; echo "`ulimit -s`/1024" | bc
|
[[ "$(ulimit -d)" == "unlimited" ]] \
|
||||||
|
&& echo "unlimited" \
|
||||||
|
|| echo $(python -c \
|
||||||
|
"import math; \
|
||||||
|
size=$(( 1024*$(ulimit -d) )); \
|
||||||
|
print('{:.4g} {}'.format(size / (1 << ((int(math.log(size,2) / 10) if size else 0) * 10)), \
|
||||||
|
['bytes','KiB','MiB','GiB','TiB','EiB','ZiB'][int(math.log(size,2) / 10) if size else 0]))")
|
||||||
|
echo -n "stack size "
|
||||||
|
[[ "$(ulimit -s)" == "unlimited" ]] \
|
||||||
|
&& echo "unlimited" \
|
||||||
|
|| echo $(python -c \
|
||||||
|
"import math; \
|
||||||
|
size=$(( 1024*$(ulimit -s) )); \
|
||||||
|
print('{:.4g} {}'.format(size / (1 << ((int(math.log(size,2) / 10) if size else 0) * 10)), \
|
||||||
|
['bytes','KiB','MiB','GiB','TiB','EiB','ZiB'][int(math.log(size,2) / 10) if size else 0]))")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export DAMASK_NUM_THREADS
|
export DAMASK_NUM_THREADS
|
||||||
export PYTHONPATH=$DAMASK_ROOT/lib:$PYTHONPATH
|
export PYTHONPATH=$DAMASK_ROOT/lib:$PYTHONPATH
|
||||||
|
|
||||||
for var in BASE STAT SOLVER PROCESSING FREE; do
|
for var in BASE STAT SOLVER PROCESSING FREE DAMASK_BIN MATCH; do
|
||||||
unset "${var}"
|
unset "${var}"
|
||||||
done
|
done
|
||||||
for var in DAMASK IMKL ACML LAPACK MSC FFTW HDF5; do
|
for var in DAMASK MSC; do
|
||||||
unset "${var}_ROOT"
|
unset "${var}_ROOT"
|
||||||
done
|
done
|
||||||
|
for var in ABAQUS MARC; do
|
||||||
|
unset "${var}_VERSION"
|
||||||
|
done
|
||||||
|
|
|
@ -10,7 +10,6 @@ module CPFEM
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
real(pReal), parameter, private :: &
|
real(pReal), parameter, private :: &
|
||||||
CPFEM_odd_stress = 1e15_pReal, & !< return value for stress in case of ping pong dummy cycle
|
CPFEM_odd_stress = 1e15_pReal, & !< return value for stress in case of ping pong dummy cycle
|
||||||
CPFEM_odd_jacobian = 1e50_pReal !< return value for jacobian in case of ping pong dummy cycle
|
CPFEM_odd_jacobian = 1e50_pReal !< return value for jacobian in case of ping pong dummy cycle
|
||||||
|
@ -20,7 +19,6 @@ module CPFEM
|
||||||
CPFEM_dcsdE !< Cauchy stress tangent
|
CPFEM_dcsdE !< Cauchy stress tangent
|
||||||
real(pReal), dimension (:,:,:,:), allocatable, private :: &
|
real(pReal), dimension (:,:,:,:), allocatable, private :: &
|
||||||
CPFEM_dcsdE_knownGood !< known good tangent
|
CPFEM_dcsdE_knownGood !< known good tangent
|
||||||
#endif
|
|
||||||
integer(pInt), public :: &
|
integer(pInt), public :: &
|
||||||
cycleCounter = 0_pInt, & !< needs description
|
cycleCounter = 0_pInt, & !< needs description
|
||||||
theInc = -1_pInt, & !< needs description
|
theInc = -1_pInt, & !< needs description
|
||||||
|
@ -83,10 +81,6 @@ subroutine CPFEM_initAll(el,ip)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_init
|
IO_init
|
||||||
use DAMASK_interface
|
use DAMASK_interface
|
||||||
#ifdef FEM
|
|
||||||
use FEZoo, only: &
|
|
||||||
FEZoo_init
|
|
||||||
#endif
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: el, & !< FE el number
|
integer(pInt), intent(in) :: el, & !< FE el number
|
||||||
|
@ -97,9 +91,6 @@ subroutine CPFEM_initAll(el,ip)
|
||||||
call DAMASK_interface_init ! Spectral and FEM interface to commandline
|
call DAMASK_interface_init ! Spectral and FEM interface to commandline
|
||||||
call prec_init
|
call prec_init
|
||||||
call IO_init
|
call IO_init
|
||||||
#ifdef FEM
|
|
||||||
call FEZoo_init
|
|
||||||
#endif
|
|
||||||
call numerics_init
|
call numerics_init
|
||||||
call debug_init
|
call debug_init
|
||||||
call math_init
|
call math_init
|
||||||
|
@ -138,16 +129,12 @@ subroutine CPFEM_init
|
||||||
debug_levelBasic, &
|
debug_levelBasic, &
|
||||||
debug_levelExtensive
|
debug_levelExtensive
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
symmetricSolver, &
|
symmetricSolver, &
|
||||||
#endif
|
|
||||||
restartRead, &
|
restartRead, &
|
||||||
modelName
|
modelName
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
mesh_NcpElems, &
|
mesh_NcpElems, &
|
||||||
mesh_maxNips
|
mesh_maxNips
|
||||||
#endif
|
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
homogState, &
|
homogState, &
|
||||||
|
@ -173,12 +160,10 @@ subroutine CPFEM_init
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
endif mainProcess
|
||||||
|
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
! initialize stress and jacobian to zero
|
! initialize stress and jacobian to zero
|
||||||
allocate(CPFEM_cs(6,mesh_maxNips,mesh_NcpElems)) ; CPFEM_cs = 0.0_pReal
|
allocate(CPFEM_cs(6,mesh_maxNips,mesh_NcpElems)) ; CPFEM_cs = 0.0_pReal
|
||||||
allocate(CPFEM_dcsdE(6,6,mesh_maxNips,mesh_NcpElems)) ; CPFEM_dcsdE = 0.0_pReal
|
allocate(CPFEM_dcsdE(6,6,mesh_maxNips,mesh_NcpElems)) ; CPFEM_dcsdE = 0.0_pReal
|
||||||
allocate(CPFEM_dcsdE_knownGood(6,6,mesh_maxNips,mesh_NcpElems)) ; CPFEM_dcsdE_knownGood = 0.0_pReal
|
allocate(CPFEM_dcsdE_knownGood(6,6,mesh_maxNips,mesh_NcpElems)) ; CPFEM_dcsdE_knownGood = 0.0_pReal
|
||||||
#endif
|
|
||||||
|
|
||||||
! *** restore the last converged values of each essential variable from the binary file
|
! *** restore the last converged values of each essential variable from the binary file
|
||||||
if (restartRead) then
|
if (restartRead) then
|
||||||
|
@ -243,21 +228,17 @@ subroutine CPFEM_init
|
||||||
enddo readHomogInstances
|
enddo readHomogInstances
|
||||||
close (777)
|
close (777)
|
||||||
|
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
call IO_read_realFile(777,'convergeddcsdE',modelName,size(CPFEM_dcsdE))
|
call IO_read_realFile(777,'convergeddcsdE',modelName,size(CPFEM_dcsdE))
|
||||||
read (777,rec=1) CPFEM_dcsdE
|
read (777,rec=1) CPFEM_dcsdE
|
||||||
close (777)
|
close (777)
|
||||||
#endif
|
|
||||||
restartRead = .false.
|
restartRead = .false.
|
||||||
endif
|
endif
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0) then
|
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0) then
|
||||||
write(6,'(a32,1x,6(i8,1x))') 'CPFEM_cs: ', shape(CPFEM_cs)
|
write(6,'(a32,1x,6(i8,1x))') 'CPFEM_cs: ', shape(CPFEM_cs)
|
||||||
write(6,'(a32,1x,6(i8,1x))') 'CPFEM_dcsdE: ', shape(CPFEM_dcsdE)
|
write(6,'(a32,1x,6(i8,1x))') 'CPFEM_dcsdE: ', shape(CPFEM_dcsdE)
|
||||||
write(6,'(a32,1x,6(i8,1x),/)') 'CPFEM_dcsdE_knownGood: ', shape(CPFEM_dcsdE_knownGood)
|
write(6,'(a32,1x,6(i8,1x),/)') 'CPFEM_dcsdE_knownGood: ', shape(CPFEM_dcsdE_knownGood)
|
||||||
write(6,'(a32,l1)') 'symmetricSolver: ', symmetricSolver
|
write(6,'(a32,l1)') 'symmetricSolver: ', symmetricSolver
|
||||||
endif
|
endif
|
||||||
#endif
|
|
||||||
flush(6)
|
flush(6)
|
||||||
|
|
||||||
end subroutine CPFEM_init
|
end subroutine CPFEM_init
|
||||||
|
@ -266,11 +247,7 @@ end subroutine CPFEM_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief perform initialization at first call, update variables and call the actual material model
|
!> @brief perform initialization at first call, update variables and call the actual material model
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature_inp, dt, elFE, ip, cauchyStress, jacobian)
|
subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature_inp, dt, elFE, ip, cauchyStress, jacobian)
|
||||||
#else
|
|
||||||
subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
|
||||||
#endif
|
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
defgradTolerance, &
|
defgradTolerance, &
|
||||||
iJacoStiffness, &
|
iJacoStiffness, &
|
||||||
|
@ -281,7 +258,6 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
debug_levelBasic, &
|
debug_levelBasic, &
|
||||||
debug_levelExtensive, &
|
debug_levelExtensive, &
|
||||||
debug_levelSelective, &
|
debug_levelSelective, &
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
debug_stressMaxLocation, &
|
debug_stressMaxLocation, &
|
||||||
debug_stressMinLocation, &
|
debug_stressMinLocation, &
|
||||||
debug_jacobianMaxLocation, &
|
debug_jacobianMaxLocation, &
|
||||||
|
@ -290,7 +266,6 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
debug_stressMin, &
|
debug_stressMin, &
|
||||||
debug_jacobianMax, &
|
debug_jacobianMax, &
|
||||||
debug_jacobianMin, &
|
debug_jacobianMin, &
|
||||||
#endif
|
|
||||||
debug_e, &
|
debug_e, &
|
||||||
debug_i
|
debug_i
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
|
@ -348,12 +323,10 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
use homogenization, only: &
|
use homogenization, only: &
|
||||||
materialpoint_F, &
|
materialpoint_F, &
|
||||||
materialpoint_F0, &
|
materialpoint_F0, &
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
materialpoint_P, &
|
materialpoint_P, &
|
||||||
materialpoint_dPdF, &
|
materialpoint_dPdF, &
|
||||||
materialpoint_results, &
|
materialpoint_results, &
|
||||||
materialpoint_sizeResults, &
|
materialpoint_sizeResults, &
|
||||||
#endif
|
|
||||||
materialpoint_stressAndItsTangent, &
|
materialpoint_stressAndItsTangent, &
|
||||||
materialpoint_postResults
|
materialpoint_postResults
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
|
@ -368,7 +341,6 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
real(pReal), dimension (3,3), intent(in) :: ffn, & !< deformation gradient for t=t0
|
real(pReal), dimension (3,3), intent(in) :: ffn, & !< deformation gradient for t=t0
|
||||||
ffn1 !< deformation gradient for t=t1
|
ffn1 !< deformation gradient for t=t1
|
||||||
integer(pInt), intent(in) :: mode !< computation mode 1: regular computation plus aging of results
|
integer(pInt), intent(in) :: mode !< computation mode 1: regular computation plus aging of results
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
real(pReal), intent(in) :: temperature_inp !< temperature
|
real(pReal), intent(in) :: temperature_inp !< temperature
|
||||||
logical, intent(in) :: parallelExecution !< flag indicating parallel computation of requested IPs
|
logical, intent(in) :: parallelExecution !< flag indicating parallel computation of requested IPs
|
||||||
real(pReal), dimension(6), intent(out) :: cauchyStress !< stress vector in Mandel notation
|
real(pReal), dimension(6), intent(out) :: cauchyStress !< stress vector in Mandel notation
|
||||||
|
@ -381,20 +353,13 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
real(pReal), dimension (3,3,3,3) :: H_sym, &
|
real(pReal), dimension (3,3,3,3) :: H_sym, &
|
||||||
H, &
|
H, &
|
||||||
jacobian3333 ! jacobian in Matrix notation
|
jacobian3333 ! jacobian in Matrix notation
|
||||||
#else
|
|
||||||
logical, parameter :: parallelExecution = .true.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
integer(pInt) elCP, & ! crystal plasticity element number
|
integer(pInt) elCP, & ! crystal plasticity element number
|
||||||
i, j, k, l, m, n, ph, homog, mySource
|
i, j, k, l, m, n, ph, homog, mySource
|
||||||
logical updateJaco ! flag indicating if JAcobian has to be updated
|
logical updateJaco ! flag indicating if JAcobian has to be updated
|
||||||
character(len=1024) :: rankStr
|
character(len=1024) :: rankStr
|
||||||
|
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
elCP = mesh_FEasCP('elem',elFE)
|
elCP = mesh_FEasCP('elem',elFE)
|
||||||
#else
|
|
||||||
elCP = elFE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0_pInt &
|
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0_pInt &
|
||||||
.and. elCP == debug_e .and. ip == debug_i) then
|
.and. elCP == debug_e .and. ip == debug_i) then
|
||||||
|
@ -411,13 +376,10 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
write(6,'(a,/)') '#############################################'; flush (6)
|
write(6,'(a,/)') '#############################################'; flush (6)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
if (iand(mode, CPFEM_BACKUPJACOBIAN) /= 0_pInt) &
|
if (iand(mode, CPFEM_BACKUPJACOBIAN) /= 0_pInt) &
|
||||||
CPFEM_dcsde_knownGood = CPFEM_dcsde
|
CPFEM_dcsde_knownGood = CPFEM_dcsde
|
||||||
if (iand(mode, CPFEM_RESTOREJACOBIAN) /= 0_pInt) &
|
if (iand(mode, CPFEM_RESTOREJACOBIAN) /= 0_pInt) &
|
||||||
CPFEM_dcsde = CPFEM_dcsde_knownGood
|
CPFEM_dcsde = CPFEM_dcsde_knownGood
|
||||||
#endif
|
|
||||||
|
|
||||||
!*** age results and write restart data if requested
|
!*** age results and write restart data if requested
|
||||||
if (iand(mode, CPFEM_AGERESULTS) /= 0_pInt) then
|
if (iand(mode, CPFEM_AGERESULTS) /= 0_pInt) then
|
||||||
|
@ -514,11 +476,9 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
enddo writeHomogInstances
|
enddo writeHomogInstances
|
||||||
close (777)
|
close (777)
|
||||||
|
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
call IO_write_jobRealFile(777,'convergeddcsdE',size(CPFEM_dcsdE))
|
call IO_write_jobRealFile(777,'convergeddcsdE',size(CPFEM_dcsdE))
|
||||||
write (777,rec=1) CPFEM_dcsdE
|
write (777,rec=1) CPFEM_dcsdE
|
||||||
close (777)
|
close (777)
|
||||||
#endif
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
endif ! results aging
|
endif ! results aging
|
||||||
|
@ -529,22 +489,18 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
!* If no parallel execution is required, there is no need to collect FEM input
|
!* If no parallel execution is required, there is no need to collect FEM input
|
||||||
|
|
||||||
if (.not. parallelExecution) then
|
if (.not. parallelExecution) then
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
temperature(material_homog(ip,elCP))%p(thermalMapping(material_homog(ip,elCP))%p(ip,elCP)) = &
|
temperature(material_homog(ip,elCP))%p(thermalMapping(material_homog(ip,elCP))%p(ip,elCP)) = &
|
||||||
temperature_inp
|
temperature_inp
|
||||||
#endif
|
|
||||||
materialpoint_F0(1:3,1:3,ip,elCP) = ffn
|
materialpoint_F0(1:3,1:3,ip,elCP) = ffn
|
||||||
materialpoint_F(1:3,1:3,ip,elCP) = ffn1
|
materialpoint_F(1:3,1:3,ip,elCP) = ffn1
|
||||||
|
|
||||||
elseif (iand(mode, CPFEM_COLLECT) /= 0_pInt) then
|
elseif (iand(mode, CPFEM_COLLECT) /= 0_pInt) then
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
call random_number(rnd)
|
call random_number(rnd)
|
||||||
if (rnd < 0.5_pReal) rnd = rnd - 1.0_pReal
|
if (rnd < 0.5_pReal) rnd = rnd - 1.0_pReal
|
||||||
CPFEM_cs(1:6,ip,elCP) = rnd * CPFEM_odd_stress
|
CPFEM_cs(1:6,ip,elCP) = rnd * CPFEM_odd_stress
|
||||||
CPFEM_dcsde(1:6,1:6,ip,elCP) = CPFEM_odd_jacobian * math_identity2nd(6)
|
CPFEM_dcsde(1:6,1:6,ip,elCP) = CPFEM_odd_jacobian * math_identity2nd(6)
|
||||||
temperature(material_homog(ip,elCP))%p(thermalMapping(material_homog(ip,elCP))%p(ip,elCP)) = &
|
temperature(material_homog(ip,elCP))%p(thermalMapping(material_homog(ip,elCP))%p(ip,elCP)) = &
|
||||||
temperature_inp
|
temperature_inp
|
||||||
#endif
|
|
||||||
materialpoint_F0(1:3,1:3,ip,elCP) = ffn
|
materialpoint_F0(1:3,1:3,ip,elCP) = ffn
|
||||||
materialpoint_F(1:3,1:3,ip,elCP) = ffn1
|
materialpoint_F(1:3,1:3,ip,elCP) = ffn1
|
||||||
CPFEM_calc_done = .false.
|
CPFEM_calc_done = .false.
|
||||||
|
@ -569,12 +525,10 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
endif
|
endif
|
||||||
outdatedFFN1 = .true.
|
outdatedFFN1 = .true.
|
||||||
endif
|
endif
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
call random_number(rnd)
|
call random_number(rnd)
|
||||||
if (rnd < 0.5_pReal) rnd = rnd - 1.0_pReal
|
if (rnd < 0.5_pReal) rnd = rnd - 1.0_pReal
|
||||||
CPFEM_cs(1:6,ip,elCP) = rnd*CPFEM_odd_stress
|
CPFEM_cs(1:6,ip,elCP) = rnd*CPFEM_odd_stress
|
||||||
CPFEM_dcsde(1:6,1:6,ip,elCP) = CPFEM_odd_jacobian*math_identity2nd(6)
|
CPFEM_dcsde(1:6,1:6,ip,elCP) = CPFEM_odd_jacobian*math_identity2nd(6)
|
||||||
#endif
|
|
||||||
|
|
||||||
!*** deformation gradient is not outdated
|
!*** deformation gradient is not outdated
|
||||||
|
|
||||||
|
@ -607,7 +561,6 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
!* map stress and stiffness (or return odd values if terminally ill)
|
!* map stress and stiffness (or return odd values if terminally ill)
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
terminalIllness: if ( terminallyIll ) then
|
terminalIllness: if ( terminallyIll ) then
|
||||||
|
|
||||||
call random_number(rnd)
|
call random_number(rnd)
|
||||||
|
@ -648,11 +601,8 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
CPFEM_dcsde(1:6,1:6,ip,elCP) = math_Mandel3333to66(J_inverse * H_sym)
|
CPFEM_dcsde(1:6,1:6,ip,elCP) = math_Mandel3333to66(J_inverse * H_sym)
|
||||||
|
|
||||||
endif terminalIllness
|
endif terminalIllness
|
||||||
#endif
|
|
||||||
|
|
||||||
endif validCalculation
|
endif validCalculation
|
||||||
|
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
!* report stress and stiffness
|
!* report stress and stiffness
|
||||||
if ((iand(debug_level(debug_CPFEM), debug_levelExtensive) /= 0_pInt) &
|
if ((iand(debug_level(debug_CPFEM), debug_levelExtensive) /= 0_pInt) &
|
||||||
.and. ((debug_e == elCP .and. debug_i == ip) &
|
.and. ((debug_e == elCP .and. debug_i == ip) &
|
||||||
|
@ -663,11 +613,9 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
'<< CPFEM >> Jacobian/GPa at elFE ip ', elFE, ip, transpose(CPFEM_dcsdE(1:6,1:6,ip,elCP))*1.0e-9_pReal
|
'<< CPFEM >> Jacobian/GPa at elFE ip ', elFE, ip, transpose(CPFEM_dcsdE(1:6,1:6,ip,elCP))*1.0e-9_pReal
|
||||||
flush(6)
|
flush(6)
|
||||||
endif
|
endif
|
||||||
#endif
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
!*** warn if stiffness close to zero
|
!*** warn if stiffness close to zero
|
||||||
if (all(abs(CPFEM_dcsdE(1:6,1:6,ip,elCP)) < 1e-10_pReal)) call IO_warning(601,elCP,ip)
|
if (all(abs(CPFEM_dcsdE(1:6,1:6,ip,elCP)) < 1e-10_pReal)) call IO_warning(601,elCP,ip)
|
||||||
|
|
||||||
|
@ -696,7 +644,6 @@ subroutine CPFEM_general(mode, ffn, ffn1, dt, elFE, ip)
|
||||||
debug_jacobianMinLocation = [elCP, ip]
|
debug_jacobianMinLocation = [elCP, ip]
|
||||||
debug_jacobianMin = minval(jacobian3333)
|
debug_jacobianMin = minval(jacobian3333)
|
||||||
endif
|
endif
|
||||||
#endif
|
|
||||||
|
|
||||||
end subroutine CPFEM_general
|
end subroutine CPFEM_general
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,6 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
||||||
CPFEM_CALCRESULTS, &
|
CPFEM_CALCRESULTS, &
|
||||||
CPFEM_AGERESULTS, &
|
CPFEM_AGERESULTS, &
|
||||||
CPFEM_COLLECT, &
|
CPFEM_COLLECT, &
|
||||||
CPFEM_RESTOREJACOBIAN, &
|
|
||||||
CPFEM_BACKUPJACOBIAN, &
|
CPFEM_BACKUPJACOBIAN, &
|
||||||
cycleCounter, &
|
cycleCounter, &
|
||||||
theInc, &
|
theInc, &
|
||||||
|
|
|
@ -244,13 +244,13 @@ subroutine hypela2(d,g,e,de,s,t,dt,ngens,m,nn,kcus,matus,ndi,nshear,disp, &
|
||||||
|
|
||||||
if (iand(debug_level(debug_MARC),debug_LEVELBASIC) /= 0_pInt) then
|
if (iand(debug_level(debug_MARC),debug_LEVELBASIC) /= 0_pInt) then
|
||||||
write(6,'(a,/,i8,i8,i2)') ' MSC.MARC information on shape of element(2), IP:', m, nn
|
write(6,'(a,/,i8,i8,i2)') ' MSC.MARC information on shape of element(2), IP:', m, nn
|
||||||
write(6,'(a,2(1i))'), ' Jacobian: ', ngens,ngens
|
write(6,'(a,2(i1))') ' Jacobian: ', ngens,ngens
|
||||||
write(6,'(a,1i)'), ' Direct stress: ', ndi
|
write(6,'(a,i1)') ' Direct stress: ', ndi
|
||||||
write(6,'(a,1i)'), ' Shear stress: ', nshear
|
write(6,'(a,i1)') ' Shear stress: ', nshear
|
||||||
write(6,'(a,1i)'), ' DoF: ', ndeg
|
write(6,'(a,i2)') ' DoF: ', ndeg
|
||||||
write(6,'(a,1i)'), ' Coordinates: ', ncrd
|
write(6,'(a,i2)') ' Coordinates: ', ncrd
|
||||||
write(6,'(a,1i)'), ' Nodes: ', nnode
|
write(6,'(a,i12)') ' Nodes: ', nnode
|
||||||
write(6,'(a,1i)'), ' Deformation gradient: ', itel
|
write(6,'(a,i1)') ' Deformation gradient: ', itel
|
||||||
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' Deformation gradient at t=n:', &
|
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' Deformation gradient at t=n:', &
|
||||||
math_transpose33(ffn)
|
math_transpose33(ffn)
|
||||||
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' Deformation gradient at t=n+1:', &
|
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' Deformation gradient at t=n+1:', &
|
||||||
|
@ -421,4 +421,4 @@ subroutine plotv(v,s,sp,etot,eplas,ecreep,t,m,nn,layer,ndi,nshear,jpltcd)
|
||||||
if (jpltcd > materialpoint_sizeResults) call IO_error(700_pInt,jpltcd) ! complain about out of bounds error
|
if (jpltcd > materialpoint_sizeResults) call IO_error(700_pInt,jpltcd) ! complain about out of bounds error
|
||||||
v = materialpoint_results(jpltcd,nn,mesh_FEasCP('elem', m))
|
v = materialpoint_results(jpltcd,nn,mesh_FEasCP('elem', m))
|
||||||
|
|
||||||
end subroutine plotv
|
end subroutine plotv
|
||||||
|
|
|
@ -192,7 +192,7 @@ program DAMASK_spectral
|
||||||
if ((N_def /= N_n) .or. (N_n /= N_t) .or. N_n < 1_pInt) & ! sanity check
|
if ((N_def /= N_n) .or. (N_n /= N_t) .or. N_n < 1_pInt) & ! sanity check
|
||||||
call IO_error(error_ID=837_pInt,ext_msg = trim(loadCaseFile)) ! error message for incomplete loadcase
|
call IO_error(error_ID=837_pInt,ext_msg = trim(loadCaseFile)) ! error message for incomplete loadcase
|
||||||
allocate (loadCases(N_n)) ! array of load cases
|
allocate (loadCases(N_n)) ! array of load cases
|
||||||
loadCases%P%myType='p'
|
loadCases%stress%myType='stress'
|
||||||
|
|
||||||
do i = 1, size(loadCases)
|
do i = 1, size(loadCases)
|
||||||
allocate(loadCases(i)%ID(nActiveFields))
|
allocate(loadCases(i)%ID(nActiveFields))
|
||||||
|
@ -244,10 +244,10 @@ program DAMASK_spectral
|
||||||
temp_maskVector(j) = IO_stringValue(line,chunkPos,i+j) /= '*' ! true if not an asterisk
|
temp_maskVector(j) = IO_stringValue(line,chunkPos,i+j) /= '*' ! true if not an asterisk
|
||||||
if (temp_maskVector(j)) temp_valueVector(j) = IO_floatValue(line,chunkPos,i+j) ! read value where applicable
|
if (temp_maskVector(j)) temp_valueVector(j) = IO_floatValue(line,chunkPos,i+j) ! read value where applicable
|
||||||
enddo
|
enddo
|
||||||
loadCases(currentLoadCase)%P%maskLogical = transpose(reshape(temp_maskVector,[ 3,3]))
|
loadCases(currentLoadCase)%stress%maskLogical = transpose(reshape(temp_maskVector,[ 3,3]))
|
||||||
loadCases(currentLoadCase)%P%maskFloat = merge(ones,zeros,&
|
loadCases(currentLoadCase)%stress%maskFloat = merge(ones,zeros,&
|
||||||
loadCases(currentLoadCase)%P%maskLogical)
|
loadCases(currentLoadCase)%stress%maskLogical)
|
||||||
loadCases(currentLoadCase)%P%values = math_plain9to33(temp_valueVector)
|
loadCases(currentLoadCase)%stress%values = math_plain9to33(temp_valueVector)
|
||||||
case('t','time','delta') ! increment time
|
case('t','time','delta') ! increment time
|
||||||
loadCases(currentLoadCase)%time = IO_floatValue(line,chunkPos,i+1_pInt)
|
loadCases(currentLoadCase)%time = IO_floatValue(line,chunkPos,i+1_pInt)
|
||||||
case('n','incs','increments','steps') ! number of increments
|
case('n','incs','increments','steps') ! number of increments
|
||||||
|
@ -318,16 +318,16 @@ program DAMASK_spectral
|
||||||
endif
|
endif
|
||||||
enddo; write(6,'(/)',advance='no')
|
enddo; write(6,'(/)',advance='no')
|
||||||
enddo
|
enddo
|
||||||
if (any(loadCases(currentLoadCase)%P%maskLogical .eqv. &
|
if (any(loadCases(currentLoadCase)%stress%maskLogical .eqv. &
|
||||||
loadCases(currentLoadCase)%deformation%maskLogical)) errorID = 831_pInt ! exclusive or masking only
|
loadCases(currentLoadCase)%deformation%maskLogical)) errorID = 831_pInt ! exclusive or masking only
|
||||||
if (any(loadCases(currentLoadCase)%P%maskLogical .and. &
|
if (any(loadCases(currentLoadCase)%stress%maskLogical .and. &
|
||||||
transpose(loadCases(currentLoadCase)%P%maskLogical) .and. &
|
transpose(loadCases(currentLoadCase)%stress%maskLogical) .and. &
|
||||||
reshape([ .false.,.true.,.true.,.true.,.false.,.true.,.true.,.true.,.false.],[ 3,3]))) &
|
reshape([ .false.,.true.,.true.,.true.,.false.,.true.,.true.,.true.,.false.],[ 3,3]))) &
|
||||||
errorID = 838_pInt ! no rotation is allowed by stress BC
|
errorID = 838_pInt ! no rotation is allowed by stress BC
|
||||||
write(6,'(2x,a)') 'stress / GPa:'
|
write(6,'(2x,a)') 'stress / GPa:'
|
||||||
do i = 1_pInt, 3_pInt; do j = 1_pInt, 3_pInt
|
do i = 1_pInt, 3_pInt; do j = 1_pInt, 3_pInt
|
||||||
if(loadCases(currentLoadCase)%P%maskLogical(i,j)) then
|
if(loadCases(currentLoadCase)%stress%maskLogical(i,j)) then
|
||||||
write(6,'(2x,f12.7)',advance='no') loadCases(currentLoadCase)%P%values(i,j)*1e-9_pReal
|
write(6,'(2x,f12.7)',advance='no') loadCases(currentLoadCase)%stress%values(i,j)*1e-9_pReal
|
||||||
else
|
else
|
||||||
write(6,'(2x,12a)',advance='no') ' * '
|
write(6,'(2x,12a)',advance='no') ' * '
|
||||||
endif
|
endif
|
||||||
|
@ -524,30 +524,25 @@ program DAMASK_spectral
|
||||||
case (DAMASK_spectral_SolverBasicPETSc_label)
|
case (DAMASK_spectral_SolverBasicPETSc_label)
|
||||||
call BasicPETSc_forward (&
|
call BasicPETSc_forward (&
|
||||||
guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
||||||
F_BC = loadCases(currentLoadCase)%deformation, &
|
deformation_BC = loadCases(currentLoadCase)%deformation, &
|
||||||
P_BC = loadCases(currentLoadCase)%P, &
|
stress_BC = loadCases(currentLoadCase)%stress, &
|
||||||
rotation_BC = loadCases(currentLoadCase)%rotation)
|
rotation_BC = loadCases(currentLoadCase)%rotation)
|
||||||
case (DAMASK_spectral_SolverAL_label)
|
case (DAMASK_spectral_SolverAL_label)
|
||||||
call AL_forward (&
|
call AL_forward (&
|
||||||
guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
||||||
F_BC = loadCases(currentLoadCase)%deformation, &
|
deformation_BC = loadCases(currentLoadCase)%deformation, &
|
||||||
P_BC = loadCases(currentLoadCase)%P, &
|
stress_BC = loadCases(currentLoadCase)%stress, &
|
||||||
rotation_BC = loadCases(currentLoadCase)%rotation)
|
rotation_BC = loadCases(currentLoadCase)%rotation)
|
||||||
case (DAMASK_spectral_SolverPolarisation_label)
|
case (DAMASK_spectral_SolverPolarisation_label)
|
||||||
call Polarisation_forward (&
|
call Polarisation_forward (&
|
||||||
guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
||||||
F_BC = loadCases(currentLoadCase)%deformation, &
|
deformation_BC = loadCases(currentLoadCase)%deformation, &
|
||||||
P_BC = loadCases(currentLoadCase)%P, &
|
stress_BC = loadCases(currentLoadCase)%stress, &
|
||||||
rotation_BC = loadCases(currentLoadCase)%rotation)
|
rotation_BC = loadCases(currentLoadCase)%rotation)
|
||||||
end select
|
end select
|
||||||
|
|
||||||
case(FIELD_THERMAL_ID)
|
case(FIELD_THERMAL_ID); call spectral_thermal_forward()
|
||||||
call spectral_thermal_forward (&
|
case(FIELD_DAMAGE_ID); call spectral_damage_forward()
|
||||||
guess,timeinc,timeIncOld,remainingLoadCaseTime)
|
|
||||||
|
|
||||||
case(FIELD_DAMAGE_ID)
|
|
||||||
call spectral_damage_forward (&
|
|
||||||
guess,timeinc,timeIncOld,remainingLoadCaseTime)
|
|
||||||
end select
|
end select
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -562,34 +557,29 @@ program DAMASK_spectral
|
||||||
select case (spectral_solver)
|
select case (spectral_solver)
|
||||||
case (DAMASK_spectral_SolverBasicPETSc_label)
|
case (DAMASK_spectral_SolverBasicPETSc_label)
|
||||||
solres(field) = BasicPETSC_solution (&
|
solres(field) = BasicPETSC_solution (&
|
||||||
incInfo,guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
incInfo,timeinc,timeIncOld, &
|
||||||
P_BC = loadCases(currentLoadCase)%P, &
|
stress_BC = loadCases(currentLoadCase)%stress, &
|
||||||
F_BC = loadCases(currentLoadCase)%deformation, &
|
|
||||||
rotation_BC = loadCases(currentLoadCase)%rotation)
|
rotation_BC = loadCases(currentLoadCase)%rotation)
|
||||||
|
|
||||||
case (DAMASK_spectral_SolverAL_label)
|
case (DAMASK_spectral_SolverAL_label)
|
||||||
solres(field) = AL_solution (&
|
solres(field) = AL_solution (&
|
||||||
incInfo,guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
incInfo,timeinc,timeIncOld, &
|
||||||
P_BC = loadCases(currentLoadCase)%P, &
|
stress_BC = loadCases(currentLoadCase)%stress, &
|
||||||
F_BC = loadCases(currentLoadCase)%deformation, &
|
|
||||||
rotation_BC = loadCases(currentLoadCase)%rotation)
|
rotation_BC = loadCases(currentLoadCase)%rotation)
|
||||||
|
|
||||||
case (DAMASK_spectral_SolverPolarisation_label)
|
case (DAMASK_spectral_SolverPolarisation_label)
|
||||||
solres(field) = Polarisation_solution (&
|
solres(field) = Polarisation_solution (&
|
||||||
incInfo,guess,timeinc,timeIncOld,remainingLoadCaseTime, &
|
incInfo,timeinc,timeIncOld, &
|
||||||
P_BC = loadCases(currentLoadCase)%P, &
|
stress_BC = loadCases(currentLoadCase)%stress, &
|
||||||
F_BC = loadCases(currentLoadCase)%deformation, &
|
|
||||||
rotation_BC = loadCases(currentLoadCase)%rotation)
|
rotation_BC = loadCases(currentLoadCase)%rotation)
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
case(FIELD_THERMAL_ID)
|
case(FIELD_THERMAL_ID)
|
||||||
solres(field) = spectral_thermal_solution (&
|
solres(field) = spectral_thermal_solution(timeinc,timeIncOld,remainingLoadCaseTime)
|
||||||
guess,timeinc,timeIncOld,remainingLoadCaseTime)
|
|
||||||
|
|
||||||
case(FIELD_DAMAGE_ID)
|
case(FIELD_DAMAGE_ID)
|
||||||
solres(field) = spectral_damage_solution (&
|
solres(field) = spectral_damage_solution(timeinc,timeIncOld,remainingLoadCaseTime)
|
||||||
guess,timeinc,timeIncOld,remainingLoadCaseTime)
|
|
||||||
|
|
||||||
end select
|
end select
|
||||||
if (.not. solres(field)%converged) exit ! no solution found
|
if (.not. solres(field)%converged) exit ! no solution found
|
||||||
|
|
12
code/IO.f90
12
code/IO.f90
|
@ -1267,8 +1267,8 @@ integer(pInt) function IO_countContinuousIntValues(fileUnit)
|
||||||
line = IO_read(fileUnit, .true.) ! reset IO_read
|
line = IO_read(fileUnit, .true.) ! reset IO_read
|
||||||
exit
|
exit
|
||||||
elseif (IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'to' ) then ! found range indicator
|
elseif (IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'to' ) then ! found range indicator
|
||||||
IO_countContinuousIntValues = 1_pInt + IO_intValue(line,chunkPos,3_pInt) &
|
IO_countContinuousIntValues = 1_pInt + abs( IO_intValue(line,chunkPos,3_pInt) &
|
||||||
- IO_intValue(line,chunkPos,1_pInt)
|
- IO_intValue(line,chunkPos,1_pInt))
|
||||||
line = IO_read(fileUnit, .true.) ! reset IO_read
|
line = IO_read(fileUnit, .true.) ! reset IO_read
|
||||||
exit ! only one single range indicator allowed
|
exit ! only one single range indicator allowed
|
||||||
else if (IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'of' ) then ! found multiple entries indicator
|
else if (IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'of' ) then ! found multiple entries indicator
|
||||||
|
@ -1321,9 +1321,9 @@ function IO_continuousIntValues(fileUnit,maxN,lookupName,lookupMap,lookupMaxN)
|
||||||
lookupMaxN
|
lookupMaxN
|
||||||
integer(pInt), dimension(:,:), intent(in) :: lookupMap
|
integer(pInt), dimension(:,:), intent(in) :: lookupMap
|
||||||
character(len=64), dimension(:), intent(in) :: lookupName
|
character(len=64), dimension(:), intent(in) :: lookupName
|
||||||
integer(pInt) :: i
|
integer(pInt) :: i,first,last
|
||||||
#ifdef Abaqus
|
#ifdef Abaqus
|
||||||
integer(pInt) :: j,l,c,first,last
|
integer(pInt) :: j,l,c
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
integer(pInt), allocatable, dimension(:) :: chunkPos
|
integer(pInt), allocatable, dimension(:) :: chunkPos
|
||||||
|
@ -1348,7 +1348,9 @@ function IO_continuousIntValues(fileUnit,maxN,lookupName,lookupMap,lookupMaxN)
|
||||||
enddo
|
enddo
|
||||||
exit
|
exit
|
||||||
else if (chunkPos(1) > 2_pInt .and. IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'to' ) then ! found range indicator
|
else if (chunkPos(1) > 2_pInt .and. IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'to' ) then ! found range indicator
|
||||||
do i = IO_intValue(line,chunkPos,1_pInt),IO_intValue(line,chunkPos,3_pInt)
|
first = IO_intValue(line,chunkPos,1_pInt)
|
||||||
|
last = IO_intValue(line,chunkPos,3_pInt)
|
||||||
|
do i = first, last, sign(1_pInt,last-first)
|
||||||
IO_continuousIntValues(1) = IO_continuousIntValues(1) + 1_pInt
|
IO_continuousIntValues(1) = IO_continuousIntValues(1) + 1_pInt
|
||||||
IO_continuousIntValues(1+IO_continuousIntValues(1)) = i
|
IO_continuousIntValues(1+IO_continuousIntValues(1)) = i
|
||||||
enddo
|
enddo
|
||||||
|
|
|
@ -22,7 +22,7 @@ DAMASKVERSION :=$(shell cat ../VERSION)
|
||||||
include ${PETSC_DIR}/lib/petsc/conf/variables
|
include ${PETSC_DIR}/lib/petsc/conf/variables
|
||||||
include ${PETSC_DIR}/lib/petsc/conf/rules
|
include ${PETSC_DIR}/lib/petsc/conf/rules
|
||||||
|
|
||||||
INCLUDE_DIRS := $(PETSC_FC_INCLUDES) -DPETSc -I../lib
|
INCLUDE_DIRS := $(PETSC_FC_INCLUDES) -DPETSc
|
||||||
LIBRARIES := $(PETSC_WITH_EXTERNAL_LIB)
|
LIBRARIES := $(PETSC_WITH_EXTERNAL_LIB)
|
||||||
FCOMPILERNAME ?= $(FC)
|
FCOMPILERNAME ?= $(FC)
|
||||||
CCOMPILERNAME ?= $(CC)
|
CCOMPILERNAME ?= $(CC)
|
||||||
|
@ -65,7 +65,7 @@ endif
|
||||||
|
|
||||||
# settings for shared memory multicore support
|
# settings for shared memory multicore support
|
||||||
ifeq "$(OPENMP)" "ON"
|
ifeq "$(OPENMP)" "ON"
|
||||||
OPENMP_FLAG_ifort =-openmp -openmp-report0 -parallel
|
OPENMP_FLAG_ifort =-qopenmp -parallel
|
||||||
OPENMP_FLAG_gfortran =-fopenmp
|
OPENMP_FLAG_gfortran =-fopenmp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -508,13 +508,11 @@ end subroutine crystallite_init
|
||||||
subroutine crystallite_stressAndItsTangent(updateJaco)
|
subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
tol_math_check, &
|
tol_math_check, &
|
||||||
dNeq
|
dNeq0
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
subStepMinCryst, &
|
subStepMinCryst, &
|
||||||
subStepSizeCryst, &
|
subStepSizeCryst, &
|
||||||
stepIncreaseCryst, &
|
stepIncreaseCryst, &
|
||||||
pert_Fg, &
|
|
||||||
pert_method, &
|
|
||||||
nCryst, &
|
nCryst, &
|
||||||
numerics_integrator, &
|
numerics_integrator, &
|
||||||
numerics_integrationMode, &
|
numerics_integrationMode, &
|
||||||
|
@ -574,7 +572,6 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
logical, intent(in) :: &
|
logical, intent(in) :: &
|
||||||
updateJaco !< whether to update the Jacobian (stiffness) or not
|
updateJaco !< whether to update the Jacobian (stiffness) or not
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
myPert, & ! perturbation with correct sign
|
|
||||||
formerSubStep, &
|
formerSubStep, &
|
||||||
subFracIntermediate
|
subFracIntermediate
|
||||||
real(pReal), dimension(3,3) :: &
|
real(pReal), dimension(3,3) :: &
|
||||||
|
@ -586,14 +583,11 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
c, & !< counter in integration point component loop
|
c, & !< counter in integration point component loop
|
||||||
i, & !< counter in integration point loop
|
i, & !< counter in integration point loop
|
||||||
e, & !< counter in element loop
|
e, & !< counter in element loop
|
||||||
k, &
|
|
||||||
l, &
|
|
||||||
n, startIP, endIP, &
|
n, startIP, endIP, &
|
||||||
neighboring_e, &
|
neighboring_e, &
|
||||||
neighboring_i, &
|
neighboring_i, &
|
||||||
o, &
|
o, &
|
||||||
p, &
|
p, &
|
||||||
perturbation , & ! loop counter for forward,backward perturbation mode
|
|
||||||
myNcomponents, &
|
myNcomponents, &
|
||||||
mySource
|
mySource
|
||||||
! local variables used for calculating analytic Jacobian
|
! local variables used for calculating analytic Jacobian
|
||||||
|
@ -782,7 +776,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
subFracIntermediate = maxval(crystallite_subFrac, mask=.not.crystallite_localPlasticity)
|
subFracIntermediate = maxval(crystallite_subFrac, mask=.not.crystallite_localPlasticity)
|
||||||
if (dNeq(subFracIntermediate,0.0_pReal)) then
|
if (dNeq0(subFracIntermediate)) then
|
||||||
crystallite_neighborEnforcedCutback = .false. ! look for ips that require a cutback because of a nonconverged neighbor
|
crystallite_neighborEnforcedCutback = .false. ! look for ips that require a cutback because of a nonconverged neighbor
|
||||||
!$OMP PARALLEL
|
!$OMP PARALLEL
|
||||||
!$OMP DO PRIVATE(neighboring_e,neighboring_i)
|
!$OMP DO PRIVATE(neighboring_e,neighboring_i)
|
||||||
|
@ -823,7 +817,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
!$OMP DO PRIVATE(neighboring_e,neighboring_i)
|
!$OMP DO PRIVATE(neighboring_e,neighboring_i)
|
||||||
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
||||||
if (.not. crystallite_localPlasticity(1,i,e) .and. dNeq(crystallite_subFrac(1,i,e),0.0_pReal)) then
|
if (.not. crystallite_localPlasticity(1,i,e) .and. dNeq0(crystallite_subFrac(1,i,e))) then
|
||||||
do n = 1_pInt,FE_NipNeighbors(FE_celltype(FE_geomtype(mesh_element(2,e))))
|
do n = 1_pInt,FE_NipNeighbors(FE_celltype(FE_geomtype(mesh_element(2,e))))
|
||||||
neighboring_e = mesh_ipNeighborhood(1,n,i,e)
|
neighboring_e = mesh_ipNeighborhood(1,n,i,e)
|
||||||
neighboring_i = mesh_ipNeighborhood(2,n,i,e)
|
neighboring_i = mesh_ipNeighborhood(2,n,i,e)
|
||||||
|
@ -3076,7 +3070,7 @@ end subroutine crystallite_integrateStateFPI
|
||||||
logical function crystallite_stateJump(ipc,ip,el)
|
logical function crystallite_stateJump(ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
prec_isNaN, &
|
prec_isNaN, &
|
||||||
dNeq
|
dNeq0
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_crystallite, &
|
debug_crystallite, &
|
||||||
|
@ -3128,7 +3122,7 @@ logical function crystallite_stateJump(ipc,ip,el)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
#ifndef _OPENMP
|
#ifndef _OPENMP
|
||||||
if (any(dNeq(plasticState(p)%deltaState(1:mySizePlasticDeltaState,c),0.0_pReal)) &
|
if (any(dNeq0(plasticState(p)%deltaState(1:mySizePlasticDeltaState,c))) &
|
||||||
.and. iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt &
|
.and. iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt &
|
||||||
.and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) &
|
.and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) &
|
||||||
.or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0_pInt)) then
|
.or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0_pInt)) then
|
||||||
|
@ -3184,7 +3178,7 @@ logical function crystallite_integrateStress(&
|
||||||
use prec, only: pLongInt, &
|
use prec, only: pLongInt, &
|
||||||
tol_math_check, &
|
tol_math_check, &
|
||||||
prec_isNaN, &
|
prec_isNaN, &
|
||||||
dEq
|
dEq0
|
||||||
use numerics, only: nStress, &
|
use numerics, only: nStress, &
|
||||||
aTol_crystalliteStress, &
|
aTol_crystalliteStress, &
|
||||||
rTol_crystalliteStress, &
|
rTol_crystalliteStress, &
|
||||||
|
@ -3331,7 +3325,7 @@ logical function crystallite_integrateStress(&
|
||||||
!* inversion of Fp_current...
|
!* inversion of Fp_current...
|
||||||
|
|
||||||
invFp_current = math_inv33(Fp_current)
|
invFp_current = math_inv33(Fp_current)
|
||||||
failedInversionFp: if (all(dEq(invFp_current,0.0_pReal))) then
|
failedInversionFp: if (all(dEq0(invFp_current))) then
|
||||||
#ifndef _OPENMP
|
#ifndef _OPENMP
|
||||||
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then
|
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then
|
||||||
write(6,'(a,i8,1x,a,i8,a,1x,i2,1x,i3)') '<< CRYST >> integrateStress failed on inversion of Fp_current at el (elFE) ip g ',&
|
write(6,'(a,i8,1x,a,i8,a,1x,i2,1x,i3)') '<< CRYST >> integrateStress failed on inversion of Fp_current at el (elFE) ip g ',&
|
||||||
|
@ -3347,7 +3341,7 @@ logical function crystallite_integrateStress(&
|
||||||
!* inversion of Fi_current...
|
!* inversion of Fi_current...
|
||||||
|
|
||||||
invFi_current = math_inv33(Fi_current)
|
invFi_current = math_inv33(Fi_current)
|
||||||
failedInversionFi: if (all(dEq(invFi_current,0.0_pReal))) then
|
failedInversionFi: if (all(dEq0(invFi_current))) then
|
||||||
#ifndef _OPENMP
|
#ifndef _OPENMP
|
||||||
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then
|
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then
|
||||||
write(6,'(a,i8,1x,a,i8,a,1x,i2,1x,i3)') '<< CRYST >> integrateStress failed on inversion of Fi_current at el (elFE) ip ipc ',&
|
write(6,'(a,i8,1x,a,i8,a,1x,i2,1x,i3)') '<< CRYST >> integrateStress failed on inversion of Fi_current at el (elFE) ip ipc ',&
|
||||||
|
@ -3606,7 +3600,7 @@ logical function crystallite_integrateStress(&
|
||||||
invFp_new = math_mul33x33(invFp_current,B)
|
invFp_new = math_mul33x33(invFp_current,B)
|
||||||
invFp_new = invFp_new / math_det33(invFp_new)**(1.0_pReal/3.0_pReal) ! regularize by det
|
invFp_new = invFp_new / math_det33(invFp_new)**(1.0_pReal/3.0_pReal) ! regularize by det
|
||||||
Fp_new = math_inv33(invFp_new)
|
Fp_new = math_inv33(invFp_new)
|
||||||
failedInversionInvFp: if (all(dEq(Fp_new,0.0_pReal))) then
|
failedInversionInvFp: if (all(dEq0(Fp_new))) then
|
||||||
#ifndef _OPENMP
|
#ifndef _OPENMP
|
||||||
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then
|
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then
|
||||||
write(6,'(a,i8,1x,a,i8,a,1x,i2,1x,i3,a,i3)') '<< CRYST >> integrateStress failed on invFp_new inversion at el ip ipc ',&
|
write(6,'(a,i8,1x,a,i8,a,1x,i2,1x,i3,a,i3)') '<< CRYST >> integrateStress failed on invFp_new inversion at el ip ipc ',&
|
||||||
|
|
|
@ -387,7 +387,7 @@ end subroutine homogenization_RGC_partitionDeformation
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dEq
|
dEq0
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_homogenization,&
|
debug_homogenization,&
|
||||||
|
@ -443,7 +443,7 @@ function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
||||||
real(pReal), dimension(:,:), allocatable :: tract,jmatrix,jnverse,smatrix,pmatrix,rmatrix
|
real(pReal), dimension(:,:), allocatable :: tract,jmatrix,jnverse,smatrix,pmatrix,rmatrix
|
||||||
real(pReal), dimension(:), allocatable :: resid,relax,p_relax,p_resid,drelax
|
real(pReal), dimension(:), allocatable :: resid,relax,p_relax,p_resid,drelax
|
||||||
|
|
||||||
zeroTimeStep: if(dEq(dt,0.0_pReal)) then
|
zeroTimeStep: if(dEq0(dt)) then
|
||||||
homogenization_RGC_updateState = .true. ! pretend everything is fine and return
|
homogenization_RGC_updateState = .true. ! pretend everything is fine and return
|
||||||
return
|
return
|
||||||
endif zeroTimeStep
|
endif zeroTimeStep
|
||||||
|
|
|
@ -67,8 +67,6 @@ subroutine kinematics_hydrogen_strain_init(fileUnit)
|
||||||
KINEMATICS_hydrogen_strain_ID, &
|
KINEMATICS_hydrogen_strain_ID, &
|
||||||
material_Nphase, &
|
material_Nphase, &
|
||||||
MATERIAL_partPhase
|
MATERIAL_partPhase
|
||||||
use numerics,only: &
|
|
||||||
worldrank
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: fileUnit
|
integer(pInt), intent(in) :: fileUnit
|
||||||
|
@ -79,11 +77,9 @@ subroutine kinematics_hydrogen_strain_init(fileUnit)
|
||||||
tag = '', &
|
tag = '', &
|
||||||
line = ''
|
line = ''
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
write(6,'(/,a)') ' <<<+- kinematics_'//KINEMATICS_hydrogen_strain_LABEL//' init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- kinematics_'//KINEMATICS_hydrogen_strain_LABEL//' init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
maxNinstance = int(count(phase_kinematics == KINEMATICS_hydrogen_strain_ID),pInt)
|
maxNinstance = int(count(phase_kinematics == KINEMATICS_hydrogen_strain_ID),pInt)
|
||||||
if (maxNinstance == 0_pInt) return
|
if (maxNinstance == 0_pInt) return
|
||||||
|
|
|
@ -577,26 +577,26 @@ module lattice
|
||||||
real(pReal), dimension(4+4,LATTICE_hex_Nslip), parameter, private :: &
|
real(pReal), dimension(4+4,LATTICE_hex_Nslip), parameter, private :: &
|
||||||
LATTICE_hex_systemSlip = reshape(real([&
|
LATTICE_hex_systemSlip = reshape(real([&
|
||||||
! Slip direction Plane normal
|
! Slip direction Plane normal
|
||||||
! Basal systems <11.0>{00.1} (independent of c/a-ratio, Bravais notation (4 coordinate base))
|
! Basal systems <11.0>{00.1} (independent of c/a-ratio, Bravais notation (4 coordinate base))
|
||||||
2, -1, -1, 0, 0, 0, 0, 1, &
|
2, -1, -1, 0, 0, 0, 0, 1, &
|
||||||
-1, 2, -1, 0, 0, 0, 0, 1, &
|
-1, 2, -1, 0, 0, 0, 0, 1, &
|
||||||
-1, -1, 2, 0, 0, 0, 0, 1, &
|
-1, -1, 2, 0, 0, 0, 0, 1, &
|
||||||
! 1st type prismatic systems <11.0>{10.0} (independent of c/a-ratio)
|
! 1st type prismatic systems <11.0>{10.0} (independent of c/a-ratio)
|
||||||
2, -1, -1, 0, 0, 1, -1, 0, &
|
2, -1, -1, 0, 0, 1, -1, 0, &
|
||||||
-1, 2, -1, 0, -1, 0, 1, 0, &
|
-1, 2, -1, 0, -1, 0, 1, 0, &
|
||||||
-1, -1, 2, 0, 1, -1, 0, 0, &
|
-1, -1, 2, 0, 1, -1, 0, 0, &
|
||||||
! 2nd type prismatic systems <10.0>{11.0} -- a slip; plane normals independent of c/a-ratio
|
! 2nd type prismatic systems <10.0>{11.0} -- a slip; plane normals independent of c/a-ratio
|
||||||
0, 1, -1, 0, 2, -1, -1, 0, &
|
0, 1, -1, 0, 2, -1, -1, 0, &
|
||||||
-1, 0, 1, 0, -1, 2, -1, 0, &
|
-1, 0, 1, 0, -1, 2, -1, 0, &
|
||||||
1, -1, 0, 0, -1, -1, 2, 0, &
|
1, -1, 0, 0, -1, -1, 2, 0, &
|
||||||
! 1st type 1st order pyramidal systems <11.0>{-11.1} -- plane normals depend on the c/a-ratio
|
! 1st type 1st order pyramidal systems <11.0>{-11.1} -- plane normals depend on the c/a-ratio
|
||||||
2, -1, -1, 0, 0, 1, -1, 1, &
|
2, -1, -1, 0, 0, 1, -1, 1, &
|
||||||
-1, 2, -1, 0, -1, 0, 1, 1, &
|
-1, 2, -1, 0, -1, 0, 1, 1, &
|
||||||
-1, -1, 2, 0, 1, -1, 0, 1, &
|
-1, -1, 2, 0, 1, -1, 0, 1, &
|
||||||
1, 1, -2, 0, -1, 1, 0, 1, &
|
1, 1, -2, 0, -1, 1, 0, 1, &
|
||||||
-2, 1, 1, 0, 0, -1, 1, 1, &
|
-2, 1, 1, 0, 0, -1, 1, 1, &
|
||||||
1, -2, 1, 0, 1, 0, -1, 1, &
|
1, -2, 1, 0, 1, 0, -1, 1, &
|
||||||
! pyramidal system: c+a slip <11.3>{-10.1} -- plane normals depend on the c/a-ratio
|
! pyramidal system: c+a slip <11.3>{-10.1} -- plane normals depend on the c/a-ratio
|
||||||
2, -1, -1, 3, -1, 1, 0, 1, &
|
2, -1, -1, 3, -1, 1, 0, 1, &
|
||||||
1, -2, 1, 3, -1, 1, 0, 1, &
|
1, -2, 1, 3, -1, 1, 0, 1, &
|
||||||
-1, -1, 2, 3, 1, 0, -1, 1, &
|
-1, -1, 2, 3, 1, 0, -1, 1, &
|
||||||
|
@ -609,7 +609,7 @@ module lattice
|
||||||
2, -1, -1, 3, -1, 0, 1, 1, &
|
2, -1, -1, 3, -1, 0, 1, 1, &
|
||||||
1, -2, 1, 3, 0, 1, -1, 1, &
|
1, -2, 1, 3, 0, 1, -1, 1, &
|
||||||
-1, -1, 2, 3, 0, 1, -1, 1, &
|
-1, -1, 2, 3, 0, 1, -1, 1, &
|
||||||
! pyramidal system: c+a slip <11.3>{-1-1.2} -- as for hexagonal ice (Castelnau et al. 1996, similar to twin system found below)
|
! pyramidal system: c+a slip <11.3>{-1-1.2} -- as for hexagonal ice (Castelnau et al. 1996, similar to twin system found below)
|
||||||
2, -1, -1, 3, -2, 1, 1, 2, & ! sorted according to similar twin system
|
2, -1, -1, 3, -2, 1, 1, 2, & ! sorted according to similar twin system
|
||||||
-1, 2, -1, 3, 1, -2, 1, 2, & ! <11.3>{-1-1.2} shear = 2((c/a)^2-2)/(3 c/a)
|
-1, 2, -1, 3, 1, -2, 1, 2, & ! <11.3>{-1-1.2} shear = 2((c/a)^2-2)/(3 c/a)
|
||||||
-1, -1, 2, 3, 1, 1, -2, 2, &
|
-1, -1, 2, 3, 1, 1, -2, 2, &
|
||||||
|
|
|
@ -549,13 +549,13 @@ subroutine mesh_init(ip,el)
|
||||||
call IO_open_file(FILEUNIT,geometryFile) ! parse info from geometry file...
|
call IO_open_file(FILEUNIT,geometryFile) ! parse info from geometry file...
|
||||||
if (myDebug) write(6,'(a)') ' Opened geometry file'; flush(6)
|
if (myDebug) write(6,'(a)') ' Opened geometry file'; flush(6)
|
||||||
grid = mesh_spectral_getGrid(fileUnit)
|
grid = mesh_spectral_getGrid(fileUnit)
|
||||||
call MPI_comm_size(MPI_COMM_WORLD, worldsize, ierr)
|
call MPI_comm_size(PETSC_COMM_WORLD, worldsize, ierr)
|
||||||
if(ierr /=0_pInt) call IO_error(894_pInt, ext_msg='MPI_comm_size')
|
if(ierr /=0_pInt) call IO_error(894_pInt, ext_msg='MPI_comm_size')
|
||||||
if(worldsize>grid(3)) call IO_error(894_pInt, ext_msg='number of processes exceeds grid(3)')
|
if(worldsize>grid(3)) call IO_error(894_pInt, ext_msg='number of processes exceeds grid(3)')
|
||||||
|
|
||||||
geomSize = mesh_spectral_getSize(fileUnit)
|
geomSize = mesh_spectral_getSize(fileUnit)
|
||||||
devNull = fftw_mpi_local_size_3d(int(grid(3),C_INTPTR_T),int(grid(2),C_INTPTR_T),&
|
devNull = fftw_mpi_local_size_3d(int(grid(3),C_INTPTR_T),int(grid(2),C_INTPTR_T),&
|
||||||
int(grid(1),C_INTPTR_T)/2+1,MPI_COMM_WORLD,local_K,local_K_offset)
|
int(grid(1),C_INTPTR_T)/2+1,PETSC_COMM_WORLD,local_K,local_K_offset)
|
||||||
grid3 = int(local_K,pInt)
|
grid3 = int(local_K,pInt)
|
||||||
grid3Offset = int(local_K_offset,pInt)
|
grid3Offset = int(local_K_offset,pInt)
|
||||||
size3 = geomSize(3)*real(grid3,pReal) /real(grid(3),pReal)
|
size3 = geomSize(3)*real(grid3,pReal) /real(grid(3),pReal)
|
||||||
|
|
|
@ -110,7 +110,7 @@ module numerics
|
||||||
fftw_plan_mode = 'FFTW_PATIENT' !< reads the planing-rigor flag, see manual on www.fftw.org, Default FFTW_PATIENT: use patient planner flag
|
fftw_plan_mode = 'FFTW_PATIENT' !< reads the planing-rigor flag, see manual on www.fftw.org, Default FFTW_PATIENT: use patient planner flag
|
||||||
character(len=64), protected, public :: &
|
character(len=64), protected, public :: &
|
||||||
spectral_solver = 'basicpetsc' , & !< spectral solution method
|
spectral_solver = 'basicpetsc' , & !< spectral solution method
|
||||||
spectral_derivative = 'continuous' !< spectral filtering method
|
spectral_derivative = 'continuous' !< spectral spatial derivative method
|
||||||
character(len=1024), protected, public :: &
|
character(len=1024), protected, public :: &
|
||||||
petsc_defaultOptions = '-mech_snes_type ngmres &
|
petsc_defaultOptions = '-mech_snes_type ngmres &
|
||||||
&-damage_snes_type ngmres &
|
&-damage_snes_type ngmres &
|
||||||
|
|
|
@ -974,7 +974,7 @@ end subroutine plastic_disloUCLA_LpAndItsTangent
|
||||||
subroutine plastic_disloUCLA_dotState(Tstar_v,Temperature,ipc,ip,el)
|
subroutine plastic_disloUCLA_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
tol_math_check, &
|
tol_math_check, &
|
||||||
dEq
|
dEq0
|
||||||
use math, only: &
|
use math, only: &
|
||||||
pi
|
pi
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -1112,7 +1112,7 @@ subroutine plastic_disloUCLA_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
!* Dipole formation
|
!* Dipole formation
|
||||||
EdgeDipMinDistance = &
|
EdgeDipMinDistance = &
|
||||||
plastic_disloUCLA_CEdgeDipMinDistance(instance)*plastic_disloUCLA_burgersPerSlipSystem(j,instance)
|
plastic_disloUCLA_CEdgeDipMinDistance(instance)*plastic_disloUCLA_burgersPerSlipSystem(j,instance)
|
||||||
if (dEq(tau_slip_pos,0.0_pReal)) then
|
if (dEq0(tau_slip_pos)) then
|
||||||
DotRhoDipFormation = 0.0_pReal
|
DotRhoDipFormation = 0.0_pReal
|
||||||
else
|
else
|
||||||
EdgeDipDistance = &
|
EdgeDipDistance = &
|
||||||
|
@ -1140,7 +1140,7 @@ subroutine plastic_disloUCLA_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
plastic_disloUCLA_CAtomicVolume(instance)*plastic_disloUCLA_burgersPerSlipSystem(j,instance)**(3.0_pReal)
|
plastic_disloUCLA_CAtomicVolume(instance)*plastic_disloUCLA_burgersPerSlipSystem(j,instance)**(3.0_pReal)
|
||||||
VacancyDiffusion = &
|
VacancyDiffusion = &
|
||||||
plastic_disloUCLA_D0(instance)*exp(-plastic_disloUCLA_Qsd(instance)/(kB*Temperature))
|
plastic_disloUCLA_D0(instance)*exp(-plastic_disloUCLA_Qsd(instance)/(kB*Temperature))
|
||||||
if (dEq(tau_slip_pos,0.0_pReal)) then
|
if (dEq0(tau_slip_pos)) then
|
||||||
DotRhoEdgeDipClimb = 0.0_pReal
|
DotRhoEdgeDipClimb = 0.0_pReal
|
||||||
else
|
else
|
||||||
ClimbVelocity = &
|
ClimbVelocity = &
|
||||||
|
|
|
@ -200,7 +200,8 @@ contains
|
||||||
subroutine plastic_dislotwin_init(fileUnit)
|
subroutine plastic_dislotwin_init(fileUnit)
|
||||||
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dEq, &
|
dEq0, &
|
||||||
|
dNeq0, &
|
||||||
dNeq
|
dNeq
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level,&
|
debug_level,&
|
||||||
|
@ -748,8 +749,8 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
if (plastic_dislotwin_Qsd(instance) <= 0.0_pReal) &
|
if (plastic_dislotwin_Qsd(instance) <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='Qsd ('//PLASTICITY_DISLOTWIN_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='Qsd ('//PLASTICITY_DISLOTWIN_label//')')
|
||||||
if (sum(plastic_dislotwin_Ntwin(:,instance)) > 0_pInt) then
|
if (sum(plastic_dislotwin_Ntwin(:,instance)) > 0_pInt) then
|
||||||
if (dEq(plastic_dislotwin_SFE_0K(instance), 0.0_pReal) .and. &
|
if (dEq0(plastic_dislotwin_SFE_0K(instance)) .and. &
|
||||||
dEq(plastic_dislotwin_dSFE_dT(instance),0.0_pReal) .and. &
|
dEq0(plastic_dislotwin_dSFE_dT(instance)) .and. &
|
||||||
lattice_structure(phase) == LATTICE_fcc_ID) &
|
lattice_structure(phase) == LATTICE_fcc_ID) &
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='SFE0K ('//PLASTICITY_DISLOTWIN_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='SFE0K ('//PLASTICITY_DISLOTWIN_label//')')
|
||||||
if (plastic_dislotwin_aTolRho(instance) <= 0.0_pReal) &
|
if (plastic_dislotwin_aTolRho(instance) <= 0.0_pReal) &
|
||||||
|
@ -758,8 +759,8 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='aTolTwinFrac ('//PLASTICITY_DISLOTWIN_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='aTolTwinFrac ('//PLASTICITY_DISLOTWIN_label//')')
|
||||||
endif
|
endif
|
||||||
if (sum(plastic_dislotwin_Ntrans(:,instance)) > 0_pInt) then
|
if (sum(plastic_dislotwin_Ntrans(:,instance)) > 0_pInt) then
|
||||||
if (dEq(plastic_dislotwin_SFE_0K(instance), 0.0_pReal) .and. &
|
if (dEq0(plastic_dislotwin_SFE_0K(instance)) .and. &
|
||||||
dEq(plastic_dislotwin_dSFE_dT(instance),0.0_pReal) .and. &
|
dEq0(plastic_dislotwin_dSFE_dT(instance)) .and. &
|
||||||
lattice_structure(phase) == LATTICE_fcc_ID) &
|
lattice_structure(phase) == LATTICE_fcc_ID) &
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='SFE0K ('//PLASTICITY_DISLOTWIN_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='SFE0K ('//PLASTICITY_DISLOTWIN_label//')')
|
||||||
if (plastic_dislotwin_aTolTransFrac(instance) <= 0.0_pReal) &
|
if (plastic_dislotwin_aTolTransFrac(instance) <= 0.0_pReal) &
|
||||||
|
@ -772,7 +773,7 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
if (plastic_dislotwin_sbVelocity(instance) > 0.0_pReal .and. &
|
if (plastic_dislotwin_sbVelocity(instance) > 0.0_pReal .and. &
|
||||||
plastic_dislotwin_pShearBand(instance) <= 0.0_pReal) &
|
plastic_dislotwin_pShearBand(instance) <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='pShearBand ('//PLASTICITY_DISLOTWIN_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='pShearBand ('//PLASTICITY_DISLOTWIN_label//')')
|
||||||
if (dNeq(plastic_dislotwin_dipoleFormationFactor(instance), 0.0_pReal) .and. &
|
if (dNeq0(plastic_dislotwin_dipoleFormationFactor(instance)) .and. &
|
||||||
dNeq(plastic_dislotwin_dipoleFormationFactor(instance), 1.0_pReal)) &
|
dNeq(plastic_dislotwin_dipoleFormationFactor(instance), 1.0_pReal)) &
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='dipoleFormationFactor ('//PLASTICITY_DISLOTWIN_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='dipoleFormationFactor ('//PLASTICITY_DISLOTWIN_label//')')
|
||||||
if (plastic_dislotwin_sbVelocity(instance) > 0.0_pReal .and. &
|
if (plastic_dislotwin_sbVelocity(instance) > 0.0_pReal .and. &
|
||||||
|
@ -1624,7 +1625,7 @@ end subroutine plastic_dislotwin_microstructure
|
||||||
subroutine plastic_dislotwin_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,Temperature,ipc,ip,el)
|
subroutine plastic_dislotwin_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,Temperature,ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
tol_math_check, &
|
tol_math_check, &
|
||||||
dNeq
|
dNeq0
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_Plain3333to99, &
|
math_Plain3333to99, &
|
||||||
math_Mandel6to33, &
|
math_Mandel6to33, &
|
||||||
|
@ -1771,8 +1772,7 @@ subroutine plastic_dislotwin_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,Temperature
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! Shear banding (shearband) part
|
! Shear banding (shearband) part
|
||||||
if(dNeq(plastic_dislotwin_sbVelocity(instance), 0.0_pReal) .and. &
|
if(dNeq0(plastic_dislotwin_sbVelocity(instance)) .and. dNeq0(plastic_dislotwin_sbResistance(instance))) then
|
||||||
dNeq(plastic_dislotwin_sbResistance(instance),0.0_pReal)) then
|
|
||||||
gdot_sb = 0.0_pReal
|
gdot_sb = 0.0_pReal
|
||||||
dgdot_dtausb = 0.0_pReal
|
dgdot_dtausb = 0.0_pReal
|
||||||
call math_eigenValuesVectorsSym(math_Mandel6to33(Tstar_v),eigValues,eigVectors,error)
|
call math_eigenValuesVectorsSym(math_Mandel6to33(Tstar_v),eigValues,eigVectors,error)
|
||||||
|
@ -1939,7 +1939,7 @@ end subroutine plastic_dislotwin_LpAndItsTangent
|
||||||
subroutine plastic_dislotwin_dotState(Tstar_v,Temperature,ipc,ip,el)
|
subroutine plastic_dislotwin_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
tol_math_check, &
|
tol_math_check, &
|
||||||
dEq
|
dEq0
|
||||||
use math, only: &
|
use math, only: &
|
||||||
pi
|
pi
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -2040,7 +2040,7 @@ subroutine plastic_dislotwin_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
!* Dipole formation
|
!* Dipole formation
|
||||||
EdgeDipMinDistance = &
|
EdgeDipMinDistance = &
|
||||||
plastic_dislotwin_CEdgeDipMinDistance(instance)*plastic_dislotwin_burgersPerSlipSystem(j,instance)
|
plastic_dislotwin_CEdgeDipMinDistance(instance)*plastic_dislotwin_burgersPerSlipSystem(j,instance)
|
||||||
if (dEq(tau_slip(j),0.0_pReal)) then
|
if (dEq0(tau_slip(j))) then
|
||||||
DotRhoDipFormation = 0.0_pReal
|
DotRhoDipFormation = 0.0_pReal
|
||||||
else
|
else
|
||||||
EdgeDipDistance = &
|
EdgeDipDistance = &
|
||||||
|
@ -2068,10 +2068,10 @@ subroutine plastic_dislotwin_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
plastic_dislotwin_CAtomicVolume(instance)*plastic_dislotwin_burgersPerSlipSystem(j,instance)**(3.0_pReal)
|
plastic_dislotwin_CAtomicVolume(instance)*plastic_dislotwin_burgersPerSlipSystem(j,instance)**(3.0_pReal)
|
||||||
VacancyDiffusion = &
|
VacancyDiffusion = &
|
||||||
plastic_dislotwin_D0(instance)*exp(-plastic_dislotwin_Qsd(instance)/(kB*Temperature))
|
plastic_dislotwin_D0(instance)*exp(-plastic_dislotwin_Qsd(instance)/(kB*Temperature))
|
||||||
if (dEq(tau_slip(j),0.0_pReal)) then
|
if (dEq0(tau_slip(j))) then
|
||||||
DotRhoEdgeDipClimb = 0.0_pReal
|
DotRhoEdgeDipClimb = 0.0_pReal
|
||||||
else
|
else
|
||||||
if (dEq(EdgeDipDistance-EdgeDipMinDistance,0.0_pReal)) then
|
if (dEq0(EdgeDipDistance-EdgeDipMinDistance)) then
|
||||||
DotRhoEdgeDipClimb = 0.0_pReal
|
DotRhoEdgeDipClimb = 0.0_pReal
|
||||||
else
|
else
|
||||||
ClimbVelocity = 3.0_pReal*lattice_mu(ph)*VacancyDiffusion*AtomicVolume/ &
|
ClimbVelocity = 3.0_pReal*lattice_mu(ph)*VacancyDiffusion*AtomicVolume/ &
|
||||||
|
@ -2187,7 +2187,7 @@ end subroutine plastic_dislotwin_dotState
|
||||||
function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
tol_math_check, &
|
tol_math_check, &
|
||||||
dEq
|
dEq0
|
||||||
use math, only: &
|
use math, only: &
|
||||||
pi, &
|
pi, &
|
||||||
math_Mandel6to33, &
|
math_Mandel6to33, &
|
||||||
|
@ -2503,7 +2503,7 @@ function plastic_dislotwin_postResults(Tstar_v,Temperature,ipc,ip,el)
|
||||||
|
|
||||||
!* Stress exponent
|
!* Stress exponent
|
||||||
plastic_dislotwin_postResults(c+j) = &
|
plastic_dislotwin_postResults(c+j) = &
|
||||||
merge(0.0_pReal,(tau/gdot_slip(j))*dgdot_dtauslip,dEq(gdot_slip(j),0.0_pReal))
|
merge(0.0_pReal,(tau/gdot_slip(j))*dgdot_dtauslip,dEq0(gdot_slip(j)))
|
||||||
enddo ; enddo
|
enddo ; enddo
|
||||||
c = c + ns
|
c = c + ns
|
||||||
case (sb_eigenvalues_ID)
|
case (sb_eigenvalues_ID)
|
||||||
|
|
|
@ -517,7 +517,7 @@ end subroutine plastic_isotropic_LiAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_isotropic_dotState(Tstar_v,ipc,ip,el)
|
subroutine plastic_isotropic_dotState(Tstar_v,ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dEq
|
dEq0
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul6x6
|
math_mul6x6
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -564,7 +564,7 @@ subroutine plastic_isotropic_dotState(Tstar_v,ipc,ip,el)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! hardening coefficient
|
! hardening coefficient
|
||||||
if (abs(gamma_dot) > 1e-12_pReal) then
|
if (abs(gamma_dot) > 1e-12_pReal) then
|
||||||
if (dEq(param(instance)%tausat_SinhFitA,0.0_pReal)) then
|
if (dEq0(param(instance)%tausat_SinhFitA)) then
|
||||||
saturation = param(instance)%tausat
|
saturation = param(instance)%tausat
|
||||||
else
|
else
|
||||||
saturation = ( param(instance)%tausat &
|
saturation = ( param(instance)%tausat &
|
||||||
|
|
|
@ -1542,7 +1542,7 @@ end subroutine plastic_nonlocal_aTolState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_nonlocal_microstructure(Fe, Fp, ip, el)
|
subroutine plastic_nonlocal_microstructure(Fe, Fp, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dEq
|
dEq0
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
use math, only: &
|
use math, only: &
|
||||||
|
@ -1786,7 +1786,7 @@ if (.not. phase_localPlasticity(ph) .and. shortRangeStressCorrection(instance))
|
||||||
- neighbor_rhoExcess(c,s,neighbors(2))
|
- neighbor_rhoExcess(c,s,neighbors(2))
|
||||||
enddo
|
enddo
|
||||||
invConnections = math_inv33(connections)
|
invConnections = math_inv33(connections)
|
||||||
if (all(dEq(invConnections,0.0_pReal))) &
|
if (all(dEq0(invConnections))) &
|
||||||
call IO_error(-1_pInt,ext_msg='back stress calculation: inversion error')
|
call IO_error(-1_pInt,ext_msg='back stress calculation: inversion error')
|
||||||
rhoExcessGradient(c) = math_mul3x3(m(1:3,s,c), &
|
rhoExcessGradient(c) = math_mul3x3(m(1:3,s,c), &
|
||||||
math_mul33x3(invConnections,rhoExcessDifferences))
|
math_mul33x3(invConnections,rhoExcessDifferences))
|
||||||
|
@ -2195,7 +2195,7 @@ end subroutine plastic_nonlocal_LpAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_nonlocal_deltaState(Tstar_v,ip,el)
|
subroutine plastic_nonlocal_deltaState(Tstar_v,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dNeq
|
dNeq0
|
||||||
use debug, only: debug_level, &
|
use debug, only: debug_level, &
|
||||||
debug_constitutive, &
|
debug_constitutive, &
|
||||||
debug_levelBasic, &
|
debug_levelBasic, &
|
||||||
|
@ -2318,8 +2318,8 @@ dUpper(1:ns,2) = lattice_mu(ph) * burgers(1:ns,instance) / (4.0_pReal * pi * abs
|
||||||
|
|
||||||
|
|
||||||
forall (c = 1_pInt:2_pInt)
|
forall (c = 1_pInt:2_pInt)
|
||||||
where(dNeq(sqrt(rhoSgl(1:ns,2*c-1)+rhoSgl(1:ns,2*c)+&
|
where(dNeq0(sqrt(rhoSgl(1:ns,2*c-1)+rhoSgl(1:ns,2*c)+abs(rhoSgl(1:ns,2*c+3))&
|
||||||
abs(rhoSgl(1:ns,2*c+3))+abs(rhoSgl(1:ns,2*c+4))+rhoDip(1:ns,c)),0.0_pReal)) &
|
+abs(rhoSgl(1:ns,2*c+4))+rhoDip(1:ns,c)))) &
|
||||||
dUpper(1:ns,c) = min(1.0_pReal / sqrt(rhoSgl(1:ns,2*c-1) + rhoSgl(1:ns,2*c) &
|
dUpper(1:ns,c) = min(1.0_pReal / sqrt(rhoSgl(1:ns,2*c-1) + rhoSgl(1:ns,2*c) &
|
||||||
+ abs(rhoSgl(1:ns,2*c+3)) + abs(rhoSgl(1:ns,2*c+4)) + rhoDip(1:ns,c)), &
|
+ abs(rhoSgl(1:ns,2*c+3)) + abs(rhoSgl(1:ns,2*c+4)) + rhoDip(1:ns,c)), &
|
||||||
dUpper(1:ns,c))
|
dUpper(1:ns,c))
|
||||||
|
@ -2331,7 +2331,7 @@ deltaDUpper = dUpper - dUpperOld
|
||||||
!*** dissociation by stress increase
|
!*** dissociation by stress increase
|
||||||
deltaRhoDipole2SingleStress = 0.0_pReal
|
deltaRhoDipole2SingleStress = 0.0_pReal
|
||||||
forall (c=1_pInt:2_pInt, s=1_pInt:ns, deltaDUpper(s,c) < 0.0_pReal .and. &
|
forall (c=1_pInt:2_pInt, s=1_pInt:ns, deltaDUpper(s,c) < 0.0_pReal .and. &
|
||||||
dNeq(dUpperOld(s,c) - dLower(s,c),0.0_pReal)) &
|
dNeq0(dUpperOld(s,c) - dLower(s,c))) &
|
||||||
deltaRhoDipole2SingleStress(s,8_pInt+c) = rhoDip(s,c) * deltaDUpper(s,c) &
|
deltaRhoDipole2SingleStress(s,8_pInt+c) = rhoDip(s,c) * deltaDUpper(s,c) &
|
||||||
/ (dUpperOld(s,c) - dLower(s,c))
|
/ (dUpperOld(s,c) - dLower(s,c))
|
||||||
|
|
||||||
|
@ -2379,8 +2379,9 @@ subroutine plastic_nonlocal_dotState(Tstar_v, Fe, Fp, Temperature, &
|
||||||
timestep,subfrac, ip,el)
|
timestep,subfrac, ip,el)
|
||||||
|
|
||||||
use prec, only: DAMASK_NaN, &
|
use prec, only: DAMASK_NaN, &
|
||||||
|
dNeq0, &
|
||||||
dNeq, &
|
dNeq, &
|
||||||
dEq
|
dEq0
|
||||||
use numerics, only: numerics_integrationMode, &
|
use numerics, only: numerics_integrationMode, &
|
||||||
numerics_timeSyncing
|
numerics_timeSyncing
|
||||||
use IO, only: IO_error
|
use IO, only: IO_error
|
||||||
|
@ -2614,8 +2615,8 @@ dUpper(1:ns,1) = lattice_mu(ph) * burgers(1:ns,instance) &
|
||||||
dUpper(1:ns,2) = lattice_mu(ph) * burgers(1:ns,instance) &
|
dUpper(1:ns,2) = lattice_mu(ph) * burgers(1:ns,instance) &
|
||||||
/ (4.0_pReal * pi * abs(tau))
|
/ (4.0_pReal * pi * abs(tau))
|
||||||
forall (c = 1_pInt:2_pInt)
|
forall (c = 1_pInt:2_pInt)
|
||||||
where(dNeq(sqrt(rhoSgl(1:ns,2*c-1)+rhoSgl(1:ns,2*c)+&
|
where(dNeq0(sqrt(rhoSgl(1:ns,2*c-1)+rhoSgl(1:ns,2*c)+abs(rhoSgl(1:ns,2*c+3))&
|
||||||
abs(rhoSgl(1:ns,2*c+3))+abs(rhoSgl(1:ns,2*c+4))+rhoDip(1:ns,c)),0.0_pReal)) &
|
+abs(rhoSgl(1:ns,2*c+4))+rhoDip(1:ns,c)))) &
|
||||||
dUpper(1:ns,c) = min(1.0_pReal / sqrt(rhoSgl(1:ns,2*c-1) + rhoSgl(1:ns,2*c) &
|
dUpper(1:ns,c) = min(1.0_pReal / sqrt(rhoSgl(1:ns,2*c-1) + rhoSgl(1:ns,2*c) &
|
||||||
+ abs(rhoSgl(1:ns,2*c+3)) + abs(rhoSgl(1:ns,2*c+4)) + rhoDip(1:ns,c)), &
|
+ abs(rhoSgl(1:ns,2*c+3)) + abs(rhoSgl(1:ns,2*c+4)) + rhoDip(1:ns,c)), &
|
||||||
dUpper(1:ns,c))
|
dUpper(1:ns,c))
|
||||||
|
@ -2827,11 +2828,11 @@ if (.not. phase_localPlasticity(material_phase(1_pInt,ip,el))) then
|
||||||
my_rhoSgl = rhoSgl
|
my_rhoSgl = rhoSgl
|
||||||
my_v = v
|
my_v = v
|
||||||
if(numerics_timeSyncing) then
|
if(numerics_timeSyncing) then
|
||||||
if (dEq(subfrac(1_pInt,ip,el),0.0_pReal)) then
|
if (dEq0(subfrac(1_pInt,ip,el))) then
|
||||||
my_rhoSgl = rhoSgl0
|
my_rhoSgl = rhoSgl0
|
||||||
my_v = v0
|
my_v = v0
|
||||||
elseif (neighbor_n > 0_pInt) then
|
elseif (neighbor_n > 0_pInt) then
|
||||||
if (dEq(subfrac(1_pInt,neighbor_ip,neighbor_el),0.0_pReal)) then
|
if (dEq0(subfrac(1_pInt,neighbor_ip,neighbor_el))) then
|
||||||
my_rhoSgl = rhoSgl0
|
my_rhoSgl = rhoSgl0
|
||||||
my_v = v0
|
my_v = v0
|
||||||
endif
|
endif
|
||||||
|
@ -3170,7 +3171,7 @@ end subroutine plastic_nonlocal_updateCompatibility
|
||||||
!*********************************************************************
|
!*********************************************************************
|
||||||
function plastic_nonlocal_dislocationstress(Fe, ip, el)
|
function plastic_nonlocal_dislocationstress(Fe, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dEq
|
dEq0
|
||||||
use math, only: math_mul33x33, &
|
use math, only: math_mul33x33, &
|
||||||
math_mul33x3, &
|
math_mul33x3, &
|
||||||
math_inv33, &
|
math_inv33, &
|
||||||
|
@ -3383,7 +3384,7 @@ if (.not. phase_localPlasticity(ph)) then
|
||||||
Rsquare = R * R
|
Rsquare = R * R
|
||||||
Rcube = Rsquare * R
|
Rcube = Rsquare * R
|
||||||
denominator = R * (R + flipSign * lambda)
|
denominator = R * (R + flipSign * lambda)
|
||||||
if (dEq(denominator,0.0_pReal)) exit ipLoop
|
if (dEq0(denominator)) exit ipLoop
|
||||||
|
|
||||||
sigma(1,1) = sigma(1,1) - real(side,pReal) &
|
sigma(1,1) = sigma(1,1) - real(side,pReal) &
|
||||||
* flipSign * z / denominator &
|
* flipSign * z / denominator &
|
||||||
|
@ -3428,7 +3429,7 @@ if (.not. phase_localPlasticity(ph)) then
|
||||||
Rsquare = R * R
|
Rsquare = R * R
|
||||||
Rcube = Rsquare * R
|
Rcube = Rsquare * R
|
||||||
denominator = R * (R + flipSign * lambda)
|
denominator = R * (R + flipSign * lambda)
|
||||||
if (dEq(denominator,0.0_pReal)) exit ipLoop
|
if (dEq0(denominator)) exit ipLoop
|
||||||
|
|
||||||
sigma(1,2) = sigma(1,2) - real(side,pReal) * flipSign * z &
|
sigma(1,2) = sigma(1,2) - real(side,pReal) * flipSign * z &
|
||||||
* (1.0_pReal - lattice_nu(ph)) / denominator &
|
* (1.0_pReal - lattice_nu(ph)) / denominator &
|
||||||
|
@ -3518,7 +3519,7 @@ end function plastic_nonlocal_dislocationstress
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function plastic_nonlocal_postResults(Tstar_v,Fe,ip,el)
|
function plastic_nonlocal_postResults(Tstar_v,Fe,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dNeq
|
dNeq0
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul6x6, &
|
math_mul6x6, &
|
||||||
math_mul33x3, &
|
math_mul33x3, &
|
||||||
|
@ -3635,8 +3636,8 @@ dUpper(1:ns,1) = lattice_mu(ph) * burgers(1:ns,instance) &
|
||||||
dUpper(1:ns,2) = lattice_mu(ph) * burgers(1:ns,instance) &
|
dUpper(1:ns,2) = lattice_mu(ph) * burgers(1:ns,instance) &
|
||||||
/ (4.0_pReal * pi * abs(tau))
|
/ (4.0_pReal * pi * abs(tau))
|
||||||
forall (c = 1_pInt:2_pInt)
|
forall (c = 1_pInt:2_pInt)
|
||||||
where(dNeq(sqrt(rhoSgl(1:ns,2*c-1)+rhoSgl(1:ns,2*c)+&
|
where(dNeq0(sqrt(rhoSgl(1:ns,2*c-1)+rhoSgl(1:ns,2*c)+abs(rhoSgl(1:ns,2*c+3))&
|
||||||
abs(rhoSgl(1:ns,2*c+3))+abs(rhoSgl(1:ns,2*c+4))+rhoDip(1:ns,c)),0.0_pReal)) &
|
+abs(rhoSgl(1:ns,2*c+4))+rhoDip(1:ns,c)))) &
|
||||||
dUpper(1:ns,c) = min(1.0_pReal / sqrt(rhoSgl(1:ns,2*c-1) + rhoSgl(1:ns,2*c) &
|
dUpper(1:ns,c) = min(1.0_pReal / sqrt(rhoSgl(1:ns,2*c-1) + rhoSgl(1:ns,2*c) &
|
||||||
+ abs(rhoSgl(1:ns,2*c+3)) + abs(rhoSgl(1:ns,2*c+4)) + rhoDip(1:ns,c)), &
|
+ abs(rhoSgl(1:ns,2*c+3)) + abs(rhoSgl(1:ns,2*c+4)) + rhoDip(1:ns,c)), &
|
||||||
dUpper(1:ns,c))
|
dUpper(1:ns,c))
|
||||||
|
|
|
@ -113,7 +113,7 @@ contains
|
||||||
subroutine plastic_phenoplus_init(fileUnit)
|
subroutine plastic_phenoplus_init(fileUnit)
|
||||||
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dEq
|
dEq0
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_constitutive,&
|
debug_constitutive,&
|
||||||
|
@ -479,8 +479,7 @@ subroutine plastic_phenoplus_init(fileUnit)
|
||||||
if (any(plastic_phenoplus_tausat_slip(:,instance) <= 0.0_pReal .and. &
|
if (any(plastic_phenoplus_tausat_slip(:,instance) <= 0.0_pReal .and. &
|
||||||
plastic_phenoplus_Nslip(:,instance) > 0)) &
|
plastic_phenoplus_Nslip(:,instance) > 0)) &
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='tausat_slip ('//PLASTICITY_PHENOPLUS_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='tausat_slip ('//PLASTICITY_PHENOPLUS_label//')')
|
||||||
if (any(dEq(plastic_phenoplus_a_slip(instance),0.0_pReal) .and. &
|
if (any(dEq0(plastic_phenoplus_a_slip(instance)) .and. plastic_phenoplus_Nslip(:,instance) > 0)) &
|
||||||
plastic_phenoplus_Nslip(:,instance) > 0)) &
|
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='a_slip ('//PLASTICITY_PHENOPLUS_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='a_slip ('//PLASTICITY_PHENOPLUS_label//')')
|
||||||
if (any(plastic_phenoplus_tau0_twin(:,instance) < 0.0_pReal .and. &
|
if (any(plastic_phenoplus_tau0_twin(:,instance) < 0.0_pReal .and. &
|
||||||
plastic_phenoplus_Ntwin(:,instance) > 0)) &
|
plastic_phenoplus_Ntwin(:,instance) > 0)) &
|
||||||
|
@ -918,7 +917,7 @@ end subroutine plastic_phenoplus_microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_phenoplus_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,el)
|
subroutine plastic_phenoplus_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dNeq
|
dNeq0
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_Plain3333to99, &
|
math_Plain3333to99, &
|
||||||
math_Mandel6to33
|
math_Mandel6to33
|
||||||
|
@ -1034,7 +1033,7 @@ subroutine plastic_phenoplus_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,el)
|
||||||
(gdot_slip_pos+gdot_slip_neg)*lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph)
|
(gdot_slip_pos+gdot_slip_neg)*lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph)
|
||||||
|
|
||||||
! Calculation of the tangent of Lp
|
! Calculation of the tangent of Lp
|
||||||
if (dNeq(gdot_slip_pos,0.0_pReal)) then
|
if (dNeq0(gdot_slip_pos)) then
|
||||||
dgdot_dtauslip_pos = gdot_slip_pos*plastic_phenoplus_n_slip(instance)/tau_slip_pos
|
dgdot_dtauslip_pos = gdot_slip_pos*plastic_phenoplus_n_slip(instance)/tau_slip_pos
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
||||||
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
||||||
|
@ -1042,7 +1041,7 @@ subroutine plastic_phenoplus_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,el)
|
||||||
nonSchmid_tensor(m,n,1)
|
nonSchmid_tensor(m,n,1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (dNeq(gdot_slip_neg,0.0_pReal)) then
|
if (dNeq0(gdot_slip_neg)) then
|
||||||
dgdot_dtauslip_neg = gdot_slip_neg*plastic_phenoplus_n_slip(instance)/tau_slip_neg
|
dgdot_dtauslip_neg = gdot_slip_neg*plastic_phenoplus_n_slip(instance)/tau_slip_neg
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
||||||
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
||||||
|
@ -1069,7 +1068,7 @@ subroutine plastic_phenoplus_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,el)
|
||||||
Lp = Lp + gdot_twin*lattice_Stwin(1:3,1:3,index_myFamily+i,ph)
|
Lp = Lp + gdot_twin*lattice_Stwin(1:3,1:3,index_myFamily+i,ph)
|
||||||
|
|
||||||
! Calculation of the tangent of Lp
|
! Calculation of the tangent of Lp
|
||||||
if (dNeq(gdot_twin,0.0_pReal)) then
|
if (dNeq0(gdot_twin)) then
|
||||||
dgdot_dtautwin = gdot_twin*plastic_phenoplus_n_twin(instance)/tau_twin
|
dgdot_dtautwin = gdot_twin*plastic_phenoplus_n_twin(instance)/tau_twin
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
||||||
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
||||||
|
|
|
@ -125,7 +125,7 @@ contains
|
||||||
subroutine plastic_phenopowerlaw_init(fileUnit)
|
subroutine plastic_phenopowerlaw_init(fileUnit)
|
||||||
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dEq
|
dEq0
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_constitutive,&
|
debug_constitutive,&
|
||||||
|
@ -485,8 +485,7 @@ subroutine plastic_phenopowerlaw_init(fileUnit)
|
||||||
if (any(plastic_phenopowerlaw_tausat_slip(:,instance) <= 0.0_pReal .and. &
|
if (any(plastic_phenopowerlaw_tausat_slip(:,instance) <= 0.0_pReal .and. &
|
||||||
plastic_phenopowerlaw_Nslip(:,instance) > 0)) &
|
plastic_phenopowerlaw_Nslip(:,instance) > 0)) &
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='tausat_slip ('//PLASTICITY_PHENOPOWERLAW_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='tausat_slip ('//PLASTICITY_PHENOPOWERLAW_label//')')
|
||||||
if (any(dEq(plastic_phenopowerlaw_a_slip(instance),0.0_pReal) .and. &
|
if (any(dEq0(plastic_phenopowerlaw_a_slip(instance)) .and. plastic_phenopowerlaw_Nslip(:,instance) > 0)) &
|
||||||
plastic_phenopowerlaw_Nslip(:,instance) > 0)) &
|
|
||||||
call IO_error(211_pInt,el=instance,ext_msg='a_slip ('//PLASTICITY_PHENOPOWERLAW_label//')')
|
call IO_error(211_pInt,el=instance,ext_msg='a_slip ('//PLASTICITY_PHENOPOWERLAW_label//')')
|
||||||
if (any(plastic_phenopowerlaw_tau0_twin(:,instance) < 0.0_pReal .and. &
|
if (any(plastic_phenopowerlaw_tau0_twin(:,instance) < 0.0_pReal .and. &
|
||||||
plastic_phenopowerlaw_Ntwin(:,instance) > 0)) &
|
plastic_phenopowerlaw_Ntwin(:,instance) > 0)) &
|
||||||
|
@ -769,7 +768,7 @@ end subroutine plastic_phenopowerlaw_aTolState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,el)
|
subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
dNeq
|
dNeq0
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_Plain3333to99, &
|
math_Plain3333to99, &
|
||||||
math_Mandel6to33
|
math_Mandel6to33
|
||||||
|
@ -859,7 +858,7 @@ subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,
|
||||||
(gdot_slip_pos+gdot_slip_neg)*lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph)
|
(gdot_slip_pos+gdot_slip_neg)*lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph)
|
||||||
|
|
||||||
! Calculation of the tangent of Lp
|
! Calculation of the tangent of Lp
|
||||||
if (dNeq(gdot_slip_pos,0.0_pReal)) then
|
if (dNeq0(gdot_slip_pos)) then
|
||||||
dgdot_dtauslip_pos = gdot_slip_pos*plastic_phenopowerlaw_n_slip(instance)/tau_slip_pos
|
dgdot_dtauslip_pos = gdot_slip_pos*plastic_phenopowerlaw_n_slip(instance)/tau_slip_pos
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
||||||
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
||||||
|
@ -867,7 +866,7 @@ subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,
|
||||||
nonSchmid_tensor(m,n,1)
|
nonSchmid_tensor(m,n,1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (dNeq(gdot_slip_neg,0.0_pReal)) then
|
if (dNeq0(gdot_slip_neg)) then
|
||||||
dgdot_dtauslip_neg = gdot_slip_neg*plastic_phenopowerlaw_n_slip(instance)/tau_slip_neg
|
dgdot_dtauslip_neg = gdot_slip_neg*plastic_phenopowerlaw_n_slip(instance)/tau_slip_neg
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
||||||
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
||||||
|
@ -894,7 +893,7 @@ subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,
|
||||||
Lp = Lp + gdot_twin*lattice_Stwin(1:3,1:3,index_myFamily+i,ph)
|
Lp = Lp + gdot_twin*lattice_Stwin(1:3,1:3,index_myFamily+i,ph)
|
||||||
|
|
||||||
! Calculation of the tangent of Lp
|
! Calculation of the tangent of Lp
|
||||||
if (dNeq(gdot_twin,0.0_pReal)) then
|
if (dNeq0(gdot_twin)) then
|
||||||
dgdot_dtautwin = gdot_twin*plastic_phenopowerlaw_n_twin(instance)/tau_twin
|
dgdot_dtautwin = gdot_twin*plastic_phenopowerlaw_n_twin(instance)/tau_twin
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
||||||
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
dLp_dTstar3333(k,l,m,n) = dLp_dTstar3333(k,l,m,n) + &
|
||||||
|
|
|
@ -23,21 +23,17 @@ subroutine porosity_none_init()
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_timeStamp
|
IO_timeStamp
|
||||||
use material
|
use material
|
||||||
use numerics, only: &
|
|
||||||
worldrank
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
homog, &
|
homog, &
|
||||||
NofMyHomog
|
NofMyHomog
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
write(6,'(/,a)') ' <<<+- porosity_'//POROSITY_none_label//' init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- porosity_'//POROSITY_none_label//' init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
initializeInstances: do homog = 1_pInt, material_Nhomogenization
|
initializeInstances: do homog = 1_pInt, material_Nhomogenization
|
||||||
|
|
||||||
myhomog: if (porosity_type(homog) == POROSITY_none_ID) then
|
myhomog: if (porosity_type(homog) == POROSITY_none_ID) then
|
||||||
NofMyHomog = count(material_homog == homog)
|
NofMyHomog = count(material_homog == homog)
|
||||||
|
|
|
@ -20,12 +20,7 @@ module prec
|
||||||
private
|
private
|
||||||
#if (FLOAT==8)
|
#if (FLOAT==8)
|
||||||
integer, parameter, public :: pReal = 8 !< floating point double precision (was selected_real_kind(15,300), number with 15 significant digits, up to 1e+-300)
|
integer, parameter, public :: pReal = 8 !< floating point double precision (was selected_real_kind(15,300), number with 15 significant digits, up to 1e+-300)
|
||||||
#ifdef __INTEL_COMPILER
|
|
||||||
real(pReal), parameter, public :: DAMASK_NaN = Z'7FF8000000000000' !< quiet NaN for double precision (from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html)
|
|
||||||
#endif
|
|
||||||
#ifdef __GFORTRAN__
|
|
||||||
real(pReal), parameter, public :: DAMASK_NaN = real(Z'7FF8000000000000',pReal) !< quiet NaN for double precision (from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html)
|
real(pReal), parameter, public :: DAMASK_NaN = real(Z'7FF8000000000000',pReal) !< quiet NaN for double precision (from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html)
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
NO SUITABLE PRECISION FOR REAL SELECTED, STOPPING COMPILATION
|
NO SUITABLE PRECISION FOR REAL SELECTED, STOPPING COMPILATION
|
||||||
#endif
|
#endif
|
||||||
|
@ -171,7 +166,7 @@ end function prec_isNaN
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief equality comparison for float with double precision
|
!> @brief equality comparison for float with double precision
|
||||||
! replaces "==" but for certain (relative) tolerance. Counterpart to dNeq
|
! replaces "==" but for certain (relative) tolerance. Counterpart to dNeq
|
||||||
! http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
|
! https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
logical elemental pure function dEq(a,b,tol)
|
logical elemental pure function dEq(a,b,tol)
|
||||||
|
|
||||||
|
@ -187,7 +182,7 @@ end function dEq
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief inequality comparison for float with double precision
|
!> @brief inequality comparison for float with double precision
|
||||||
! replaces "!=" but for certain (relative) tolerance. Counterpart to dEq
|
! replaces "!=" but for certain (relative) tolerance. Counterpart to dEq
|
||||||
! http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
|
! https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
logical elemental pure function dNeq(a,b,tol)
|
logical elemental pure function dNeq(a,b,tol)
|
||||||
|
|
||||||
|
@ -201,9 +196,9 @@ end function dNeq
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief equality to 0comparison for float with double precision
|
!> @brief equality to 0 comparison for float with double precision
|
||||||
! replaces "==0" but for certain (relative) tolerance. Counterpart to dNeq0
|
! replaces "==0" but for certain (absolute) tolerance. Counterpart to dNeq0
|
||||||
! http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
|
! https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
logical elemental pure function dEq0(a,tol)
|
logical elemental pure function dEq0(a,tol)
|
||||||
|
|
||||||
|
@ -212,14 +207,14 @@ logical elemental pure function dEq0(a,tol)
|
||||||
real(pReal), intent(in), optional :: tol
|
real(pReal), intent(in), optional :: tol
|
||||||
real(pReal), parameter :: eps = 2.220446049250313E-16 ! DBL_EPSILON in C
|
real(pReal), parameter :: eps = 2.220446049250313E-16 ! DBL_EPSILON in C
|
||||||
|
|
||||||
dEq0 = merge(.True., .False.,abs(a) <= merge(tol,eps,present(tol))*abs(a))
|
dEq0 = merge(.True., .False.,abs(a) <= merge(tol,eps,present(tol))*10.0_pReal)
|
||||||
end function dEq0
|
end function dEq0
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief inequality comparison to 0 for float with double precision
|
!> @brief inequality to 0 comparison for float with double precision
|
||||||
! replaces "!=0" but for certain (relative) tolerance. Counterpart to dEq0
|
! replaces "!=0" but for certain (absolute) tolerance. Counterpart to dEq0
|
||||||
! http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
|
! https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
logical elemental pure function dNeq0(a,tol)
|
logical elemental pure function dNeq0(a,tol)
|
||||||
|
|
||||||
|
@ -228,14 +223,14 @@ logical elemental pure function dNeq0(a,tol)
|
||||||
real(pReal), intent(in), optional :: tol
|
real(pReal), intent(in), optional :: tol
|
||||||
real(pReal), parameter :: eps = 2.220446049250313E-16 ! DBL_EPSILON in C
|
real(pReal), parameter :: eps = 2.220446049250313E-16 ! DBL_EPSILON in C
|
||||||
|
|
||||||
dNeq0 = merge(.False., .True.,abs(a) <= merge(tol,eps,present(tol))*abs(a))
|
dNeq0 = merge(.False., .True.,abs(a) <= merge(tol,eps,present(tol))*10.0_pReal)
|
||||||
end function dNeq0
|
end function dNeq0
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief equality comparison for complex with double precision
|
!> @brief equality comparison for complex with double precision
|
||||||
! replaces "==" but for certain (relative) tolerance. Counterpart to cNeq
|
! replaces "==" but for certain (relative) tolerance. Counterpart to cNeq
|
||||||
! http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
|
! https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
|
||||||
! probably a component wise comparison would be more accurate than the comparsion of the absolute
|
! probably a component wise comparison would be more accurate than the comparsion of the absolute
|
||||||
! value
|
! value
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -253,7 +248,7 @@ end function cEq
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief inequality comparison for complex with double precision
|
!> @brief inequality comparison for complex with double precision
|
||||||
! replaces "!=" but for certain (relative) tolerance. Counterpart to cEq
|
! replaces "!=" but for certain (relative) tolerance. Counterpart to cEq
|
||||||
! http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
|
! https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
|
||||||
! probably a component wise comparison would be more accurate than the comparsion of the absolute
|
! probably a component wise comparison would be more accurate than the comparsion of the absolute
|
||||||
! value
|
! value
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @author Pratheek Shanthraj, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Pratheek Shanthraj, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
!> @brief material subroutine for thermal source due to plastic dissipation
|
!> @author Philip Eisenlohr, Michigan State University
|
||||||
|
!> @brief material subroutine for variable heat source
|
||||||
!> @details to be done
|
!> @details to be done
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module source_thermal_externalheat
|
module source_thermal_externalheat
|
||||||
|
@ -10,24 +11,24 @@ module source_thermal_externalheat
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
integer(pInt), dimension(:), allocatable, public, protected :: &
|
integer(pInt), dimension(:), allocatable, public, protected :: &
|
||||||
source_thermal_externalheat_sizePostResults, & !< cumulative size of post results
|
source_thermal_externalheat_sizePostResults, & !< cumulative size of post results
|
||||||
source_thermal_externalheat_offset, & !< which source is my current thermal dissipation mechanism?
|
source_thermal_externalheat_offset, & !< which source is my current thermal dissipation mechanism?
|
||||||
source_thermal_externalheat_instance !< instance of thermal dissipation source mechanism
|
source_thermal_externalheat_instance !< instance of thermal dissipation source mechanism
|
||||||
|
|
||||||
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
||||||
source_thermal_externalheat_sizePostResult !< size of each post result output
|
source_thermal_externalheat_sizePostResult !< size of each post result output
|
||||||
|
|
||||||
character(len=64), dimension(:,:), allocatable, target, public :: &
|
character(len=64), dimension(:,:), allocatable, target, public :: &
|
||||||
source_thermal_externalheat_output !< name of each post result output
|
source_thermal_externalheat_output !< name of each post result output
|
||||||
|
|
||||||
integer(pInt), dimension(:), allocatable, target, public :: &
|
integer(pInt), dimension(:), allocatable, target, public :: &
|
||||||
source_thermal_externalheat_Noutput !< number of outputs per instance of this source
|
source_thermal_externalheat_Noutput !< number of outputs per instance of this source
|
||||||
|
|
||||||
integer(pInt), dimension(:), allocatable, private :: &
|
integer(pInt), dimension(:), allocatable, private :: &
|
||||||
source_thermal_externalheat_nIntervals
|
source_thermal_externalheat_nIntervals
|
||||||
|
|
||||||
real(pReal), dimension(:,:), allocatable, private :: &
|
real(pReal), dimension(:,:), allocatable, private :: &
|
||||||
source_thermal_externalheat_time, &
|
source_thermal_externalheat_time, &
|
||||||
source_thermal_externalheat_rate
|
source_thermal_externalheat_rate
|
||||||
|
|
||||||
|
@ -136,23 +137,26 @@ subroutine source_thermal_externalheat_init(fileUnit)
|
||||||
|
|
||||||
if (phase > 0_pInt ) then; if (any(phase_source(:,phase) == SOURCE_thermal_externalheat_ID)) then ! do not short-circuit here (.and. with next if statemen). It's not safe in Fortran
|
if (phase > 0_pInt ) then; if (any(phase_source(:,phase) == SOURCE_thermal_externalheat_ID)) then ! do not short-circuit here (.and. with next if statemen). It's not safe in Fortran
|
||||||
|
|
||||||
instance = source_thermal_externalheat_instance(phase) ! which instance of my source is present phase
|
instance = source_thermal_externalheat_instance(phase) ! which instance of my source is present phase
|
||||||
chunkPos = IO_stringPos(line)
|
chunkPos = IO_stringPos(line)
|
||||||
tag = IO_lc(IO_stringValue(line,chunkPos,1_pInt)) ! extract key
|
tag = IO_lc(IO_stringValue(line,chunkPos,1_pInt)) ! extract key
|
||||||
select case(tag)
|
select case(tag)
|
||||||
case ('externalheat_time')
|
case ('externalheat_time','externalheat_rate')
|
||||||
if (chunkPos(1) <= 2_pInt) &
|
if (chunkPos(1) <= 2_pInt) &
|
||||||
call IO_error(150_pInt,ext_msg=trim(tag)//' ('//SOURCE_thermal_externalheat_label//')')
|
call IO_error(150_pInt,ext_msg=trim(tag)//' ('//SOURCE_thermal_externalheat_label//')')
|
||||||
|
if ( source_thermal_externalheat_nIntervals(instance) > 0_pInt &
|
||||||
|
.and. source_thermal_externalheat_nIntervals(instance) /= chunkPos(1) - 2_pInt) &
|
||||||
|
call IO_error(150_pInt,ext_msg=trim(tag)//' ('//SOURCE_thermal_externalheat_label//')')
|
||||||
|
|
||||||
source_thermal_externalheat_nIntervals(instance) = chunkPos(1) - 2_pInt
|
source_thermal_externalheat_nIntervals(instance) = chunkPos(1) - 2_pInt
|
||||||
do interval = 1, source_thermal_externalheat_nIntervals(instance) + 1_pInt
|
do interval = 1, source_thermal_externalheat_nIntervals(instance) + 1_pInt
|
||||||
temp_time(instance, interval) = IO_floatValue(line,chunkPos,1_pInt + interval)
|
select case(tag)
|
||||||
|
case ('externalheat_time')
|
||||||
|
temp_time(instance, interval) = IO_floatValue(line,chunkPos,1_pInt + interval)
|
||||||
|
case ('externalheat_rate')
|
||||||
|
temp_rate(instance, interval) = IO_floatValue(line,chunkPos,1_pInt + interval)
|
||||||
|
end select
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
case ('externalheat_rate')
|
|
||||||
do interval = 1, source_thermal_externalheat_nIntervals(instance) + 1_pInt
|
|
||||||
temp_rate(instance, interval) = IO_floatValue(line,chunkPos,1_pInt + interval)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
end select
|
end select
|
||||||
endif; endif
|
endif; endif
|
||||||
enddo parsingFile
|
enddo parsingFile
|
||||||
|
@ -162,13 +166,13 @@ subroutine source_thermal_externalheat_init(fileUnit)
|
||||||
|
|
||||||
initializeInstances: do phase = 1_pInt, material_Nphase
|
initializeInstances: do phase = 1_pInt, material_Nphase
|
||||||
if (any(phase_source(:,phase) == SOURCE_thermal_externalheat_ID)) then
|
if (any(phase_source(:,phase) == SOURCE_thermal_externalheat_ID)) then
|
||||||
NofMyPhase=count(material_phase==phase)
|
NofMyPhase = count(material_phase==phase)
|
||||||
instance = source_thermal_externalheat_instance(phase)
|
instance = source_thermal_externalheat_instance(phase)
|
||||||
sourceOffset = source_thermal_externalheat_offset(phase)
|
sourceOffset = source_thermal_externalheat_offset(phase)
|
||||||
source_thermal_externalheat_time(instance,1:source_thermal_externalheat_nIntervals(instance)+1_pInt) = &
|
source_thermal_externalheat_time(instance,1:source_thermal_externalheat_nIntervals(instance)+1_pInt) = &
|
||||||
temp_time(instance,1:source_thermal_externalheat_nIntervals(instance)+1_pInt)
|
temp_time(instance,1:source_thermal_externalheat_nIntervals(instance)+1_pInt)
|
||||||
source_thermal_externalheat_rate(instance,1:source_thermal_externalheat_nIntervals(instance)+1_pInt) = &
|
source_thermal_externalheat_rate(instance,1:source_thermal_externalheat_nIntervals(instance)+1_pInt) = &
|
||||||
temp_rate(instance,1:source_thermal_externalheat_nIntervals(instance)+1_pInt)
|
temp_rate(instance,1:source_thermal_externalheat_nIntervals(instance)+1_pInt)
|
||||||
|
|
||||||
sizeDotState = 1_pInt
|
sizeDotState = 1_pInt
|
||||||
sizeDeltaState = 0_pInt
|
sizeDeltaState = 0_pInt
|
||||||
|
@ -200,7 +204,8 @@ subroutine source_thermal_externalheat_init(fileUnit)
|
||||||
end subroutine source_thermal_externalheat_init
|
end subroutine source_thermal_externalheat_init
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates derived quantities from state
|
!> @brief rate of change of state
|
||||||
|
!> @details state only contains current time to linearly interpolate given heat powers
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine source_thermal_externalheat_dotState(ipc, ip, el)
|
subroutine source_thermal_externalheat_dotState(ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -221,12 +226,12 @@ subroutine source_thermal_externalheat_dotState(ipc, ip, el)
|
||||||
constituent = phasememberAt(ipc,ip,el)
|
constituent = phasememberAt(ipc,ip,el)
|
||||||
sourceOffset = source_thermal_externalheat_offset(phase)
|
sourceOffset = source_thermal_externalheat_offset(phase)
|
||||||
|
|
||||||
sourceState(phase)%p(sourceOffset)%dotState(1,constituent) = 1.0_pReal
|
sourceState(phase)%p(sourceOffset)%dotState(1,constituent) = 1.0_pReal ! state is current time
|
||||||
|
|
||||||
end subroutine source_thermal_externalheat_dotState
|
end subroutine source_thermal_externalheat_dotState
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns local vacancy generation rate
|
!> @brief returns local heat generation rate
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine source_thermal_externalheat_getRateAndItsTangent(TDot, dTDot_dT, ipc, ip, el)
|
subroutine source_thermal_externalheat_getRateAndItsTangent(TDot, dTDot_dT, ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -244,21 +249,24 @@ subroutine source_thermal_externalheat_getRateAndItsTangent(TDot, dTDot_dT, ipc,
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
instance, phase, constituent, sourceOffset, interval
|
instance, phase, constituent, sourceOffset, interval
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
norm_time
|
frac_time
|
||||||
|
|
||||||
phase = phaseAt(ipc,ip,el)
|
phase = phaseAt(ipc,ip,el)
|
||||||
constituent = phasememberAt(ipc,ip,el)
|
constituent = phasememberAt(ipc,ip,el)
|
||||||
instance = source_thermal_externalheat_instance(phase)
|
instance = source_thermal_externalheat_instance(phase)
|
||||||
sourceOffset = source_thermal_externalheat_offset(phase)
|
sourceOffset = source_thermal_externalheat_offset(phase)
|
||||||
|
|
||||||
do interval = 1, source_thermal_externalheat_nIntervals(instance)
|
do interval = 1, source_thermal_externalheat_nIntervals(instance) ! scan through all rate segments
|
||||||
norm_time = (sourceState(phase)%p(sourceOffset)%state(1,constituent) - &
|
frac_time = (sourceState(phase)%p(sourceOffset)%state(1,constituent) - &
|
||||||
source_thermal_externalheat_time(instance,interval)) / &
|
source_thermal_externalheat_time(instance,interval)) / &
|
||||||
(source_thermal_externalheat_time(instance,interval+1) - &
|
(source_thermal_externalheat_time(instance,interval+1) - &
|
||||||
source_thermal_externalheat_time(instance,interval))
|
source_thermal_externalheat_time(instance,interval)) ! fractional time within segment
|
||||||
if (norm_time >= 0.0_pReal .and. norm_time < 1.0_pReal) &
|
if ( (frac_time < 0.0_pReal .and. interval == 1) &
|
||||||
TDot = source_thermal_externalheat_rate(instance,interval ) * (1.0_pReal - norm_time) + &
|
.or. (frac_time >= 1.0_pReal .and. interval == source_thermal_externalheat_nIntervals(instance)) &
|
||||||
source_thermal_externalheat_rate(instance,interval+1) * norm_time
|
.or. (frac_time >= 0.0_pReal .and. frac_time < 1.0_pReal) ) &
|
||||||
|
TDot = source_thermal_externalheat_rate(instance,interval ) * (1.0_pReal - frac_time) + &
|
||||||
|
source_thermal_externalheat_rate(instance,interval+1) * frac_time ! interpolate heat rate between segment boundaries...
|
||||||
|
! ...or extrapolate if outside of bounds
|
||||||
enddo
|
enddo
|
||||||
dTDot_dT = 0.0
|
dTDot_dT = 0.0
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,6 @@ subroutine spectral_damage_init()
|
||||||
DM :: damage_grid
|
DM :: damage_grid
|
||||||
Vec :: uBound, lBound
|
Vec :: uBound, lBound
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
PetscObject :: dummy
|
|
||||||
character(len=100) :: snes_type
|
character(len=100) :: snes_type
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
|
@ -99,11 +98,9 @@ subroutine spectral_damage_init()
|
||||||
DMRestoreGlobalVector, &
|
DMRestoreGlobalVector, &
|
||||||
SNESVISetVariableBounds
|
SNESVISetVariableBounds
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0_pInt) then
|
write(6,'(/,a)') ' <<<+- spectral_damage init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- spectral_damage init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! initialize solver specific parts of PETSc
|
! initialize solver specific parts of PETSc
|
||||||
|
@ -124,7 +121,8 @@ subroutine spectral_damage_init()
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetDM(damage_snes,damage_grid,ierr); CHKERRQ(ierr) !< connect snes to da
|
call SNESSetDM(damage_snes,damage_grid,ierr); CHKERRQ(ierr) !< connect snes to da
|
||||||
call DMCreateGlobalVector(damage_grid,solution,ierr); CHKERRQ(ierr) !< global solution vector (grid x 1, i.e. every def grad tensor)
|
call DMCreateGlobalVector(damage_grid,solution,ierr); CHKERRQ(ierr) !< global solution vector (grid x 1, i.e. every def grad tensor)
|
||||||
call DMDASNESSetFunctionLocal(damage_grid,INSERT_VALUES,spectral_damage_formResidual,dummy,ierr) !< residual vector of same shape as solution vector
|
call DMDASNESSetFunctionLocal(damage_grid,INSERT_VALUES,spectral_damage_formResidual,&
|
||||||
|
PETSC_NULL_OBJECT,ierr) !< residual vector of same shape as solution vector
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetFromOptions(damage_snes,ierr); CHKERRQ(ierr) !< pull it all together with additional cli arguments
|
call SNESSetFromOptions(damage_snes,ierr); CHKERRQ(ierr) !< pull it all together with additional cli arguments
|
||||||
call SNESGetType(damage_snes,snes_type,ierr); CHKERRQ(ierr)
|
call SNESGetType(damage_snes,snes_type,ierr); CHKERRQ(ierr)
|
||||||
|
@ -171,7 +169,7 @@ end subroutine spectral_damage_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief solution for the spectral damage scheme with internal iterations
|
!> @brief solution for the spectral damage scheme with internal iterations
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
type(tSolutionState) function spectral_damage_solution(guess,timeinc,timeinc_old,loadCaseTime)
|
type(tSolutionState) function spectral_damage_solution(timeinc,timeinc_old,loadCaseTime)
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
itmax, &
|
itmax, &
|
||||||
err_damage_tolAbs, &
|
err_damage_tolAbs, &
|
||||||
|
@ -190,7 +188,6 @@ type(tSolutionState) function spectral_damage_solution(guess,timeinc,timeinc_old
|
||||||
timeinc, & !< increment in time for current solution
|
timeinc, & !< increment in time for current solution
|
||||||
timeinc_old, & !< increment in time of last increment
|
timeinc_old, & !< increment in time of last increment
|
||||||
loadCaseTime !< remaining time of current load case
|
loadCaseTime !< remaining time of current load case
|
||||||
logical, intent(in) :: guess
|
|
||||||
integer(pInt) :: i, j, k, cell
|
integer(pInt) :: i, j, k, cell
|
||||||
PetscInt ::position
|
PetscInt ::position
|
||||||
PetscReal :: minDamage, maxDamage, stagNorm, solnNorm
|
PetscReal :: minDamage, maxDamage, stagNorm, solnNorm
|
||||||
|
@ -283,10 +280,10 @@ subroutine spectral_damage_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
DMDALocalInfo, dimension(DMDA_LOCAL_INFO_SIZE) :: &
|
DMDALocalInfo, dimension(DMDA_LOCAL_INFO_SIZE) :: &
|
||||||
in
|
in
|
||||||
PetscScalar, dimension( &
|
PetscScalar, dimension( &
|
||||||
XG_RANGE,YG_RANGE,ZG_RANGE) :: &
|
XG_RANGE,YG_RANGE,ZG_RANGE), intent(in) :: &
|
||||||
x_scal
|
x_scal
|
||||||
PetscScalar, dimension( &
|
PetscScalar, dimension( &
|
||||||
X_RANGE,Y_RANGE,Z_RANGE) :: &
|
X_RANGE,Y_RANGE,Z_RANGE), intent(out) :: &
|
||||||
f_scal
|
f_scal
|
||||||
PetscObject :: dummy
|
PetscObject :: dummy
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
|
@ -341,7 +338,7 @@ end subroutine spectral_damage_formResidual
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief spectral damage forwarding routine
|
!> @brief spectral damage forwarding routine
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine spectral_damage_forward(guess,timeinc,timeinc_old,loadCaseTime)
|
subroutine spectral_damage_forward()
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
grid, &
|
grid, &
|
||||||
grid3
|
grid3
|
||||||
|
@ -354,11 +351,6 @@ subroutine spectral_damage_forward(guess,timeinc,timeinc_old,loadCaseTime)
|
||||||
damage_nonlocal_getMobility
|
damage_nonlocal_getMobility
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
real(pReal), intent(in) :: &
|
|
||||||
timeinc_old, &
|
|
||||||
timeinc, &
|
|
||||||
loadCaseTime !< remaining time of current load case
|
|
||||||
logical, intent(in) :: guess
|
|
||||||
integer(pInt) :: i, j, k, cell
|
integer(pInt) :: i, j, k, cell
|
||||||
DM :: dm_local
|
DM :: dm_local
|
||||||
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
||||||
|
|
|
@ -89,7 +89,7 @@ subroutine DAMASK_interface_init()
|
||||||
call PetscInitialize(PETSC_NULL_CHARACTER,ierr) ! according to PETSc manual, that should be the first line in the code
|
call PetscInitialize(PETSC_NULL_CHARACTER,ierr) ! according to PETSc manual, that should be the first line in the code
|
||||||
CHKERRQ(ierr) ! this is a macro definition, it is case sensitive
|
CHKERRQ(ierr) ! this is a macro definition, it is case sensitive
|
||||||
call MPI_Comm_rank(PETSC_COMM_WORLD,worldrank,ierr);CHKERRQ(ierr)
|
call MPI_Comm_rank(PETSC_COMM_WORLD,worldrank,ierr);CHKERRQ(ierr)
|
||||||
call MPI_Comm_size(MPI_COMM_WORLD, worldsize, ierr);CHKERRQ(ierr)
|
call MPI_Comm_size(PETSC_COMM_WORLD,worldsize,ierr);CHKERRQ(ierr)
|
||||||
mainProcess: if (worldrank == 0) then
|
mainProcess: if (worldrank == 0) then
|
||||||
if (output_unit /= 6) then
|
if (output_unit /= 6) then
|
||||||
write(output_unit,'(a)') ' STDOUT != 6'
|
write(output_unit,'(a)') ' STDOUT != 6'
|
||||||
|
@ -152,7 +152,7 @@ subroutine DAMASK_interface_init()
|
||||||
write(6,'(a)') ' Make sure the file "material.config" exists in the working'
|
write(6,'(a)') ' Make sure the file "material.config" exists in the working'
|
||||||
write(6,'(a)') ' directory.'
|
write(6,'(a)') ' directory.'
|
||||||
write(6,'(a)') ' For further configuration place "numerics.config"'
|
write(6,'(a)') ' For further configuration place "numerics.config"'
|
||||||
write(6,'(a)')' and "numerics.config" in that directory.'
|
write(6,'(a)')' and "debug.config" in that directory.'
|
||||||
write(6,'(/,a)')' --restart XX'
|
write(6,'(/,a)')' --restart XX'
|
||||||
write(6,'(a)') ' Reads in total increment No. XX-1 and continues to'
|
write(6,'(a)') ' Reads in total increment No. XX-1 and continues to'
|
||||||
write(6,'(a)') ' calculate total increment No. XX.'
|
write(6,'(a)') ' calculate total increment No. XX.'
|
||||||
|
|
|
@ -49,7 +49,7 @@ module spectral_mech_AL
|
||||||
F_av = 0.0_pReal, & !< average incompatible def grad field
|
F_av = 0.0_pReal, & !< average incompatible def grad field
|
||||||
P_av = 0.0_pReal, & !< average 1st Piola--Kirchhoff stress
|
P_av = 0.0_pReal, & !< average 1st Piola--Kirchhoff stress
|
||||||
P_avLastEval = 0.0_pReal !< average 1st Piola--Kirchhoff stress last call of CPFEM_general
|
P_avLastEval = 0.0_pReal !< average 1st Piola--Kirchhoff stress last call of CPFEM_general
|
||||||
character(len=1024), private :: incInfo !< time and increment information
|
character(len=1024), private :: incInfo !< time and increment information
|
||||||
real(pReal), private, dimension(3,3,3,3) :: &
|
real(pReal), private, dimension(3,3,3,3) :: &
|
||||||
C_volAvg = 0.0_pReal, & !< current volume average stiffness
|
C_volAvg = 0.0_pReal, & !< current volume average stiffness
|
||||||
C_volAvgLastInc = 0.0_pReal, & !< previous volume average stiffness
|
C_volAvgLastInc = 0.0_pReal, & !< previous volume average stiffness
|
||||||
|
@ -57,7 +57,7 @@ module spectral_mech_AL
|
||||||
S = 0.0_pReal, & !< current compliance (filled up with zeros)
|
S = 0.0_pReal, & !< current compliance (filled up with zeros)
|
||||||
C_scale = 0.0_pReal, &
|
C_scale = 0.0_pReal, &
|
||||||
S_scale = 0.0_pReal
|
S_scale = 0.0_pReal
|
||||||
|
|
||||||
real(pReal), private :: &
|
real(pReal), private :: &
|
||||||
err_BC, & !< deviation from stress BC
|
err_BC, & !< deviation from stress BC
|
||||||
err_curl, & !< RMS of curl of F
|
err_curl, & !< RMS of curl of F
|
||||||
|
@ -116,7 +116,6 @@ subroutine AL_init
|
||||||
temp33_Real = 0.0_pReal
|
temp33_Real = 0.0_pReal
|
||||||
|
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
PetscObject :: dummy
|
|
||||||
PetscScalar, pointer, dimension(:,:,:,:) :: xx_psc, F, F_lambda
|
PetscScalar, pointer, dimension(:,:,:,:) :: xx_psc, F, F_lambda
|
||||||
integer(pInt), dimension(:), allocatable :: localK
|
integer(pInt), dimension(:), allocatable :: localK
|
||||||
integer(pInt) :: proc
|
integer(pInt) :: proc
|
||||||
|
@ -133,11 +132,9 @@ subroutine AL_init
|
||||||
SNESSetConvergenceTest, &
|
SNESSetConvergenceTest, &
|
||||||
SNESSetFromOptions
|
SNESSetFromOptions
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0_pInt) then
|
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverAL init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverAL init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! allocate global fields
|
! allocate global fields
|
||||||
|
@ -165,9 +162,9 @@ subroutine AL_init
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetDM(snes,da,ierr); CHKERRQ(ierr)
|
call SNESSetDM(snes,da,ierr); CHKERRQ(ierr)
|
||||||
call DMCreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr)
|
call DMCreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr)
|
||||||
call DMDASNESSetFunctionLocal(da,INSERT_VALUES,AL_formResidual,dummy,ierr)
|
call DMDASNESSetFunctionLocal(da,INSERT_VALUES,AL_formResidual,PETSC_NULL_OBJECT,ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetConvergenceTest(snes,AL_converged,dummy,PETSC_NULL_FUNCTION,ierr)
|
call SNESSetConvergenceTest(snes,AL_converged,PETSC_NULL_OBJECT,PETSC_NULL_FUNCTION,ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetFromOptions(snes,ierr); CHKERRQ(ierr)
|
call SNESSetFromOptions(snes,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
|
@ -245,7 +242,7 @@ end subroutine AL_init
|
||||||
!> @brief solution for the AL scheme with internal iterations
|
!> @brief solution for the AL scheme with internal iterations
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
type(tSolutionState) function &
|
type(tSolutionState) function &
|
||||||
AL_solution(incInfoIn,guess,timeinc,timeinc_old,loadCaseTime,P_BC,F_BC,rotation_BC)
|
AL_solution(incInfoIn,timeinc,timeinc_old,stress_BC,rotation_BC)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
|
@ -266,13 +263,9 @@ type(tSolutionState) function &
|
||||||
! input data for solution
|
! input data for solution
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
timeinc, & !< increment in time for current solution
|
timeinc, & !< increment in time for current solution
|
||||||
timeinc_old, & !< increment in time of last increment
|
timeinc_old !< increment in time of last increment
|
||||||
loadCaseTime !< remaining time of current load case
|
|
||||||
logical, intent(in) :: &
|
|
||||||
guess
|
|
||||||
type(tBoundaryCondition), intent(in) :: &
|
type(tBoundaryCondition), intent(in) :: &
|
||||||
P_BC, &
|
stress_BC
|
||||||
F_BC
|
|
||||||
character(len=*), intent(in) :: &
|
character(len=*), intent(in) :: &
|
||||||
incInfoIn
|
incInfoIn
|
||||||
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
||||||
|
@ -290,7 +283,7 @@ type(tSolutionState) function &
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! update stiffness (and gamma operator)
|
! update stiffness (and gamma operator)
|
||||||
S = Utilities_maskedCompliance(rotation_BC,P_BC%maskLogical,C_volAvg)
|
S = Utilities_maskedCompliance(rotation_BC,stress_BC%maskLogical,C_volAvg)
|
||||||
if (update_gamma) then
|
if (update_gamma) then
|
||||||
call Utilities_updateGamma(C_minMaxAvg,restartWrite)
|
call Utilities_updateGamma(C_minMaxAvg,restartWrite)
|
||||||
C_scale = C_minMaxAvg
|
C_scale = C_minMaxAvg
|
||||||
|
@ -299,11 +292,11 @@ type(tSolutionState) function &
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! set module wide availabe data
|
! set module wide availabe data
|
||||||
mask_stress = P_BC%maskFloat
|
mask_stress = stress_BC%maskFloat
|
||||||
params%P_BC = P_BC%values
|
params%stress_BC = stress_BC%values
|
||||||
params%rotation_BC = rotation_BC
|
params%rotation_BC = rotation_BC
|
||||||
params%timeinc = timeinc
|
params%timeinc = timeinc
|
||||||
params%timeincOld = timeinc_old
|
params%timeincOld = timeinc_old
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! solve BVP
|
! solve BVP
|
||||||
|
@ -331,8 +324,7 @@ subroutine AL_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
itmax, &
|
itmax, &
|
||||||
itmin, &
|
itmin, &
|
||||||
polarAlpha, &
|
polarAlpha, &
|
||||||
polarBeta, &
|
polarBeta
|
||||||
worldrank
|
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
grid3, &
|
grid3, &
|
||||||
grid
|
grid
|
||||||
|
@ -369,10 +361,10 @@ subroutine AL_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
DMDA_LOCAL_INFO_SIZE) :: &
|
DMDA_LOCAL_INFO_SIZE) :: &
|
||||||
in
|
in
|
||||||
PetscScalar, target, dimension(3,3,2, &
|
PetscScalar, target, dimension(3,3,2, &
|
||||||
XG_RANGE,YG_RANGE,ZG_RANGE) :: &
|
XG_RANGE,YG_RANGE,ZG_RANGE), intent(in) :: &
|
||||||
x_scal
|
x_scal
|
||||||
PetscScalar, target, dimension(3,3,2, &
|
PetscScalar, target, dimension(3,3,2, &
|
||||||
X_RANGE,Y_RANGE,Z_RANGE) :: &
|
X_RANGE,Y_RANGE,Z_RANGE), intent(out) :: &
|
||||||
f_scal
|
f_scal
|
||||||
PetscScalar, pointer, dimension(:,:,:,:,:) :: &
|
PetscScalar, pointer, dimension(:,:,:,:,:) :: &
|
||||||
F, &
|
F, &
|
||||||
|
@ -411,16 +403,14 @@ subroutine AL_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! report begin of new iteration
|
! report begin of new iteration
|
||||||
totalIter = totalIter + 1_pInt
|
totalIter = totalIter + 1_pInt
|
||||||
if (worldrank == 0_pInt) then
|
write(6,'(1x,a,3(a,'//IO_intOut(itmax)//'))') trim(incInfo), &
|
||||||
write(6,'(1x,a,3(a,'//IO_intOut(itmax)//'))') trim(incInfo), &
|
' @ Iteration ', itmin, '≤',totalIter, '≤', itmax
|
||||||
' @ Iteration ', itmin, '≤',totalIter, '≤', itmax
|
if (iand(debug_level(debug_spectral),debug_spectralRotation) /= 0) &
|
||||||
if (iand(debug_level(debug_spectral),debug_spectralRotation) /= 0) &
|
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim (lab) =', &
|
||||||
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim (lab) =', &
|
math_transpose33(math_rotate_backward33(F_aim,params%rotation_BC))
|
||||||
math_transpose33(math_rotate_backward33(F_aim,params%rotation_BC))
|
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim =', &
|
||||||
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim =', &
|
math_transpose33(F_aim)
|
||||||
math_transpose33(F_aim)
|
flush(6)
|
||||||
flush(6)
|
|
||||||
endif
|
|
||||||
endif newIteration
|
endif newIteration
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -495,8 +485,7 @@ subroutine AL_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,dummy,ierr
|
||||||
err_curl_tolRel, &
|
err_curl_tolRel, &
|
||||||
err_curl_tolAbs, &
|
err_curl_tolAbs, &
|
||||||
err_stress_tolAbs, &
|
err_stress_tolAbs, &
|
||||||
err_stress_tolRel, &
|
err_stress_tolRel
|
||||||
worldrank
|
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul3333xx33
|
math_mul3333xx33
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
|
@ -519,9 +508,9 @@ subroutine AL_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,dummy,ierr
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! stress BC handling
|
! stress BC handling
|
||||||
F_aim = F_aim - math_mul3333xx33(S, ((P_av - params%P_BC))) ! S = 0.0 for no bc
|
F_aim = F_aim - math_mul3333xx33(S, ((P_av - params%stress_BC))) ! S = 0.0 for no bc
|
||||||
err_BC = maxval(abs((-mask_stress+1.0_pReal)*math_mul3333xx33(C_scale,F_aim-F_av) + &
|
err_BC = maxval(abs((-mask_stress+1.0_pReal)*math_mul3333xx33(C_scale,F_aim-F_av) + &
|
||||||
mask_stress *(P_av - params%P_BC))) ! mask = 0.0 for no bc
|
mask_stress *(P_av - params%stress_BC))) ! mask = 0.0 for no bc
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! error calculation
|
! error calculation
|
||||||
|
@ -543,24 +532,22 @@ subroutine AL_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,dummy,ierr
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! report
|
! report
|
||||||
if (worldrank == 0_pInt) then
|
write(6,'(1/,a)') ' ... reporting .............................................................'
|
||||||
write(6,'(1/,a)') ' ... reporting .............................................................'
|
write(6,'(/,a,f12.2,a,es8.2,a,es9.2,a)') ' error curl = ', &
|
||||||
write(6,'(/,a,f12.2,a,es8.2,a,es9.2,a)') ' error curl = ', &
|
err_curl/curlTol,' (',err_curl,' -, tol =',curlTol,')'
|
||||||
err_curl/curlTol,' (',err_curl,' -, tol =',curlTol,')'
|
write(6,' (a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', &
|
||||||
write(6,' (a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', &
|
err_div/divTol, ' (',err_div, ' / m, tol =',divTol,')'
|
||||||
err_div/divTol, ' (',err_div, ' / m, tol =',divTol,')'
|
write(6,' (a,f12.2,a,es8.2,a,es9.2,a)') ' error BC = ', &
|
||||||
write(6,' (a,f12.2,a,es8.2,a,es9.2,a)') ' error BC = ', &
|
err_BC/BC_tol, ' (',err_BC, ' Pa, tol =',BC_tol,')'
|
||||||
err_BC/BC_tol, ' (',err_BC, ' Pa, tol =',BC_tol,')'
|
write(6,'(/,a)') ' ==========================================================================='
|
||||||
write(6,'(/,a)') ' ==========================================================================='
|
flush(6)
|
||||||
flush(6)
|
|
||||||
endif
|
|
||||||
|
|
||||||
end subroutine AL_converged
|
end subroutine AL_converged
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief forwarding routine
|
!> @brief forwarding routine
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine AL_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,rotation_BC)
|
subroutine AL_forward(guess,timeinc,timeinc_old,loadCaseTime,deformation_BC,stress_BC,rotation_BC)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33x33, &
|
math_mul33x33, &
|
||||||
math_mul3333xx33, &
|
math_mul3333xx33, &
|
||||||
|
@ -588,8 +575,8 @@ subroutine AL_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,rotation_
|
||||||
timeinc, &
|
timeinc, &
|
||||||
loadCaseTime !< remaining time of current load case
|
loadCaseTime !< remaining time of current load case
|
||||||
type(tBoundaryCondition), intent(in) :: &
|
type(tBoundaryCondition), intent(in) :: &
|
||||||
P_BC, &
|
stress_BC, &
|
||||||
F_BC
|
deformation_BC
|
||||||
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
||||||
logical, intent(in) :: &
|
logical, intent(in) :: &
|
||||||
guess
|
guess
|
||||||
|
@ -605,21 +592,19 @@ subroutine AL_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,rotation_
|
||||||
F => xx_psc(0:8,:,:,:)
|
F => xx_psc(0:8,:,:,:)
|
||||||
F_lambda => xx_psc(9:17,:,:,:)
|
F_lambda => xx_psc(9:17,:,:,:)
|
||||||
if (restartWrite) then
|
if (restartWrite) then
|
||||||
if (worldrank == 0_pInt) then
|
write(6,'(/,a)') ' writing converged results for restart'
|
||||||
write(6,'(/,a)') ' writing converged results for restart'
|
flush(6)
|
||||||
flush(6)
|
|
||||||
endif
|
|
||||||
write(rankStr,'(a1,i0)')'_',worldrank
|
write(rankStr,'(a1,i0)')'_',worldrank
|
||||||
call IO_write_jobRealFile(777,'F'//trim(rankStr),size(F)) ! writing deformation gradient field to file
|
call IO_write_jobRealFile(777,'F'//trim(rankStr),size(F)) ! writing deformation gradient field to file
|
||||||
write (777,rec=1) F
|
write (777,rec=1) F
|
||||||
close (777)
|
close (777)
|
||||||
call IO_write_jobRealFile(777,'F_lastInc'//trim(rankStr),size(F_lastInc)) ! writing F_lastInc field to file
|
call IO_write_jobRealFile(777,'F_lastInc'//trim(rankStr),size(F_lastInc)) ! writing F_lastInc field to file
|
||||||
write (777,rec=1) F_lastInc
|
write (777,rec=1) F_lastInc
|
||||||
close (777)
|
close (777)
|
||||||
call IO_write_jobRealFile(777,'F_lambda'//trim(rankStr),size(F_lambda)) ! writing deformation gradient field to file
|
call IO_write_jobRealFile(777,'F_lambda'//trim(rankStr),size(F_lambda)) ! writing deformation gradient field to file
|
||||||
write (777,rec=1) F_lambda
|
write (777,rec=1) F_lambda
|
||||||
close (777)
|
close (777)
|
||||||
call IO_write_jobRealFile(777,'F_lambda_lastInc'//trim(rankStr),size(F_lambda_lastInc)) ! writing F_lastInc field to file
|
call IO_write_jobRealFile(777,'F_lambda_lastInc'//trim(rankStr),size(F_lambda_lastInc)) ! writing F_lastInc field to file
|
||||||
write (777,rec=1) F_lambda_lastInc
|
write (777,rec=1) F_lambda_lastInc
|
||||||
close (777)
|
close (777)
|
||||||
if (worldrank == 0_pInt) then
|
if (worldrank == 0_pInt) then
|
||||||
|
@ -653,14 +638,14 @@ subroutine AL_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,rotation_
|
||||||
C_volAvgLastInc = C_volAvg
|
C_volAvgLastInc = C_volAvg
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! calculate rate for aim
|
! calculate rate for aim
|
||||||
if (F_BC%myType=='l') then ! calculate f_aimDot from given L and current F
|
if (deformation_BC%myType=='l') then ! calculate f_aimDot from given L and current F
|
||||||
f_aimDot = F_BC%maskFloat * math_mul33x33(F_BC%values, F_aim)
|
f_aimDot = deformation_BC%maskFloat * math_mul33x33(deformation_BC%values, F_aim)
|
||||||
elseif(F_BC%myType=='fdot') then ! f_aimDot is prescribed
|
elseif(deformation_BC%myType=='fdot') then ! f_aimDot is prescribed
|
||||||
f_aimDot = F_BC%maskFloat * F_BC%values
|
f_aimDot = deformation_BC%maskFloat * deformation_BC%values
|
||||||
elseif(F_BC%myType=='f') then ! aim at end of load case is prescribed
|
elseif(deformation_BC%myType=='f') then ! aim at end of load case is prescribed
|
||||||
f_aimDot = F_BC%maskFloat * (F_BC%values -F_aim)/loadCaseTime
|
f_aimDot = deformation_BC%maskFloat * (deformation_BC%values -F_aim)/loadCaseTime
|
||||||
endif
|
endif
|
||||||
if (guess) f_aimDot = f_aimDot + P_BC%maskFloat * (F_aim - F_aim_lastInc)/timeinc_old
|
if (guess) f_aimDot = f_aimDot + stress_BC%maskFloat * (F_aim - F_aim_lastInc)/timeinc_old
|
||||||
F_aim_lastInc = F_aim
|
F_aim_lastInc = F_aim
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -105,7 +105,6 @@ subroutine basicPETSc_init
|
||||||
temp33_Real = 0.0_pReal
|
temp33_Real = 0.0_pReal
|
||||||
|
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
PetscObject :: dummy
|
|
||||||
PetscScalar, pointer, dimension(:,:,:,:) :: F
|
PetscScalar, pointer, dimension(:,:,:,:) :: F
|
||||||
|
|
||||||
integer(pInt), dimension(:), allocatable :: localK
|
integer(pInt), dimension(:), allocatable :: localK
|
||||||
|
@ -123,11 +122,9 @@ subroutine basicPETSc_init
|
||||||
SNESSetConvergenceTest, &
|
SNESSetConvergenceTest, &
|
||||||
SNESSetFromOptions
|
SNESSetFromOptions
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0_pInt) then
|
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverBasicPETSc init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverBasicPETSc init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! allocate global fields
|
! allocate global fields
|
||||||
|
@ -153,10 +150,10 @@ subroutine basicPETSc_init
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetDM(snes,da,ierr); CHKERRQ(ierr)
|
call SNESSetDM(snes,da,ierr); CHKERRQ(ierr)
|
||||||
call DMCreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr) ! global solution vector (grid x 9, i.e. every def grad tensor)
|
call DMCreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr) ! global solution vector (grid x 9, i.e. every def grad tensor)
|
||||||
call DMDASNESSetFunctionLocal(da,INSERT_VALUES,BasicPETSC_formResidual,dummy,ierr) ! residual vector of same shape as solution vector
|
call DMDASNESSetFunctionLocal(da,INSERT_VALUES,BasicPETSC_formResidual,PETSC_NULL_OBJECT,ierr) ! residual vector of same shape as solution vector
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetDM(snes,da,ierr); CHKERRQ(ierr) ! connect snes to da
|
call SNESSetDM(snes,da,ierr); CHKERRQ(ierr) ! connect snes to da
|
||||||
call SNESSetConvergenceTest(snes,BasicPETSC_converged,dummy,PETSC_NULL_FUNCTION,ierr) ! specify custom convergence check function "_converged"
|
call SNESSetConvergenceTest(snes,BasicPETSC_converged,PETSC_NULL_OBJECT,PETSC_NULL_FUNCTION,ierr) ! specify custom convergence check function "_converged"
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetFromOptions(snes,ierr); CHKERRQ(ierr) ! pull it all together with additional cli arguments
|
call SNESSetFromOptions(snes,ierr); CHKERRQ(ierr) ! pull it all together with additional cli arguments
|
||||||
|
|
||||||
|
@ -165,7 +162,7 @@ subroutine basicPETSc_init
|
||||||
call DMDAVecGetArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! get the data out of PETSc to work with
|
call DMDAVecGetArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! get the data out of PETSc to work with
|
||||||
|
|
||||||
restart: if (restartInc > 1_pInt) then
|
restart: if (restartInc > 1_pInt) then
|
||||||
if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0 .and. worldrank == 0_pInt) &
|
if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0) &
|
||||||
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
||||||
'reading values of increment ', restartInc - 1_pInt, ' from file'
|
'reading values of increment ', restartInc - 1_pInt, ' from file'
|
||||||
flush(6)
|
flush(6)
|
||||||
|
@ -220,7 +217,7 @@ end subroutine basicPETSc_init
|
||||||
!> @brief solution for the Basic PETSC scheme with internal iterations
|
!> @brief solution for the Basic PETSC scheme with internal iterations
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
type(tSolutionState) function &
|
type(tSolutionState) function &
|
||||||
basicPETSc_solution(incInfoIn,guess,timeinc,timeinc_old,loadCaseTime,P_BC,F_BC,rotation_BC)
|
basicPETSc_solution(incInfoIn,timeinc,timeinc_old,stress_BC,rotation_BC)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
|
@ -239,13 +236,9 @@ type(tSolutionState) function &
|
||||||
! input data for solution
|
! input data for solution
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
timeinc, & !< increment in time for current solution
|
timeinc, & !< increment in time for current solution
|
||||||
timeinc_old, & !< increment in time of last increment
|
timeinc_old !< increment in time of last increment
|
||||||
loadCaseTime !< remaining time of current load case
|
|
||||||
logical, intent(in) :: &
|
|
||||||
guess
|
|
||||||
type(tBoundaryCondition), intent(in) :: &
|
type(tBoundaryCondition), intent(in) :: &
|
||||||
P_BC, &
|
stress_BC
|
||||||
F_BC
|
|
||||||
character(len=*), intent(in) :: &
|
character(len=*), intent(in) :: &
|
||||||
incInfoIn
|
incInfoIn
|
||||||
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
||||||
|
@ -263,17 +256,17 @@ type(tSolutionState) function &
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! update stiffness (and gamma operator)
|
! update stiffness (and gamma operator)
|
||||||
S = Utilities_maskedCompliance(rotation_BC,P_BC%maskLogical,C_volAvg)
|
S = Utilities_maskedCompliance(rotation_BC,stress_BC%maskLogical,C_volAvg)
|
||||||
if (update_gamma) call Utilities_updateGamma(C_minmaxAvg,restartWrite)
|
if (update_gamma) call Utilities_updateGamma(C_minmaxAvg,restartWrite)
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! set module wide availabe data
|
! set module wide availabe data
|
||||||
mask_stress = P_BC%maskFloat
|
mask_stress = stress_BC%maskFloat
|
||||||
params%P_BC = P_BC%values
|
params%stress_BC = stress_BC%values
|
||||||
params%rotation_BC = rotation_BC
|
params%rotation_BC = rotation_BC
|
||||||
params%timeinc = timeinc
|
params%timeinc = timeinc
|
||||||
params%timeincOld = timeinc_old
|
params%timeincOld = timeinc_old
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! solve BVP
|
! solve BVP
|
||||||
|
@ -301,8 +294,6 @@ subroutine BasicPETSC_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
itmax, &
|
itmax, &
|
||||||
itmin
|
itmin
|
||||||
use numerics, only: &
|
|
||||||
worldrank
|
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
grid, &
|
grid, &
|
||||||
grid3
|
grid3
|
||||||
|
@ -331,10 +322,10 @@ subroutine BasicPETSC_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
DMDALocalInfo, dimension(DMDA_LOCAL_INFO_SIZE) :: &
|
DMDALocalInfo, dimension(DMDA_LOCAL_INFO_SIZE) :: &
|
||||||
in
|
in
|
||||||
PetscScalar, dimension(3,3, &
|
PetscScalar, dimension(3,3, &
|
||||||
XG_RANGE,YG_RANGE,ZG_RANGE) :: &
|
XG_RANGE,YG_RANGE,ZG_RANGE), intent(in) :: &
|
||||||
x_scal
|
x_scal
|
||||||
PetscScalar, dimension(3,3, &
|
PetscScalar, dimension(3,3, &
|
||||||
X_RANGE,Y_RANGE,Z_RANGE) :: &
|
X_RANGE,Y_RANGE,Z_RANGE), intent(out) :: &
|
||||||
f_scal
|
f_scal
|
||||||
PetscInt :: &
|
PetscInt :: &
|
||||||
PETScIter, &
|
PETScIter, &
|
||||||
|
@ -354,16 +345,14 @@ subroutine BasicPETSC_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! report begin of new iteration
|
! report begin of new iteration
|
||||||
totalIter = totalIter + 1_pInt
|
totalIter = totalIter + 1_pInt
|
||||||
if (worldrank == 0_pInt) then
|
write(6,'(1x,a,3(a,'//IO_intOut(itmax)//'))') trim(incInfo), &
|
||||||
write(6,'(1x,a,3(a,'//IO_intOut(itmax)//'))') trim(incInfo), &
|
' @ Iteration ', itmin, '≤',totalIter, '≤', itmax
|
||||||
' @ Iteration ', itmin, '≤',totalIter, '≤', itmax
|
if (iand(debug_level(debug_spectral),debug_spectralRotation) /= 0) &
|
||||||
if (iand(debug_level(debug_spectral),debug_spectralRotation) /= 0) &
|
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim (lab) =', &
|
||||||
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim (lab) =', &
|
math_transpose33(math_rotate_backward33(F_aim,params%rotation_BC))
|
||||||
math_transpose33(math_rotate_backward33(F_aim,params%rotation_BC))
|
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim =', &
|
||||||
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim =', &
|
math_transpose33(F_aim)
|
||||||
math_transpose33(F_aim)
|
flush(6)
|
||||||
flush(6)
|
|
||||||
endif
|
|
||||||
endif newIteration
|
endif newIteration
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -376,8 +365,8 @@ subroutine BasicPETSC_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! stress BC handling
|
! stress BC handling
|
||||||
F_aim_lastIter = F_aim
|
F_aim_lastIter = F_aim
|
||||||
F_aim = F_aim - math_mul3333xx33(S, ((P_av - params%P_BC))) ! S = 0.0 for no bc
|
F_aim = F_aim - math_mul3333xx33(S, ((P_av - params%stress_BC))) ! S = 0.0 for no bc
|
||||||
err_stress = maxval(abs(mask_stress * (P_av - params%P_BC))) ! mask = 0.0 for no bc
|
err_stress = maxval(abs(mask_stress * (P_av - params%stress_BC))) ! mask = 0.0 for no bc
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! updated deformation gradient using fix point algorithm of basic scheme
|
! updated deformation gradient using fix point algorithm of basic scheme
|
||||||
|
@ -405,8 +394,7 @@ subroutine BasicPETSc_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,du
|
||||||
err_div_tolRel, &
|
err_div_tolRel, &
|
||||||
err_div_tolAbs, &
|
err_div_tolAbs, &
|
||||||
err_stress_tolRel, &
|
err_stress_tolRel, &
|
||||||
err_stress_tolAbs, &
|
err_stress_tolAbs
|
||||||
worldrank
|
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
terminallyIll
|
terminallyIll
|
||||||
|
|
||||||
|
@ -440,22 +428,20 @@ subroutine BasicPETSc_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,du
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! report
|
! report
|
||||||
if (worldrank == 0_pInt) then
|
write(6,'(1/,a)') ' ... reporting .............................................................'
|
||||||
write(6,'(1/,a)') ' ... reporting .............................................................'
|
write(6,'(1/,a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', &
|
||||||
write(6,'(1/,a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', &
|
err_div/divTol, ' (',err_div,' / m, tol =',divTol,')'
|
||||||
err_div/divTol, ' (',err_div,' / m, tol =',divTol,')'
|
write(6,'(a,f12.2,a,es8.2,a,es9.2,a)') ' error stress BC = ', &
|
||||||
write(6,'(a,f12.2,a,es8.2,a,es9.2,a)') ' error stress BC = ', &
|
err_stress/stressTol, ' (',err_stress, ' Pa, tol =',stressTol,')'
|
||||||
err_stress/stressTol, ' (',err_stress, ' Pa, tol =',stressTol,')'
|
write(6,'(/,a)') ' ==========================================================================='
|
||||||
write(6,'(/,a)') ' ==========================================================================='
|
flush(6)
|
||||||
flush(6)
|
|
||||||
endif
|
|
||||||
|
|
||||||
end subroutine BasicPETSc_converged
|
end subroutine BasicPETSc_converged
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief forwarding routine
|
!> @brief forwarding routine
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,rotation_BC)
|
subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,deformation_BC,stress_BC,rotation_BC)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33x33 ,&
|
math_mul33x33 ,&
|
||||||
math_rotate_backward33
|
math_rotate_backward33
|
||||||
|
@ -481,8 +467,8 @@ subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,r
|
||||||
timeinc, &
|
timeinc, &
|
||||||
loadCaseTime !< remaining time of current load case
|
loadCaseTime !< remaining time of current load case
|
||||||
type(tBoundaryCondition), intent(in) :: &
|
type(tBoundaryCondition), intent(in) :: &
|
||||||
P_BC, &
|
stress_BC, &
|
||||||
F_BC
|
deformation_BC
|
||||||
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
||||||
logical, intent(in) :: &
|
logical, intent(in) :: &
|
||||||
guess
|
guess
|
||||||
|
@ -495,10 +481,8 @@ subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,r
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! restart information for spectral solver
|
! restart information for spectral solver
|
||||||
if (restartWrite) then
|
if (restartWrite) then
|
||||||
if (worldrank == 0_pInt) then
|
write(6,'(/,a)') ' writing converged results for restart'
|
||||||
write(6,'(/,a)') ' writing converged results for restart'
|
flush(6)
|
||||||
flush(6)
|
|
||||||
endif
|
|
||||||
write(rankStr,'(a1,i0)')'_',worldrank
|
write(rankStr,'(a1,i0)')'_',worldrank
|
||||||
call IO_write_jobRealFile(777,'F'//trim(rankStr),size(F)) ! writing deformation gradient field to file
|
call IO_write_jobRealFile(777,'F'//trim(rankStr),size(F)) ! writing deformation gradient field to file
|
||||||
write (777,rec=1) F
|
write (777,rec=1) F
|
||||||
|
@ -530,14 +514,14 @@ subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,r
|
||||||
C_volAvgLastInc = C_volAvg
|
C_volAvgLastInc = C_volAvg
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! calculate rate for aim
|
! calculate rate for aim
|
||||||
if (F_BC%myType=='l') then ! calculate f_aimDot from given L and current F
|
if (deformation_BC%myType=='l') then ! calculate f_aimDot from given L and current F
|
||||||
f_aimDot = F_BC%maskFloat * math_mul33x33(F_BC%values, F_aim)
|
f_aimDot = deformation_BC%maskFloat * math_mul33x33(deformation_BC%values, F_aim)
|
||||||
elseif(F_BC%myType=='fdot') then ! f_aimDot is prescribed
|
elseif(deformation_BC%myType=='fdot') then ! f_aimDot is prescribed
|
||||||
f_aimDot = F_BC%maskFloat * F_BC%values
|
f_aimDot = deformation_BC%maskFloat * deformation_BC%values
|
||||||
elseif(F_BC%myType=='f') then ! aim at end of load case is prescribed
|
elseif(deformation_BC%myType=='f') then ! aim at end of load case is prescribed
|
||||||
f_aimDot = F_BC%maskFloat * (F_BC%values -F_aim)/loadCaseTime
|
f_aimDot = deformation_BC%maskFloat * (deformation_BC%values -F_aim)/loadCaseTime
|
||||||
endif
|
endif
|
||||||
if (guess) f_aimDot = f_aimDot + P_BC%maskFloat * (F_aim - F_aim_lastInc)/timeinc_old
|
if (guess) f_aimDot = f_aimDot + stress_BC%maskFloat * (F_aim - F_aim_lastInc)/timeinc_old
|
||||||
F_aim_lastInc = F_aim
|
F_aim_lastInc = F_aim
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -552,8 +536,8 @@ subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,r
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! update local deformation gradient
|
! update local deformation gradient
|
||||||
F = reshape(Utilities_forwardField(timeinc,F_lastInc,Fdot, & ! ensure that it matches rotated F_aim
|
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])
|
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)
|
||||||
|
|
||||||
end subroutine BasicPETSc_forward
|
end subroutine BasicPETSc_forward
|
||||||
|
|
|
@ -116,7 +116,6 @@ subroutine Polarisation_init
|
||||||
temp33_Real = 0.0_pReal
|
temp33_Real = 0.0_pReal
|
||||||
|
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
PetscObject :: dummy
|
|
||||||
PetscScalar, pointer, dimension(:,:,:,:) :: xx_psc, F, F_tau
|
PetscScalar, pointer, dimension(:,:,:,:) :: xx_psc, F, F_tau
|
||||||
integer(pInt), dimension(:), allocatable :: localK
|
integer(pInt), dimension(:), allocatable :: localK
|
||||||
integer(pInt) :: proc
|
integer(pInt) :: proc
|
||||||
|
@ -133,11 +132,9 @@ subroutine Polarisation_init
|
||||||
SNESSetConvergenceTest, &
|
SNESSetConvergenceTest, &
|
||||||
SNESSetFromOptions
|
SNESSetFromOptions
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0_pInt) then
|
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverPolarisation init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverPolarisation init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! allocate global fields
|
! allocate global fields
|
||||||
|
@ -165,9 +162,9 @@ subroutine Polarisation_init
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetDM(snes,da,ierr); CHKERRQ(ierr)
|
call SNESSetDM(snes,da,ierr); CHKERRQ(ierr)
|
||||||
call DMCreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr)
|
call DMCreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr)
|
||||||
call DMDASNESSetFunctionLocal(da,INSERT_VALUES,Polarisation_formResidual,dummy,ierr)
|
call DMDASNESSetFunctionLocal(da,INSERT_VALUES,Polarisation_formResidual,PETSC_NULL_OBJECT,ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetConvergenceTest(snes,Polarisation_converged,dummy,PETSC_NULL_FUNCTION,ierr)
|
call SNESSetConvergenceTest(snes,Polarisation_converged,PETSC_NULL_OBJECT,PETSC_NULL_FUNCTION,ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetFromOptions(snes,ierr); CHKERRQ(ierr)
|
call SNESSetFromOptions(snes,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
|
@ -177,7 +174,7 @@ subroutine Polarisation_init
|
||||||
F => xx_psc(0:8,:,:,:)
|
F => xx_psc(0:8,:,:,:)
|
||||||
F_tau => xx_psc(9:17,:,:,:)
|
F_tau => xx_psc(9:17,:,:,:)
|
||||||
restart: if (restartInc > 1_pInt) then
|
restart: if (restartInc > 1_pInt) then
|
||||||
if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0 .and. worldrank == 0_pInt) &
|
if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0) &
|
||||||
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
||||||
'reading values of increment ', restartInc - 1_pInt, ' from file'
|
'reading values of increment ', restartInc - 1_pInt, ' from file'
|
||||||
flush(6)
|
flush(6)
|
||||||
|
@ -245,7 +242,7 @@ end subroutine Polarisation_init
|
||||||
!> @brief solution for the Polarisation scheme with internal iterations
|
!> @brief solution for the Polarisation scheme with internal iterations
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
type(tSolutionState) function &
|
type(tSolutionState) function &
|
||||||
Polarisation_solution(incInfoIn,guess,timeinc,timeinc_old,loadCaseTime,P_BC,F_BC,rotation_BC)
|
Polarisation_solution(incInfoIn,timeinc,timeinc_old,stress_BC,rotation_BC)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
|
@ -266,13 +263,9 @@ type(tSolutionState) function &
|
||||||
! input data for solution
|
! input data for solution
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
timeinc, & !< increment in time for current solution
|
timeinc, & !< increment in time for current solution
|
||||||
timeinc_old, & !< increment in time of last increment
|
timeinc_old !< increment in time of last increment
|
||||||
loadCaseTime !< remaining time of current load case
|
|
||||||
logical, intent(in) :: &
|
|
||||||
guess
|
|
||||||
type(tBoundaryCondition), intent(in) :: &
|
type(tBoundaryCondition), intent(in) :: &
|
||||||
P_BC, &
|
stress_BC
|
||||||
F_BC
|
|
||||||
character(len=*), intent(in) :: &
|
character(len=*), intent(in) :: &
|
||||||
incInfoIn
|
incInfoIn
|
||||||
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
||||||
|
@ -290,7 +283,7 @@ type(tSolutionState) function &
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! update stiffness (and gamma operator)
|
! update stiffness (and gamma operator)
|
||||||
S = Utilities_maskedCompliance(rotation_BC,P_BC%maskLogical,C_volAvg)
|
S = Utilities_maskedCompliance(rotation_BC,stress_BC%maskLogical,C_volAvg)
|
||||||
if (update_gamma) then
|
if (update_gamma) then
|
||||||
call Utilities_updateGamma(C_minMaxAvg,restartWrite)
|
call Utilities_updateGamma(C_minMaxAvg,restartWrite)
|
||||||
C_scale = C_minMaxAvg
|
C_scale = C_minMaxAvg
|
||||||
|
@ -299,11 +292,11 @@ type(tSolutionState) function &
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! set module wide availabe data
|
! set module wide availabe data
|
||||||
mask_stress = P_BC%maskFloat
|
mask_stress = stress_BC%maskFloat
|
||||||
params%P_BC = P_BC%values
|
params%stress_BC = stress_BC%values
|
||||||
params%rotation_BC = rotation_BC
|
params%rotation_BC = rotation_BC
|
||||||
params%timeinc = timeinc
|
params%timeinc = timeinc
|
||||||
params%timeincOld = timeinc_old
|
params%timeincOld = timeinc_old
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! solve BVP
|
! solve BVP
|
||||||
|
@ -331,8 +324,7 @@ subroutine Polarisation_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
itmax, &
|
itmax, &
|
||||||
itmin, &
|
itmin, &
|
||||||
polarAlpha, &
|
polarAlpha, &
|
||||||
polarBeta, &
|
polarBeta
|
||||||
worldrank
|
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
grid3, &
|
grid3, &
|
||||||
grid
|
grid
|
||||||
|
@ -369,10 +361,10 @@ subroutine Polarisation_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
DMDA_LOCAL_INFO_SIZE) :: &
|
DMDA_LOCAL_INFO_SIZE) :: &
|
||||||
in
|
in
|
||||||
PetscScalar, target, dimension(3,3,2, &
|
PetscScalar, target, dimension(3,3,2, &
|
||||||
XG_RANGE,YG_RANGE,ZG_RANGE) :: &
|
XG_RANGE,YG_RANGE,ZG_RANGE), intent(in) :: &
|
||||||
x_scal
|
x_scal
|
||||||
PetscScalar, target, dimension(3,3,2, &
|
PetscScalar, target, dimension(3,3,2, &
|
||||||
X_RANGE,Y_RANGE,Z_RANGE) :: &
|
X_RANGE,Y_RANGE,Z_RANGE), intent(out) :: &
|
||||||
f_scal
|
f_scal
|
||||||
PetscScalar, pointer, dimension(:,:,:,:,:) :: &
|
PetscScalar, pointer, dimension(:,:,:,:,:) :: &
|
||||||
F, &
|
F, &
|
||||||
|
@ -411,16 +403,14 @@ subroutine Polarisation_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! report begin of new iteration
|
! report begin of new iteration
|
||||||
totalIter = totalIter + 1_pInt
|
totalIter = totalIter + 1_pInt
|
||||||
if (worldrank == 0_pInt) then
|
write(6,'(1x,a,3(a,'//IO_intOut(itmax)//'))') trim(incInfo), &
|
||||||
write(6,'(1x,a,3(a,'//IO_intOut(itmax)//'))') trim(incInfo), &
|
' @ Iteration ', itmin, '≤',totalIter, '≤', itmax
|
||||||
' @ Iteration ', itmin, '≤',totalIter, '≤', itmax
|
if (iand(debug_level(debug_spectral),debug_spectralRotation) /= 0) &
|
||||||
if (iand(debug_level(debug_spectral),debug_spectralRotation) /= 0) &
|
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim (lab) =', &
|
||||||
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim (lab) =', &
|
math_transpose33(math_rotate_backward33(F_aim,params%rotation_BC))
|
||||||
math_transpose33(math_rotate_backward33(F_aim,params%rotation_BC))
|
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim =', &
|
||||||
write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') ' deformation gradient aim =', &
|
math_transpose33(F_aim)
|
||||||
math_transpose33(F_aim)
|
flush(6)
|
||||||
flush(6)
|
|
||||||
endif
|
|
||||||
endif newIteration
|
endif newIteration
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -494,8 +484,7 @@ subroutine Polarisation_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,
|
||||||
err_curl_tolRel, &
|
err_curl_tolRel, &
|
||||||
err_curl_tolAbs, &
|
err_curl_tolAbs, &
|
||||||
err_stress_tolAbs, &
|
err_stress_tolAbs, &
|
||||||
err_stress_tolRel, &
|
err_stress_tolRel
|
||||||
worldrank
|
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul3333xx33
|
math_mul3333xx33
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
|
@ -518,9 +507,9 @@ subroutine Polarisation_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! stress BC handling
|
! stress BC handling
|
||||||
F_aim = F_aim - math_mul3333xx33(S, ((P_av - params%P_BC))) ! S = 0.0 for no bc
|
F_aim = F_aim - math_mul3333xx33(S, ((P_av - params%stress_BC))) ! S = 0.0 for no bc
|
||||||
err_BC = maxval(abs((-mask_stress+1.0_pReal)*math_mul3333xx33(C_scale,F_aim-F_av) + &
|
err_BC = maxval(abs((-mask_stress+1.0_pReal)*math_mul3333xx33(C_scale,F_aim-F_av) + &
|
||||||
mask_stress *(P_av - params%P_BC))) ! mask = 0.0 for no bc
|
mask_stress *(P_av - params%stress_BC))) ! mask = 0.0 for no bc
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! error calculation
|
! error calculation
|
||||||
|
@ -542,31 +531,29 @@ subroutine Polarisation_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! report
|
! report
|
||||||
if (worldrank == 0_pInt) then
|
write(6,'(1/,a)') ' ... reporting .............................................................'
|
||||||
write(6,'(1/,a)') ' ... reporting .............................................................'
|
write(6,'(/,a,f12.2,a,es8.2,a,es9.2,a)') ' error curl = ', &
|
||||||
write(6,'(/,a,f12.2,a,es8.2,a,es9.2,a)') ' error curl = ', &
|
err_curl/curlTol,' (',err_curl,' -, tol =',curlTol,')'
|
||||||
err_curl/curlTol,' (',err_curl,' -, tol =',curlTol,')'
|
write(6,' (a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', &
|
||||||
write(6,' (a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', &
|
err_div/divTol, ' (',err_div, ' / m, tol =',divTol,')'
|
||||||
err_div/divTol, ' (',err_div, ' / m, tol =',divTol,')'
|
write(6,' (a,f12.2,a,es8.2,a,es9.2,a)') ' error BC = ', &
|
||||||
write(6,' (a,f12.2,a,es8.2,a,es9.2,a)') ' error BC = ', &
|
err_BC/BC_tol, ' (',err_BC, ' Pa, tol =',BC_tol,')'
|
||||||
err_BC/BC_tol, ' (',err_BC, ' Pa, tol =',BC_tol,')'
|
write(6,'(/,a)') ' ==========================================================================='
|
||||||
write(6,'(/,a)') ' ==========================================================================='
|
flush(6)
|
||||||
flush(6)
|
|
||||||
endif
|
|
||||||
|
|
||||||
end subroutine Polarisation_converged
|
end subroutine Polarisation_converged
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief forwarding routine
|
!> @brief forwarding routine
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine Polarisation_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC,rotation_BC)
|
subroutine Polarisation_forward(guess,timeinc,timeinc_old,loadCaseTime,deformation_BC,stress_BC,rotation_BC)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33x33, &
|
math_mul33x33, &
|
||||||
math_mul3333xx33, &
|
math_mul3333xx33, &
|
||||||
math_transpose33, &
|
math_transpose33, &
|
||||||
math_rotate_backward33
|
math_rotate_backward33
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
worldrank
|
worldrank
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
grid3, &
|
grid3, &
|
||||||
grid
|
grid
|
||||||
|
@ -587,8 +574,8 @@ subroutine Polarisation_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC
|
||||||
timeinc, &
|
timeinc, &
|
||||||
loadCaseTime !< remaining time of current load case
|
loadCaseTime !< remaining time of current load case
|
||||||
type(tBoundaryCondition), intent(in) :: &
|
type(tBoundaryCondition), intent(in) :: &
|
||||||
P_BC, &
|
stress_BC, &
|
||||||
F_BC
|
deformation_BC
|
||||||
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
real(pReal), dimension(3,3), intent(in) :: rotation_BC
|
||||||
logical, intent(in) :: &
|
logical, intent(in) :: &
|
||||||
guess
|
guess
|
||||||
|
@ -604,19 +591,19 @@ subroutine Polarisation_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC
|
||||||
F => xx_psc(0:8,:,:,:)
|
F => xx_psc(0:8,:,:,:)
|
||||||
F_tau => xx_psc(9:17,:,:,:)
|
F_tau => xx_psc(9:17,:,:,:)
|
||||||
if (restartWrite) then
|
if (restartWrite) then
|
||||||
if (worldrank == 0_pInt) write(6,'(/,a)') ' writing converged results for restart'
|
write(6,'(/,a)') ' writing converged results for restart'
|
||||||
flush(6)
|
flush(6)
|
||||||
write(rankStr,'(a1,i0)')'_',worldrank
|
write(rankStr,'(a1,i0)')'_',worldrank
|
||||||
call IO_write_jobRealFile(777,'F'//trim(rankStr),size(F)) ! writing deformation gradient field to file
|
call IO_write_jobRealFile(777,'F'//trim(rankStr),size(F)) ! writing deformation gradient field to file
|
||||||
write (777,rec=1) F
|
write (777,rec=1) F
|
||||||
close (777)
|
close (777)
|
||||||
call IO_write_jobRealFile(777,'F_lastInc'//trim(rankStr),size(F_lastInc)) ! writing F_lastInc field to file
|
call IO_write_jobRealFile(777,'F_lastInc'//trim(rankStr),size(F_lastInc)) ! writing F_lastInc field to file
|
||||||
write (777,rec=1) F_lastInc
|
write (777,rec=1) F_lastInc
|
||||||
close (777)
|
close (777)
|
||||||
call IO_write_jobRealFile(777,'F_tau'//trim(rankStr),size(F_tau)) ! writing deformation gradient field to file
|
call IO_write_jobRealFile(777,'F_tau'//trim(rankStr),size(F_tau)) ! writing deformation gradient field to file
|
||||||
write (777,rec=1) F_tau
|
write (777,rec=1) F_tau
|
||||||
close (777)
|
close (777)
|
||||||
call IO_write_jobRealFile(777,'F_tau_lastInc'//trim(rankStr),size(F_tau_lastInc)) ! writing F_lastInc field to file
|
call IO_write_jobRealFile(777,'F_tau_lastInc'//trim(rankStr),size(F_tau_lastInc)) ! writing F_lastInc field to file
|
||||||
write (777,rec=1) F_tau_lastInc
|
write (777,rec=1) F_tau_lastInc
|
||||||
close (777)
|
close (777)
|
||||||
if (worldrank == 0_pInt) then
|
if (worldrank == 0_pInt) then
|
||||||
|
@ -650,14 +637,14 @@ subroutine Polarisation_forward(guess,timeinc,timeinc_old,loadCaseTime,F_BC,P_BC
|
||||||
C_volAvgLastInc = C_volAvg
|
C_volAvgLastInc = C_volAvg
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! calculate rate for aim
|
! calculate rate for aim
|
||||||
if (F_BC%myType=='l') then ! calculate f_aimDot from given L and current F
|
if (deformation_BC%myType=='l') then ! calculate f_aimDot from given L and current F
|
||||||
f_aimDot = F_BC%maskFloat * math_mul33x33(F_BC%values, F_aim)
|
f_aimDot = deformation_BC%maskFloat * math_mul33x33(deformation_BC%values, F_aim)
|
||||||
elseif(F_BC%myType=='fdot') then ! f_aimDot is prescribed
|
elseif(deformation_BC%myType=='fdot') then ! f_aimDot is prescribed
|
||||||
f_aimDot = F_BC%maskFloat * F_BC%values
|
f_aimDot = deformation_BC%maskFloat * deformation_BC%values
|
||||||
elseif(F_BC%myType=='f') then ! aim at end of load case is prescribed
|
elseif(deformation_BC%myType=='f') then ! aim at end of load case is prescribed
|
||||||
f_aimDot = F_BC%maskFloat * (F_BC%values -F_aim)/loadCaseTime
|
f_aimDot = deformation_BC%maskFloat * (deformation_BC%values -F_aim)/loadCaseTime
|
||||||
endif
|
endif
|
||||||
if (guess) f_aimDot = f_aimDot + P_BC%maskFloat * (F_aim - F_aim_lastInc)/timeinc_old
|
if (guess) f_aimDot = f_aimDot + stress_BC%maskFloat * (F_aim - F_aim_lastInc)/timeinc_old
|
||||||
F_aim_lastInc = F_aim
|
F_aim_lastInc = F_aim
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -86,7 +86,6 @@ subroutine spectral_thermal_init
|
||||||
DM :: thermal_grid
|
DM :: thermal_grid
|
||||||
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
PetscObject :: dummy
|
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
SNESCreate, &
|
SNESCreate, &
|
||||||
|
@ -123,7 +122,8 @@ subroutine spectral_thermal_init
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetDM(thermal_snes,thermal_grid,ierr); CHKERRQ(ierr) ! connect snes to da
|
call SNESSetDM(thermal_snes,thermal_grid,ierr); CHKERRQ(ierr) ! connect snes to da
|
||||||
call DMCreateGlobalVector(thermal_grid,solution ,ierr); CHKERRQ(ierr) ! global solution vector (grid x 1, i.e. every def grad tensor)
|
call DMCreateGlobalVector(thermal_grid,solution ,ierr); CHKERRQ(ierr) ! global solution vector (grid x 1, i.e. every def grad tensor)
|
||||||
call DMDASNESSetFunctionLocal(thermal_grid,INSERT_VALUES,spectral_thermal_formResidual,dummy,ierr) ! residual vector of same shape as solution vector
|
call DMDASNESSetFunctionLocal(thermal_grid,INSERT_VALUES,spectral_thermal_formResidual,&
|
||||||
|
PETSC_NULL_OBJECT,ierr) ! residual vector of same shape as solution vector
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetFromOptions(thermal_snes,ierr); CHKERRQ(ierr) ! pull it all together with additional cli arguments
|
call SNESSetFromOptions(thermal_snes,ierr); CHKERRQ(ierr) ! pull it all together with additional cli arguments
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ end subroutine spectral_thermal_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief solution for the spectral thermal scheme with internal iterations
|
!> @brief solution for the spectral thermal scheme with internal iterations
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
type(tSolutionState) function spectral_thermal_solution(guess,timeinc,timeinc_old,loadCaseTime)
|
type(tSolutionState) function spectral_thermal_solution(timeinc,timeinc_old,loadCaseTime)
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
itmax, &
|
itmax, &
|
||||||
err_thermal_tolAbs, &
|
err_thermal_tolAbs, &
|
||||||
|
@ -189,7 +189,6 @@ type(tSolutionState) function spectral_thermal_solution(guess,timeinc,timeinc_ol
|
||||||
timeinc, & !< increment in time for current solution
|
timeinc, & !< increment in time for current solution
|
||||||
timeinc_old, & !< increment in time of last increment
|
timeinc_old, & !< increment in time of last increment
|
||||||
loadCaseTime !< remaining time of current load case
|
loadCaseTime !< remaining time of current load case
|
||||||
logical, intent(in) :: guess
|
|
||||||
integer(pInt) :: i, j, k, cell
|
integer(pInt) :: i, j, k, cell
|
||||||
PetscInt :: position
|
PetscInt :: position
|
||||||
PetscReal :: minTemperature, maxTemperature, stagNorm, solnNorm
|
PetscReal :: minTemperature, maxTemperature, stagNorm, solnNorm
|
||||||
|
@ -283,10 +282,10 @@ subroutine spectral_thermal_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
DMDALocalInfo, dimension(DMDA_LOCAL_INFO_SIZE) :: &
|
DMDALocalInfo, dimension(DMDA_LOCAL_INFO_SIZE) :: &
|
||||||
in
|
in
|
||||||
PetscScalar, dimension( &
|
PetscScalar, dimension( &
|
||||||
XG_RANGE,YG_RANGE,ZG_RANGE) :: &
|
XG_RANGE,YG_RANGE,ZG_RANGE), intent(in) :: &
|
||||||
x_scal
|
x_scal
|
||||||
PetscScalar, dimension( &
|
PetscScalar, dimension( &
|
||||||
X_RANGE,Y_RANGE,Z_RANGE) :: &
|
X_RANGE,Y_RANGE,Z_RANGE), intent(out) :: &
|
||||||
f_scal
|
f_scal
|
||||||
PetscObject :: dummy
|
PetscObject :: dummy
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
|
@ -337,7 +336,7 @@ end subroutine spectral_thermal_formResidual
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief forwarding routine
|
!> @brief forwarding routine
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine spectral_thermal_forward(guess,timeinc,timeinc_old,loadCaseTime)
|
subroutine spectral_thermal_forward()
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
grid, &
|
grid, &
|
||||||
grid3
|
grid3
|
||||||
|
@ -351,11 +350,6 @@ subroutine spectral_thermal_forward(guess,timeinc,timeinc_old,loadCaseTime)
|
||||||
thermal_conduction_getSpecificHeat
|
thermal_conduction_getSpecificHeat
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
real(pReal), intent(in) :: &
|
|
||||||
timeinc_old, &
|
|
||||||
timeinc, &
|
|
||||||
loadCaseTime !< remaining time of current load case
|
|
||||||
logical, intent(in) :: guess
|
|
||||||
integer(pInt) :: i, j, k, cell
|
integer(pInt) :: i, j, k, cell
|
||||||
DM :: dm_local
|
DM :: dm_local
|
||||||
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
!> @brief Utilities used by the different spectral solver variants
|
!> @brief Utilities used by the different spectral solver variants
|
||||||
|
@ -84,7 +85,7 @@ module spectral_utilities
|
||||||
|
|
||||||
type, public :: tLoadCase
|
type, public :: tLoadCase
|
||||||
real(pReal), dimension (3,3) :: rotation = math_I3 !< rotation of BC
|
real(pReal), dimension (3,3) :: rotation = math_I3 !< rotation of BC
|
||||||
type(tBoundaryCondition) :: P, & !< stress BC
|
type(tBoundaryCondition) :: stress, & !< stress BC
|
||||||
deformation !< deformation BC (Fdot or L)
|
deformation !< deformation BC (Fdot or L)
|
||||||
real(pReal) :: time = 0.0_pReal !< length of increment
|
real(pReal) :: time = 0.0_pReal !< length of increment
|
||||||
integer(pInt) :: incs = 0_pInt, & !< number of increments
|
integer(pInt) :: incs = 0_pInt, & !< number of increments
|
||||||
|
@ -96,7 +97,7 @@ module spectral_utilities
|
||||||
end type tLoadCase
|
end type tLoadCase
|
||||||
|
|
||||||
type, public :: tSolutionParams !< @todo use here the type definition for a full loadcase including mask
|
type, public :: tSolutionParams !< @todo use here the type definition for a full loadcase including mask
|
||||||
real(pReal), dimension(3,3) :: P_BC, rotation_BC
|
real(pReal), dimension(3,3) :: stress_BC, rotation_BC
|
||||||
real(pReal) :: timeinc
|
real(pReal) :: timeinc
|
||||||
real(pReal) :: timeincOld
|
real(pReal) :: timeincOld
|
||||||
real(pReal) :: density
|
real(pReal) :: density
|
||||||
|
@ -227,9 +228,12 @@ subroutine utilities_init()
|
||||||
' add more using the PETSc_Options keyword in numerics.config '; flush(6)
|
' add more using the PETSc_Options keyword in numerics.config '; flush(6)
|
||||||
|
|
||||||
call PetscOptionsClear(ierr); CHKERRQ(ierr)
|
call PetscOptionsClear(ierr); CHKERRQ(ierr)
|
||||||
if(debugPETSc) call PetscOptionsInsertString(trim(PETSCDEBUG),ierr); CHKERRQ(ierr)
|
if(debugPETSc) call PetscOptionsInsertString(trim(PETSCDEBUG),ierr)
|
||||||
call PetscOptionsInsertString(trim(petsc_defaultOptions),ierr); CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call PetscOptionsInsertString(trim(petsc_options),ierr); CHKERRQ(ierr)
|
call PetscOptionsInsertString(trim(petsc_defaultOptions),ierr)
|
||||||
|
CHKERRQ(ierr)
|
||||||
|
call PetscOptionsInsertString(trim(petsc_options),ierr)
|
||||||
|
CHKERRQ(ierr)
|
||||||
|
|
||||||
grid1Red = grid(1)/2_pInt + 1_pInt
|
grid1Red = grid(1)/2_pInt + 1_pInt
|
||||||
wgt = 1.0/real(product(grid),pReal)
|
wgt = 1.0/real(product(grid),pReal)
|
||||||
|
@ -238,11 +242,11 @@ subroutine utilities_init()
|
||||||
write(6,'(a,3(es12.5))') ' size x y z: ', geomSize
|
write(6,'(a,3(es12.5))') ' size x y z: ', geomSize
|
||||||
|
|
||||||
select case (spectral_derivative)
|
select case (spectral_derivative)
|
||||||
case ('continuous') ! default, no weighting
|
case ('continuous')
|
||||||
spectral_derivative_ID = DERIVATIVE_CONTINUOUS_ID
|
spectral_derivative_ID = DERIVATIVE_CONTINUOUS_ID
|
||||||
case ('central_difference') ! cosine curve with 1 for avg and zero for highest freq
|
case ('central_difference')
|
||||||
spectral_derivative_ID = DERIVATIVE_CENTRAL_DIFF_ID
|
spectral_derivative_ID = DERIVATIVE_CENTRAL_DIFF_ID
|
||||||
case ('fwbw_difference') ! gradient, might need grid scaling as for cosine filter
|
case ('fwbw_difference')
|
||||||
spectral_derivative_ID = DERIVATIVE_FWBW_DIFF_ID
|
spectral_derivative_ID = DERIVATIVE_FWBW_DIFF_ID
|
||||||
case default
|
case default
|
||||||
call IO_error(892_pInt,ext_msg=trim(spectral_derivative))
|
call IO_error(892_pInt,ext_msg=trim(spectral_derivative))
|
||||||
|
@ -271,9 +275,9 @@ subroutine utilities_init()
|
||||||
! MPI allocation
|
! MPI allocation
|
||||||
gridFFTW = int(grid,C_INTPTR_T)
|
gridFFTW = int(grid,C_INTPTR_T)
|
||||||
alloc_local = fftw_mpi_local_size_3d(gridFFTW(3), gridFFTW(2), gridFFTW(1)/2 +1, &
|
alloc_local = fftw_mpi_local_size_3d(gridFFTW(3), gridFFTW(2), gridFFTW(1)/2 +1, &
|
||||||
MPI_COMM_WORLD, local_K, local_K_offset)
|
PETSC_COMM_WORLD, local_K, local_K_offset)
|
||||||
allocate (xi1st (3,grid1Red,grid(2),grid3),source = cmplx(0.0_pReal,0.0_pReal,pReal)) ! frequencies, only half the size for first dimension
|
allocate (xi1st (3,grid1Red,grid(2),grid3),source = cmplx(0.0_pReal,0.0_pReal,pReal)) ! frequencies for first derivatives, only half the size for first dimension
|
||||||
allocate (xi2nd (3,grid1Red,grid(2),grid3),source = cmplx(0.0_pReal,0.0_pReal,pReal)) ! frequencies, only half the size for first dimension
|
allocate (xi2nd (3,grid1Red,grid(2),grid3),source = cmplx(0.0_pReal,0.0_pReal,pReal)) ! frequencies for second derivatives, only half the size for first dimension
|
||||||
|
|
||||||
tensorField = fftw_alloc_complex(tensorSize*alloc_local)
|
tensorField = fftw_alloc_complex(tensorSize*alloc_local)
|
||||||
call c_f_pointer(tensorField, tensorField_real, [3_C_INTPTR_T,3_C_INTPTR_T, &
|
call c_f_pointer(tensorField, tensorField_real, [3_C_INTPTR_T,3_C_INTPTR_T, &
|
||||||
|
@ -298,12 +302,12 @@ subroutine utilities_init()
|
||||||
planTensorForth = fftw_mpi_plan_many_dft_r2c(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
planTensorForth = fftw_mpi_plan_many_dft_r2c(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
||||||
tensorSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, &! no. of transforms, default iblock and oblock
|
tensorSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, &! no. of transforms, default iblock and oblock
|
||||||
tensorField_real, tensorField_fourier, & ! input data, output data
|
tensorField_real, tensorField_fourier, & ! input data, output data
|
||||||
MPI_COMM_WORLD, fftw_planner_flag) ! use all processors, planer precision
|
PETSC_COMM_WORLD, fftw_planner_flag) ! use all processors, planer precision
|
||||||
if (.not. C_ASSOCIATED(planTensorForth)) call IO_error(810, ext_msg='planTensorForth')
|
if (.not. C_ASSOCIATED(planTensorForth)) call IO_error(810, ext_msg='planTensorForth')
|
||||||
planTensorBack = fftw_mpi_plan_many_dft_c2r(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
planTensorBack = fftw_mpi_plan_many_dft_c2r(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
||||||
tensorSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, &! no. of transforms, default iblock and oblock
|
tensorSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, &! no. of transforms, default iblock and oblock
|
||||||
tensorField_fourier,tensorField_real, & ! input data, output data
|
tensorField_fourier,tensorField_real, & ! input data, output data
|
||||||
MPI_COMM_WORLD, fftw_planner_flag) ! all processors, planer precision
|
PETSC_COMM_WORLD, fftw_planner_flag) ! all processors, planer precision
|
||||||
if (.not. C_ASSOCIATED(planTensorBack)) call IO_error(810, ext_msg='planTensorBack')
|
if (.not. C_ASSOCIATED(planTensorBack)) call IO_error(810, ext_msg='planTensorBack')
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -311,12 +315,12 @@ subroutine utilities_init()
|
||||||
planVectorForth = fftw_mpi_plan_many_dft_r2c(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
planVectorForth = fftw_mpi_plan_many_dft_r2c(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
||||||
vecSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, &! no. of transforms, default iblock and oblock
|
vecSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, &! no. of transforms, default iblock and oblock
|
||||||
vectorField_real, vectorField_fourier, & ! input data, output data
|
vectorField_real, vectorField_fourier, & ! input data, output data
|
||||||
MPI_COMM_WORLD, fftw_planner_flag) ! use all processors, planer precision
|
PETSC_COMM_WORLD, fftw_planner_flag) ! use all processors, planer precision
|
||||||
if (.not. C_ASSOCIATED(planVectorForth)) call IO_error(810, ext_msg='planVectorForth')
|
if (.not. C_ASSOCIATED(planVectorForth)) call IO_error(810, ext_msg='planVectorForth')
|
||||||
planVectorBack = fftw_mpi_plan_many_dft_c2r(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
planVectorBack = fftw_mpi_plan_many_dft_c2r(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
||||||
vecSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, & ! no. of transforms, default iblock and oblock
|
vecSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, & ! no. of transforms, default iblock and oblock
|
||||||
vectorField_fourier,vectorField_real, & ! input data, output data
|
vectorField_fourier,vectorField_real, & ! input data, output data
|
||||||
MPI_COMM_WORLD, fftw_planner_flag) ! all processors, planer precision
|
PETSC_COMM_WORLD, fftw_planner_flag) ! all processors, planer precision
|
||||||
if (.not. C_ASSOCIATED(planVectorBack)) call IO_error(810, ext_msg='planVectorBack')
|
if (.not. C_ASSOCIATED(planVectorBack)) call IO_error(810, ext_msg='planVectorBack')
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -324,12 +328,12 @@ subroutine utilities_init()
|
||||||
planScalarForth = fftw_mpi_plan_many_dft_r2c(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
planScalarForth = fftw_mpi_plan_many_dft_r2c(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order
|
||||||
scalarSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, & ! no. of transforms, default iblock and oblock
|
scalarSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, & ! no. of transforms, default iblock and oblock
|
||||||
scalarField_real, scalarField_fourier, & ! input data, output data
|
scalarField_real, scalarField_fourier, & ! input data, output data
|
||||||
MPI_COMM_WORLD, fftw_planner_flag) ! use all processors, planer precision
|
PETSC_COMM_WORLD, fftw_planner_flag) ! use all processors, planer precision
|
||||||
if (.not. C_ASSOCIATED(planScalarForth)) call IO_error(810, ext_msg='planScalarForth')
|
if (.not. C_ASSOCIATED(planScalarForth)) call IO_error(810, ext_msg='planScalarForth')
|
||||||
planScalarBack = fftw_mpi_plan_many_dft_c2r(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order, no. of transforms
|
planScalarBack = fftw_mpi_plan_many_dft_c2r(3, [gridFFTW(3),gridFFTW(2),gridFFTW(1)], & ! dimension, logical length in each dimension in reversed order, no. of transforms
|
||||||
scalarSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, & ! no. of transforms, default iblock and oblock
|
scalarSize, FFTW_MPI_DEFAULT_BLOCK, FFTW_MPI_DEFAULT_BLOCK, & ! no. of transforms, default iblock and oblock
|
||||||
scalarField_fourier,scalarField_real, & ! input data, output data
|
scalarField_fourier,scalarField_real, & ! input data, output data
|
||||||
MPI_COMM_WORLD, fftw_planner_flag) ! use all processors, planer precision
|
PETSC_COMM_WORLD, fftw_planner_flag) ! use all processors, planer precision
|
||||||
if (.not. C_ASSOCIATED(planScalarBack)) call IO_error(810, ext_msg='planScalarBack')
|
if (.not. C_ASSOCIATED(planScalarBack)) call IO_error(810, ext_msg='planScalarBack')
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -699,8 +703,8 @@ real(pReal) function utilities_curlRMS()
|
||||||
curl_fourier(l,3) = (+tensorField_fourier(l,2,i,j,k)*xi1st(1,i,j,k)*rescaledGeom(1) &
|
curl_fourier(l,3) = (+tensorField_fourier(l,2,i,j,k)*xi1st(1,i,j,k)*rescaledGeom(1) &
|
||||||
-tensorField_fourier(l,1,i,j,k)*xi1st(2,i,j,k)*rescaledGeom(2))
|
-tensorField_fourier(l,1,i,j,k)*xi1st(2,i,j,k)*rescaledGeom(2))
|
||||||
enddo
|
enddo
|
||||||
utilities_curlRMS = utilities_curlRMS + &
|
utilities_curlRMS = utilities_curlRMS &
|
||||||
2.0_pReal*sum(real(curl_fourier)**2.0_pReal + aimag(curl_fourier)**2.0_pReal)! Has somewhere a conj. complex counterpart. Therefore count it twice.
|
+2.0_pReal*sum(real(curl_fourier)**2.0_pReal+aimag(curl_fourier)**2.0_pReal) ! Has somewhere a conj. complex counterpart. Therefore count it twice.
|
||||||
enddo
|
enddo
|
||||||
do l = 1_pInt, 3_pInt
|
do l = 1_pInt, 3_pInt
|
||||||
curl_fourier = (+tensorField_fourier(l,3,1,j,k)*xi1st(2,1,j,k)*rescaledGeom(2) &
|
curl_fourier = (+tensorField_fourier(l,3,1,j,k)*xi1st(2,1,j,k)*rescaledGeom(2) &
|
||||||
|
@ -710,8 +714,8 @@ real(pReal) function utilities_curlRMS()
|
||||||
curl_fourier = (+tensorField_fourier(l,2,1,j,k)*xi1st(1,1,j,k)*rescaledGeom(1) &
|
curl_fourier = (+tensorField_fourier(l,2,1,j,k)*xi1st(1,1,j,k)*rescaledGeom(1) &
|
||||||
-tensorField_fourier(l,1,1,j,k)*xi1st(2,1,j,k)*rescaledGeom(2))
|
-tensorField_fourier(l,1,1,j,k)*xi1st(2,1,j,k)*rescaledGeom(2))
|
||||||
enddo
|
enddo
|
||||||
utilities_curlRMS = utilities_curlRMS + &
|
utilities_curlRMS = utilities_curlRMS &
|
||||||
sum(real(curl_fourier)**2.0_pReal + aimag(curl_fourier)**2.0_pReal)! this layer (DC) does not have a conjugate complex counterpart (if grid(1) /= 1)
|
+ sum(real(curl_fourier)**2.0_pReal + aimag(curl_fourier)**2.0_pReal) ! this layer (DC) does not have a conjugate complex counterpart (if grid(1) /= 1)
|
||||||
do l = 1_pInt, 3_pInt
|
do l = 1_pInt, 3_pInt
|
||||||
curl_fourier = (+tensorField_fourier(l,3,grid1Red,j,k)*xi1st(2,grid1Red,j,k)*rescaledGeom(2) &
|
curl_fourier = (+tensorField_fourier(l,3,grid1Red,j,k)*xi1st(2,grid1Red,j,k)*rescaledGeom(2) &
|
||||||
-tensorField_fourier(l,2,grid1Red,j,k)*xi1st(3,grid1Red,j,k)*rescaledGeom(3))
|
-tensorField_fourier(l,2,grid1Red,j,k)*xi1st(3,grid1Red,j,k)*rescaledGeom(3))
|
||||||
|
@ -720,14 +724,14 @@ real(pReal) function utilities_curlRMS()
|
||||||
curl_fourier = (+tensorField_fourier(l,2,grid1Red,j,k)*xi1st(1,grid1Red,j,k)*rescaledGeom(1) &
|
curl_fourier = (+tensorField_fourier(l,2,grid1Red,j,k)*xi1st(1,grid1Red,j,k)*rescaledGeom(1) &
|
||||||
-tensorField_fourier(l,1,grid1Red,j,k)*xi1st(2,grid1Red,j,k)*rescaledGeom(2))
|
-tensorField_fourier(l,1,grid1Red,j,k)*xi1st(2,grid1Red,j,k)*rescaledGeom(2))
|
||||||
enddo
|
enddo
|
||||||
utilities_curlRMS = utilities_curlRMS + &
|
utilities_curlRMS = utilities_curlRMS &
|
||||||
sum(real(curl_fourier)**2.0_pReal + aimag(curl_fourier)**2.0_pReal)! this layer (Nyquist) does not have a conjugate complex counterpart (if grid(1) /= 1)
|
+ sum(real(curl_fourier)**2.0_pReal + aimag(curl_fourier)**2.0_pReal) ! this layer (Nyquist) does not have a conjugate complex counterpart (if grid(1) /= 1)
|
||||||
enddo; enddo
|
enddo; enddo
|
||||||
|
|
||||||
call MPI_Allreduce(MPI_IN_PLACE,utilities_curlRMS,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr)
|
call MPI_Allreduce(MPI_IN_PLACE,utilities_curlRMS,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr)
|
||||||
if(ierr /=0_pInt) call IO_error(894_pInt, ext_msg='utilities_curlRMS')
|
if(ierr /=0_pInt) call IO_error(894_pInt, ext_msg='utilities_curlRMS')
|
||||||
utilities_curlRMS = sqrt(utilities_curlRMS) * wgt
|
utilities_curlRMS = sqrt(utilities_curlRMS) * wgt
|
||||||
if(grid(1) == 1_pInt) utilities_curlRMS = utilities_curlRMS * 0.5_pReal ! counted twice in case of grid(1) == 1
|
if(grid(1) == 1_pInt) utilities_curlRMS = utilities_curlRMS * 0.5_pReal ! counted twice in case of grid(1) == 1
|
||||||
|
|
||||||
end function utilities_curlRMS
|
end function utilities_curlRMS
|
||||||
|
|
||||||
|
|
|
@ -74,8 +74,6 @@ subroutine thermal_adiabatic_init(fileUnit)
|
||||||
temperature, &
|
temperature, &
|
||||||
temperatureRate, &
|
temperatureRate, &
|
||||||
material_partHomogenization
|
material_partHomogenization
|
||||||
use numerics,only: &
|
|
||||||
worldrank
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: fileUnit
|
integer(pInt), intent(in) :: fileUnit
|
||||||
|
@ -88,11 +86,9 @@ subroutine thermal_adiabatic_init(fileUnit)
|
||||||
tag = '', &
|
tag = '', &
|
||||||
line = ''
|
line = ''
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
write(6,'(/,a)') ' <<<+- thermal_'//THERMAL_ADIABATIC_label//' init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- thermal_'//THERMAL_ADIABATIC_label//' init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
maxNinstance = int(count(thermal_type == THERMAL_adiabatic_ID),pInt)
|
maxNinstance = int(count(thermal_type == THERMAL_adiabatic_ID),pInt)
|
||||||
if (maxNinstance == 0_pInt) return
|
if (maxNinstance == 0_pInt) return
|
||||||
|
|
|
@ -75,8 +75,6 @@ subroutine thermal_conduction_init(fileUnit)
|
||||||
temperature, &
|
temperature, &
|
||||||
temperatureRate, &
|
temperatureRate, &
|
||||||
material_partHomogenization
|
material_partHomogenization
|
||||||
use numerics,only: &
|
|
||||||
worldrank
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: fileUnit
|
integer(pInt), intent(in) :: fileUnit
|
||||||
|
@ -89,11 +87,9 @@ subroutine thermal_conduction_init(fileUnit)
|
||||||
tag = '', &
|
tag = '', &
|
||||||
line = ''
|
line = ''
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
write(6,'(/,a)') ' <<<+- thermal_'//THERMAL_CONDUCTION_label//' init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- thermal_'//THERMAL_CONDUCTION_label//' init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
maxNinstance = int(count(thermal_type == THERMAL_conduction_ID),pInt)
|
maxNinstance = int(count(thermal_type == THERMAL_conduction_ID),pInt)
|
||||||
if (maxNinstance == 0_pInt) return
|
if (maxNinstance == 0_pInt) return
|
||||||
|
|
|
@ -23,8 +23,6 @@ subroutine thermal_isothermal_init()
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_timeStamp
|
IO_timeStamp
|
||||||
use material
|
use material
|
||||||
use numerics, only: &
|
|
||||||
worldrank
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
|
@ -32,13 +30,11 @@ subroutine thermal_isothermal_init()
|
||||||
NofMyHomog, &
|
NofMyHomog, &
|
||||||
sizeState
|
sizeState
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
write(6,'(/,a)') ' <<<+- thermal_'//THERMAL_isothermal_label//' init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- thermal_'//THERMAL_isothermal_label//' init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
initializeInstances: do homog = 1_pInt, material_Nhomogenization
|
initializeInstances: do homog = 1_pInt, material_Nhomogenization
|
||||||
|
|
||||||
myhomog: if (thermal_type(homog) == THERMAL_isothermal_ID) then
|
myhomog: if (thermal_type(homog) == THERMAL_isothermal_ID) then
|
||||||
NofMyHomog = count(material_homog == homog)
|
NofMyHomog = count(material_homog == homog)
|
||||||
|
|
|
@ -90,8 +90,6 @@ subroutine vacancyflux_cahnhilliard_init(fileUnit)
|
||||||
vacancyflux_initialCv, &
|
vacancyflux_initialCv, &
|
||||||
material_partHomogenization, &
|
material_partHomogenization, &
|
||||||
material_partPhase
|
material_partPhase
|
||||||
use numerics,only: &
|
|
||||||
worldrank
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: fileUnit
|
integer(pInt), intent(in) :: fileUnit
|
||||||
|
@ -104,11 +102,9 @@ subroutine vacancyflux_cahnhilliard_init(fileUnit)
|
||||||
tag = '', &
|
tag = '', &
|
||||||
line = ''
|
line = ''
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
write(6,'(/,a)') ' <<<+- vacancyflux_'//VACANCYFLUX_cahnhilliard_label//' init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- vacancyflux_'//VACANCYFLUX_cahnhilliard_label//' init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
maxNinstance = int(count(vacancyflux_type == VACANCYFLUX_cahnhilliard_ID),pInt)
|
maxNinstance = int(count(vacancyflux_type == VACANCYFLUX_cahnhilliard_ID),pInt)
|
||||||
if (maxNinstance == 0_pInt) return
|
if (maxNinstance == 0_pInt) return
|
||||||
|
|
|
@ -72,8 +72,6 @@ subroutine vacancyflux_isochempot_init(fileUnit)
|
||||||
vacancyConcRate, &
|
vacancyConcRate, &
|
||||||
vacancyflux_initialCv, &
|
vacancyflux_initialCv, &
|
||||||
material_partHomogenization
|
material_partHomogenization
|
||||||
use numerics,only: &
|
|
||||||
worldrank
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: fileUnit
|
integer(pInt), intent(in) :: fileUnit
|
||||||
|
@ -86,11 +84,9 @@ subroutine vacancyflux_isochempot_init(fileUnit)
|
||||||
tag = '', &
|
tag = '', &
|
||||||
line = ''
|
line = ''
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
write(6,'(/,a)') ' <<<+- vacancyflux_'//VACANCYFLUX_isochempot_label//' init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- vacancyflux_'//VACANCYFLUX_isochempot_label//' init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
maxNinstance = int(count(vacancyflux_type == VACANCYFLUX_isochempot_ID),pInt)
|
maxNinstance = int(count(vacancyflux_type == VACANCYFLUX_isochempot_ID),pInt)
|
||||||
if (maxNinstance == 0_pInt) return
|
if (maxNinstance == 0_pInt) return
|
||||||
|
|
|
@ -23,21 +23,17 @@ subroutine vacancyflux_isoconc_init()
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_timeStamp
|
IO_timeStamp
|
||||||
use material
|
use material
|
||||||
use numerics, only: &
|
|
||||||
worldrank
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
homog, &
|
homog, &
|
||||||
NofMyHomog
|
NofMyHomog
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
write(6,'(/,a)') ' <<<+- vacancyflux_'//VACANCYFLUX_isoconc_label//' init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- vacancyflux_'//VACANCYFLUX_isoconc_label//' init -+>>>'
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
endif mainProcess
|
|
||||||
|
|
||||||
initializeInstances: do homog = 1_pInt, material_Nhomogenization
|
initializeInstances: do homog = 1_pInt, material_Nhomogenization
|
||||||
|
|
||||||
myhomog: if (vacancyflux_type(homog) == VACANCYFLUX_isoconc_ID) then
|
myhomog: if (vacancyflux_type(homog) == VACANCYFLUX_isoconc_ID) then
|
||||||
NofMyHomog = count(material_homog == homog)
|
NofMyHomog = count(material_homog == homog)
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTLOWMP $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,704 +0,0 @@
|
||||||
#
|
|
||||||
# General definitions for the Marc 2011 version
|
|
||||||
#
|
|
||||||
# EM64T
|
|
||||||
# ( LP64 - i4 version)
|
|
||||||
# (ILP64 - i8 version)
|
|
||||||
#
|
|
||||||
# Linux RedHat 5.4
|
|
||||||
#
|
|
||||||
# 64 bit MPI version
|
|
||||||
#
|
|
||||||
# Intel(R) Fortran Compiler
|
|
||||||
# Version 12.0.4
|
|
||||||
#
|
|
||||||
# Intel(R) C Compiler
|
|
||||||
# Version 12.0.4
|
|
||||||
#
|
|
||||||
# DATE
|
|
||||||
#
|
|
||||||
# To check the O/S level, type:
|
|
||||||
# uname -a
|
|
||||||
#
|
|
||||||
# Distributed parallel MPI libraries:
|
|
||||||
# 1) HP MPI 2.3
|
|
||||||
# To check the mpi version, type:
|
|
||||||
# mpirun -version
|
|
||||||
# 2) Intel MPI 4.0.1.007
|
|
||||||
# To check the mpi version, type:
|
|
||||||
# mpirun -version
|
|
||||||
#
|
|
||||||
# MKL Libraries:
|
|
||||||
# Intel(R) MKL 10.3.0.084
|
|
||||||
#
|
|
||||||
# To check the Compiler level, type using the compiler
|
|
||||||
# installation path:
|
|
||||||
# ifort -V
|
|
||||||
# icc -V
|
|
||||||
#
|
|
||||||
# REMARKS : This file contains the definitions of variables used during
|
|
||||||
# compilation loading and use of the MARC programmes . The
|
|
||||||
# current machine type is identified by means of the variable
|
|
||||||
# MACHINE , defined below.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# MPI_ROOT: root directory in which mpi shared libraries, etc. are located
|
|
||||||
# DIRJOB : directory in which spawned jobs should look for Marc input
|
|
||||||
# MPI_ARCH: system architecture
|
|
||||||
# MPI_EPATH: path where executable resides
|
|
||||||
#
|
|
||||||
|
|
||||||
REVISION="VERSION, BUILD"
|
|
||||||
HOSTNAME=`hostname`
|
|
||||||
|
|
||||||
# find available memory in Mbyte on the machine
|
|
||||||
# can be set explicitly
|
|
||||||
MEMLIMIT=`free -m | awk '/Mem:/ {print $2}'`
|
|
||||||
|
|
||||||
# set _OEM_NASTRAN to 1 for MD Nastran build
|
|
||||||
# override _OEM_NASTRAN setting with MARC_MD_NASTRAN environment variable
|
|
||||||
_OEM_NASTRAN="${MARC_MD_NASTRAN:-0}"
|
|
||||||
|
|
||||||
# uncomment the following line for an autoforge build
|
|
||||||
#AUTOFORGE=1
|
|
||||||
AUTOFORGE=0
|
|
||||||
export AUTOFORGE
|
|
||||||
|
|
||||||
# integer size
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "" ; then
|
|
||||||
INTEGER_PATH=
|
|
||||||
else
|
|
||||||
INTEGER_PATH=/$MARC_INTEGER_SIZE
|
|
||||||
fi
|
|
||||||
|
|
||||||
FCOMP=ifort
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for Metis
|
|
||||||
#
|
|
||||||
METIS="-I$METIS_SOURCE"
|
|
||||||
METISLIBS="$MARC_LIB/metis.a "
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for MPI
|
|
||||||
#
|
|
||||||
# RCP and RSH are used for parallel network runs
|
|
||||||
# replace with similar commands like rsh if needed
|
|
||||||
RCP=/usr/bin/scp
|
|
||||||
RSH=/usr/bin/ssh
|
|
||||||
#
|
|
||||||
# select MPITYPE based upon what is installed
|
|
||||||
MPITYPE=none
|
|
||||||
if test -d $MARC_INTELMPI
|
|
||||||
then
|
|
||||||
MPITYPE=intelmpi
|
|
||||||
fi
|
|
||||||
if test -d $MARC_HPMPI
|
|
||||||
then
|
|
||||||
MPITYPE=hpmpi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $AUTOFORGE
|
|
||||||
then
|
|
||||||
if test $AUTOFORGE = 1
|
|
||||||
then
|
|
||||||
MPITYPE=none
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# uncomment one of the definitions of MPITYPE below to
|
|
||||||
# explicitly choose the type of MPI to use
|
|
||||||
#MPITYPE=none
|
|
||||||
#MPITYPE=hpmpi
|
|
||||||
#MPITYPE=intelmpi
|
|
||||||
|
|
||||||
MPI_DEFAULT=hpmpi
|
|
||||||
MPI_OTHER=intelmpi
|
|
||||||
|
|
||||||
INTELMPI_VERSION=HYDRA
|
|
||||||
|
|
||||||
# overrule MPITYPE setting with environmental variable MARC_MPITYPE
|
|
||||||
if test $MARC_MPITYPE
|
|
||||||
then
|
|
||||||
MPITYPE=$MARC_MPITYPE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# always set MPITYPE to none for MD Nastran
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
MPITYPE=none
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for MPI
|
|
||||||
#
|
|
||||||
DDM=
|
|
||||||
if test $MPITYPE != none
|
|
||||||
then
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
FCOMPMPI=mpif90
|
|
||||||
export MPI_ROOT=$MARC_HPMPI
|
|
||||||
export MPI_REMSH=$RSH
|
|
||||||
export MPI_F77=$FCOMP
|
|
||||||
ARCHITECTURE=linux_amd64
|
|
||||||
DDM="-I$MPI_ROOT/include/64 -DDDM -DHPMPI"
|
|
||||||
MPI_CLEAN=
|
|
||||||
export MPI_EPATH=$MARC_BIN
|
|
||||||
export LD_LIBRARY_PATH=$MPI_ROOT/lib/$ARCHITECTURE:$MARC_LIB:$MARC_LIB_SHARED:$LD_LIBRARY_PATH
|
|
||||||
export MPIHPSPECIAL="-e MPI_FLAGS=E,T"
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e BINDIR=$MARC_BIN"
|
|
||||||
if test -n "$MSC_LICENSE_FILE"
|
|
||||||
then
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e MSC_LICENSE_FILE=$MSC_LICENSE_FILE"
|
|
||||||
fi
|
|
||||||
if test -n "$LM_LICENSE_FILE"
|
|
||||||
then
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e LM_LICENSE_FILE=$LM_LICENSE_FILE"
|
|
||||||
fi
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e MPI_LIC_CHECKER=$MPI_ROOT/bin/licensing/amd64_s8/lichk.x"
|
|
||||||
RUN_JOB2="$MPI_ROOT/bin/mpirun ${MPIRUNOPTIONS} -prot -f "
|
|
||||||
RUN_JOB1="$MPI_ROOT/bin/mpirun ${MPIRUNOPTIONS} -prot -w $MPIHPSPECIAL -np "
|
|
||||||
RUN_JOB0=
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
FCOMPMPI=mpiifort
|
|
||||||
MPI_ROOT=$MARC_INTELMPI
|
|
||||||
DDM="-I${MPI_ROOT}/include64 -DDDM"
|
|
||||||
PATH=$MPI_ROOT/bin64:$PATH
|
|
||||||
export PATH
|
|
||||||
LD_LIBRARY_PATH=$MPI_ROOT/lib64:$LD_LIBRARY_PATH
|
|
||||||
export LD_LIBRARY_PATH
|
|
||||||
if test $INTELMPI_VERSION = HYDRA
|
|
||||||
then
|
|
||||||
RUN_JOB1="${MPI_ROOT}/bin64/mpiexec.hydra -n "
|
|
||||||
RUN_JOB2="${MPI_ROOT}/bin64/mpiexec.hydra "
|
|
||||||
else
|
|
||||||
RUN_JOB1="${MPI_ROOT}/bin64/mpiexec -n "
|
|
||||||
RUN_JOB2="${MPI_ROOT}/bin64/mpiexec -configfile "
|
|
||||||
fi
|
|
||||||
RUN_JOB0=
|
|
||||||
MPI_CLEAN=
|
|
||||||
MPI_EPATH=$MARC_BIN
|
|
||||||
MPIR_HOME=$MPI_ROOT
|
|
||||||
MPICH_F77=$FCOMP
|
|
||||||
MPICH_F77LINKER=$FCOMP
|
|
||||||
export MPI_ROOT MPI_EPATH MPIR_HOME MPICH_F77 MPICH_F77LINKER
|
|
||||||
I_MPI_PIN_DOMAIN=node
|
|
||||||
export I_MPI_PIN_DOMAIN
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MPI_ROOT=$MARC_DUMMYMPI
|
|
||||||
export MPI_ROOT=$MARC_DUMMYMPI
|
|
||||||
DDM="-I$MPI_ROOT/include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# variables for the "maintain" script
|
|
||||||
#
|
|
||||||
|
|
||||||
MACHINENAME=LINUX
|
|
||||||
MACHINE64BIT=yes
|
|
||||||
MACHINE=Linux_EM64T
|
|
||||||
DEV=/dev/tape
|
|
||||||
GETLOG="whoami"
|
|
||||||
CLEAR="clear"
|
|
||||||
MY_UNAME=`uname -a`
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with VKI Solver
|
|
||||||
#VKISOLVER=VKI
|
|
||||||
VKISOLVER=NONE
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with CASI Solver
|
|
||||||
CASISOLVER=CASI
|
|
||||||
#CASISOLVER=NONE
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with MF2 Solver
|
|
||||||
MF2SOLVER=NONE
|
|
||||||
#MF2SOLVER=SERIAL
|
|
||||||
#MF2SOLVER=MF2PARALLEL
|
|
||||||
|
|
||||||
# Edit following lines to build with Intel(c) Multithreaded solver (PARDISO)
|
|
||||||
#INTELSOLVER=NONE
|
|
||||||
INTELSOLVER=PARDISO
|
|
||||||
|
|
||||||
# Edit following lines to build with MUMPS
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
#MUMPSSOLVER=NONE
|
|
||||||
MUMPSSOLVER=MUMPS
|
|
||||||
else
|
|
||||||
#MUMPSSOLVER=NONE
|
|
||||||
MUMPSSOLVER=MUMPS
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Edit following lines to build with GPGPU version of BCS Solver for
|
|
||||||
# NVIDIA platforms
|
|
||||||
BCSGPUSOLVER=NONE
|
|
||||||
#BCSGPUSOLVER=BCSGPU
|
|
||||||
|
|
||||||
# Edit following 2 lines to build MARC dynamic shared library
|
|
||||||
MARC_DLL=MARC_DLL
|
|
||||||
#MARC_DLL=NONE
|
|
||||||
|
|
||||||
# always set VKISOLVER, CASISOLVER, BCSGPUSOLVER, and MARC_DLL to NONE for MD Nastran
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
VKISOLVER=NONE
|
|
||||||
CASISOLVER=NONE
|
|
||||||
MF2SOLVER=NONE
|
|
||||||
INTELSOLVER=NONE
|
|
||||||
MUMPSSOLVER=NONE
|
|
||||||
BCSGPUSOLVER=NONE
|
|
||||||
MARC_DLL=NONE
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# define Fortran and C compile syntax
|
|
||||||
#
|
|
||||||
SOLVERFLAGS=
|
|
||||||
if test "$VKISOLVER" = VKI
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DVKI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$CASISOLVER" = CASI
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DCASI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MF2SOLVER" = MF2PARALLEL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMF2PARALLEL"
|
|
||||||
fi
|
|
||||||
if test "$MF2SOLVER" = MF2SERIAL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMF2SERIAL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$INTELSOLVER" = PARDISO
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DPARDISO"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MUMPSSOLVER" = MUMPS
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMUMPS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$BCSGPUSOLVER" = BCSGPU
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DBCSGPU"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_DLL" = MARC_DLL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMARC_DLL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LINK_OPT=
|
|
||||||
DEBUG_OPT=
|
|
||||||
C_DEBUG_OPT=
|
|
||||||
|
|
||||||
#Uncomment following line to build Marc in debuggable mode
|
|
||||||
MARCDEBUG=
|
|
||||||
#MARCDEBUG="ON"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
LINK_OPT="-debug -traceback"
|
|
||||||
DEBUG_OPT="-debug -traceback"
|
|
||||||
C_DEBUG_OPT="-debug -traceback"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
MARCCHECK=
|
|
||||||
#MARCCHECK="ON"
|
|
||||||
if test "$MARCCHECK" = "ON"
|
|
||||||
then
|
|
||||||
DEBUG_OPT="$DEBUG_OPT -fpe0 -fp-stack-check -check all -ftrapuv "
|
|
||||||
C_DEBUG_OPT="$C_DEBUG_OPT -fp-stack-check -check-uninit -Wformat -ftrapuv "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
I8FFLAGS="-real-size 64 -integer-size 32"
|
|
||||||
I8DEFINES="-DFLOAT=8 -DINT=4"
|
|
||||||
I8CDEFINES=
|
|
||||||
I8CASIDEFS=
|
|
||||||
else
|
|
||||||
I8FFLAGS="-i8 -real-size 64 -integer-size 64"
|
|
||||||
I8DEFINES="-DI64 -DFLOAT=8 -DINT=8"
|
|
||||||
I8CDEFINES="-U_DOUBLE -D_SINGLE"
|
|
||||||
I8CASIDEFS="-DCASI_64BIT_INT=1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
CDEFINES=
|
|
||||||
FDEFINES=
|
|
||||||
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
CDEFINES="$CDEFINES -D_OEM_NASTRAN"
|
|
||||||
FDEFINES="$FDEFINES -D_OEM_NASTRAN"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FDEFINES="$FDEFINES -D_IMPLICITNONE"
|
|
||||||
|
|
||||||
if test "$_OEM_NASTRAN" -eq 0
|
|
||||||
then
|
|
||||||
FDEFINES="$FDEFINES -DOPENMP -DMKL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -D_MSCMARC
|
|
||||||
FDEFINES="$FDEFINES -D_MSCMARC $DEBUG_OPT"
|
|
||||||
CDEFINES="$CDEFINES -D_MSCMARC $C_DEBUG_OPT $I8CDEFINES"
|
|
||||||
|
|
||||||
CINCL="-I$MARC_SOURCE/mdsrc -I$MARC_SOURCE/csource"
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
CINCL="$CINCL -I../../include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CC="icc -c -O1 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
CCLOW="icc -c -O0 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
CCHIGH="icc -c -O3 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
CC="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
CCLOW="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
CCHIGH="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LOAD_CC="icc -O1 -DLinux -DLINUX -DLinux_intel"
|
|
||||||
CCT="$CC"
|
|
||||||
CCTLOW="$CCLOW"
|
|
||||||
CCTHIGH="$CCHIGH"
|
|
||||||
|
|
||||||
CC_CASI="$CC -c99 $I8CASIDEFS"
|
|
||||||
CCLOW_CASI="$CCLOW -c99 $I8CASIDEFS"
|
|
||||||
CCHIGH_CASI="$CCHIGH -c99 $I8CASIDEFS"
|
|
||||||
|
|
||||||
CCT_CASI="$CCT -c99 $I8CASIDEFS"
|
|
||||||
CCTLOW_CASI="$CCLOW -c99 $I8CASIDEFS"
|
|
||||||
CCTHIGH_CASI="$CCHIGH -c99 $I8CASIDEFS"
|
|
||||||
|
|
||||||
#PROFILE="-Mprof=func"
|
|
||||||
#PROFILE="-Mprof=lines"
|
|
||||||
#PROFILE="-Mprof=func,mpi"
|
|
||||||
PROFILE=
|
|
||||||
|
|
||||||
FORTLOW="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTRAN="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTHIGH="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTNA="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM"
|
|
||||||
|
|
||||||
# determine DAMASK version
|
|
||||||
HIT=0
|
|
||||||
for arg in "$@"
|
|
||||||
do
|
|
||||||
if [ $HIT = 1 ]
|
|
||||||
then
|
|
||||||
DAMASKPATH=`dirname $arg`
|
|
||||||
break
|
|
||||||
elif [ ${arg:0:2} = -u -o ${arg:0:2} = -U ]
|
|
||||||
then
|
|
||||||
HIT=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
read DAMASKVERSION < $DAMASKPATH/../VERSION
|
|
||||||
DAMASKVERSION="'"$DAMASKVERSION"'"
|
|
||||||
|
|
||||||
# DAMASK compiler calls: additional flags are in line 2 OpenMP flags in line 3; removed -save for calls with openMP
|
|
||||||
DFORTLOW="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTLOWMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTRAN="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTRANMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTHIGH="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTHIGHMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
FORTLOW="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTRAN="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTHIGH="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTNA="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM"
|
|
||||||
|
|
||||||
# DAMASK compiler calls: additional flags are in line 2 OpenMP flags in line 3; removed -save for calls with openMP
|
|
||||||
DFORTLOW="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTLOWMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTRAN="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTRANMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTHIGH="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTHIGHMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2011 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
FORTLOWT="$FORTLOW"
|
|
||||||
FORTRANT="$FORTRAN"
|
|
||||||
FORTHIGHT="$FORTHIGH"
|
|
||||||
|
|
||||||
FORTRANMNF="$FCOMP -c $FDEFINES "
|
|
||||||
CCMNF="icc -c -O1 -DLinux -DLINUX -DLinux_intel -Dport2egcs -I$MARC_SOURCE/marctoadams/mnf/include -D_LARGEFILE64_SOURCE"
|
|
||||||
|
|
||||||
|
|
||||||
FORTRANMUMPS="$FCOMP -c -fpp -D_IMPLICITNONE $I8FFLAGS $I8DEFINES $DDM -I$MARC_SOURCE/mumpssolver/include -Dintel_ -DALLOW_NON_INIT -Dmetis -nofor_main"
|
|
||||||
CCMUMPS="icc -c -DAdd_ -Dmetis -I$MARC_SOURCE/mumpssolver/include"
|
|
||||||
|
|
||||||
|
|
||||||
BCSCC="icc -c -O3 -DLOWERCASE_ -I${MARC_SOURCE}/bcsgpusolver/bcslib_csrc $CDEFINES $CINCL"
|
|
||||||
NVCC="nvcc -c -O3 -arch sm_13 -DLOWERCASE_ -I${MARC_SOURCE}/bcsgpusolver/bcslib_cuda/include "
|
|
||||||
BCSFORTLOW="$FORTLOW -I${MARC_SOURCE}/bcsgpusolver/common"
|
|
||||||
BCSFORTRAN="$FORTRAN -I${MARC_SOURCE}/bcsgpusolver/common"
|
|
||||||
BCSFORTHIGH="$FORTHIGH -I${MARC_SOURCE}/bcsgpusolver/common"
|
|
||||||
BCSFORT90HIGH="$BCSFORTHIGH"
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
BCSFORTRAN=$BCSFORTLOW
|
|
||||||
BCSFORTHIGH=$BCSFORTLOW
|
|
||||||
BCSFORT90HIGH=$BCSFORTLOW
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $MPITYPE != none
|
|
||||||
then
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
LOAD="$MPI_ROOT/bin/$FCOMPMPI ${LOADOPTIONS} -L$MPI_ROOT/lib/$ARCHITECTURE $PROFILE $LINK_OPT -o "
|
|
||||||
LOADT="$MPI_ROOT/bin/$FCOMPMPI ${LOADOPTIONS} -L$MPI_ROOT/lib/$ARCHITECTURE $PROFILE $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
# Uncomment the following lines to turn on the tracer and commnet out the next 5 lines
|
|
||||||
# if test $MPITYPE = intelmpi
|
|
||||||
# then
|
|
||||||
# INCLUDEMPI="-I$MPI_ROOT/include64 -I$VT_ROOT/include"
|
|
||||||
# LOAD="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $INCLUDEMPI -g -t=log $LINK_OPT -o "
|
|
||||||
# LOADT="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $INCLUDEMPI -g -t=log $LINK_OPT -o "
|
|
||||||
# fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
LOAD="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $LINK_OPT -o "
|
|
||||||
LOADT="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
LOAD="$FCOMP $LINK_OPT -o "
|
|
||||||
LOADT="$FCOMP $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_DLL" = MARC_DLL
|
|
||||||
then
|
|
||||||
FORTLOW="$FORTLOW -fpp -fPIC"
|
|
||||||
FORTRAN="$FORTRAN -fpp -fPIC"
|
|
||||||
FORTHIGH="$FORTHIGH -fpp -fPIC"
|
|
||||||
FORTRANMNF="$FORTRANMNF -fpp -fPIC"
|
|
||||||
CC="$CC -fPIC"
|
|
||||||
CCMNF="$CCMNF -fPIC"
|
|
||||||
CC_CASI="$CC_CASI -fPIC"
|
|
||||||
CCLOW_CASI="$CCLOW_CASI -fPIC"
|
|
||||||
CCHIGH_CASI="$CCHIGH_CASI -fPIC"
|
|
||||||
LINK_EXE_MARC="-L$MARC_LIB -lmarc -L$MARC_LIB_SHARED -lguide -lpthread"
|
|
||||||
LINK_MARC_DLL="-shared -fPIC"
|
|
||||||
LOAD_DLL=$LOAD
|
|
||||||
LOADT_DLL=$LOADT
|
|
||||||
EXT_DLL="so"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
XLIBS="-L/usr/X11/lib -lX11 "
|
|
||||||
|
|
||||||
#
|
|
||||||
# define archive and ranlib syntax
|
|
||||||
#
|
|
||||||
|
|
||||||
ARC="ar rvl"
|
|
||||||
ARD="ar dvl"
|
|
||||||
ARX="ar xl"
|
|
||||||
RAN=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# choose which libraries you want to use ( e.g. blas )
|
|
||||||
#
|
|
||||||
|
|
||||||
if test "$VKISOLVER" = VKI
|
|
||||||
then
|
|
||||||
VKISOLVERLIBS="$MARC_LIB/vkisolver.a"
|
|
||||||
else
|
|
||||||
VKISOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$CASISOLVER" = CASI
|
|
||||||
then
|
|
||||||
CASISOLVERLIBS="$MARC_LIB/casilib.a"
|
|
||||||
else
|
|
||||||
CASISOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
MF2SOLVERLIBS=
|
|
||||||
if test "$MF2SOLVER" = MF2PARALLEL
|
|
||||||
then
|
|
||||||
MF2SOLVERLIBS="$MARC_LIB/mf2parallel/libseq.a \
|
|
||||||
$MARC_LIB/mf2parallel/libsym.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmet.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmf2.a \
|
|
||||||
$MARC_LIB/mf2parallel/libgauss.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmf2.a \
|
|
||||||
$MARC_LIB/mf2parallel/libgauss.a \
|
|
||||||
$MARC_LIB/mf2parallel/libnum.a \
|
|
||||||
$MARC_LIB/mf2parallel/libutl.a \
|
|
||||||
$MARC_LIB/mf2parallel/libr8.a \
|
|
||||||
$MARC_LIB/mf2parallel/libz.a "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$INTELSOLVER" = PARDISO
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
INTELSOLVERLIBS="$MARC_MKL/libmkl_solver_lp64.a"
|
|
||||||
else
|
|
||||||
INTELSOLVERLIBS="$MARC_MKL/libmkl_solver_ilp64.a"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
INTELSOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MUMPSSOLVER" = MUMPS
|
|
||||||
then
|
|
||||||
MUMPSSOLVERLIBS="$MARC_LIB/libmumps.a"
|
|
||||||
if test $MPITYPE = none
|
|
||||||
then
|
|
||||||
MUMPSSOLVERLIBS2=
|
|
||||||
echo hello > /dev/null
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_lp64.a $MARC_MKL/libmkl_blacs_intelmpi_lp64.a"
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_ilp64.a $MARC_MKL/libmkl_blacs_intelmpi_ilp64.a"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_lp64.a $MARC_MKL/libmkl_blacs_lp64.a"
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_ilp64.a $MARC_MKL/libmkl_blacs_ilp64.a"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS=
|
|
||||||
MUMPSSOLVERLIBS2=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$BCSGPUSOLVER" = BCSGPU
|
|
||||||
then
|
|
||||||
BCSSOLVERLIBS="${MARC_LIB}/bcsgpulib.a -L/usr/local/cuda/lib -lcudart -lcublas -lcuda "
|
|
||||||
else
|
|
||||||
BCSSOLVERLIBS="${MARC_LIB}/bcslib.a "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MKLLIB=$MARC_MKL/libmkl_intel_lp64.a
|
|
||||||
else
|
|
||||||
MKLLIB=$MARC_MKL/libmkl_intel_ilp64.a
|
|
||||||
fi
|
|
||||||
|
|
||||||
SECLIBS="-L$MARC_LIB -llapi"
|
|
||||||
|
|
||||||
SOLVERLIBS="${BCSSOLVERLIBS} \
|
|
||||||
${INTELSOLVERLIBS} ${MUMPSSOLVERLIBS2} ${MF2SOLVERLIBS} \
|
|
||||||
-Wl,--start-group $MKLLIB $MARC_MKL/libmkl_intel_thread.a $MARC_MKL/libmkl_core.a -Wl,--end-group \
|
|
||||||
$MARC_MKL/libguide.a \
|
|
||||||
$MARC_LIB/blas_src.a ${VKISOLVERLIBS} ${CASISOLVERLIBS} "
|
|
||||||
SOLVERLIBS_DLL=${SOLVERLIBS}
|
|
||||||
|
|
||||||
MRCLIBS="$MARC_LIB/clib.a ${CASISOLVERLIBS}"
|
|
||||||
MRCLIBSPAR="$MARC_LIB/clib.a"
|
|
||||||
STUBS="$MARC_LIB/stubs.a "
|
|
||||||
MNFLIBS="$MARC_LIB/libmnf.a"
|
|
||||||
MDUSER="$MARC_LIB/md_user.a"
|
|
||||||
|
|
||||||
|
|
||||||
OPENMP="-openmp"
|
|
||||||
|
|
||||||
SYSLIBS=" $OPENMP -lpthread "
|
|
||||||
|
|
||||||
# Uncomment the following lines to turn on the trace and comment out the next 4 lines
|
|
||||||
# if test $MPITYPE = intelmpi
|
|
||||||
# then
|
|
||||||
# SYSLIBS="-L${VT_ROOT}/lib -lVT -ldwarf -lelf -lm -lpthread \
|
|
||||||
# -L${MPI_ROOT}/lib64 -lmpi -lmpiif -lmpigi -lrt"
|
|
||||||
# fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
SYSLIBS="-L${MPI_ROOT}/lib64 -lmpi -lmpiif -lmpigi -lrt $OPENMP -lpthread"
|
|
||||||
fi
|
|
||||||
|
|
||||||
SYSLIBSPAR=" "
|
|
||||||
|
|
||||||
MARC_DLL_CODES="runmarc.f"
|
|
||||||
|
|
||||||
|
|
||||||
BLAS_SRC="dzero.f icopy.f izero.f"
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
BLAS_SRC="$BLAS_SRC dsctr.f zsctr.f dzasum.f daxpyi.f zaxpyi.f dgthr.f zgthr.f"
|
|
||||||
else
|
|
||||||
BLAS_SRC="ALL"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
LOW_OPT_CODES="are163.f contro.f ndext.f omarc.f omarca.f omarcb.f omarcc.f \
|
|
||||||
omars.f fixbc.f triang.f bet049.f norst3.f eldata.f \
|
|
||||||
elec*.f elct*.f fmeig.f oada00.f ogeig.f updtrbe2.f cycrota.f \
|
|
||||||
cordef.f ogpk.f ogtan.f eldam.f formrbe3.f \
|
|
||||||
inertie.f em_sso072.f cn_fol3d_qpatch6.f"
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i8" ; then
|
|
||||||
LOW_OPT_CODES="$LOW_OPT_CODES bbcseg.f"
|
|
||||||
fi
|
|
||||||
LOW_OPT_CODES_CASI=""
|
|
||||||
|
|
||||||
HIGH_OPT_CODES="dpsmsa1.f dpsmsa2.f dpsmsa3.f dpsmsa4.f dpsmsa5.f dpsmsa6.f \
|
|
||||||
dpsmsa7.f dpsmsa8.f dpsmsa9.f dpsmsa10.f dpsmsa11.f dpsmsa12.f \
|
|
||||||
dpsmsa13.f dpsmsa14.f dpsmsa15.f dpsmsa16.f "
|
|
||||||
|
|
||||||
|
|
||||||
HIGH_OPT_CODES_CASI="arithkernels.c blockedroutines.c blockedroutines_fd.c elemmatgenkernels.c longvecroutines.c sfmultutils.c solvewithbd.c"
|
|
||||||
|
|
||||||
MAXNUM=1000000
|
|
|
@ -1,641 +0,0 @@
|
||||||
#
|
|
||||||
# General definitions for the Marc 2011 version
|
|
||||||
#
|
|
||||||
# EM64T
|
|
||||||
# ( LP64 - i4 version)
|
|
||||||
# (ILP64 - i8 version)
|
|
||||||
#
|
|
||||||
# Linux RedHat 5.4
|
|
||||||
#
|
|
||||||
# 64 bit MPI version
|
|
||||||
#
|
|
||||||
# Intel(R) Fortran Compiler
|
|
||||||
# Version 12.0.4
|
|
||||||
#
|
|
||||||
# Intel(R) C Compiler
|
|
||||||
# Version 12.0.4
|
|
||||||
#
|
|
||||||
# DATE
|
|
||||||
#
|
|
||||||
# To check the O/S level, type:
|
|
||||||
# uname -a
|
|
||||||
#
|
|
||||||
# Distributed parallel MPI libraries:
|
|
||||||
# 1) HP MPI 2.3
|
|
||||||
# To check the mpi version, type:
|
|
||||||
# mpirun -version
|
|
||||||
# 2) Intel MPI 4.0.1.007
|
|
||||||
# To check the mpi version, type:
|
|
||||||
# mpirun -version
|
|
||||||
#
|
|
||||||
# MKL Libraries:
|
|
||||||
# Intel(R) MKL 10.3.0.084
|
|
||||||
#
|
|
||||||
# To check the Compiler level, type using the compiler
|
|
||||||
# installation path:
|
|
||||||
# ifort -V
|
|
||||||
# icc -V
|
|
||||||
#
|
|
||||||
# REMARKS : This file contains the definitions of variables used during
|
|
||||||
# compilation loading and use of the MARC programmes . The
|
|
||||||
# current machine type is identified by means of the variable
|
|
||||||
# MACHINE , defined below.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# MPI_ROOT: root directory in which mpi shared libraries, etc. are located
|
|
||||||
# DIRJOB : directory in which spawned jobs should look for Marc input
|
|
||||||
# MPI_ARCH: system architecture
|
|
||||||
# MPI_EPATH: path where executable resides
|
|
||||||
#
|
|
||||||
|
|
||||||
REVISION="VERSION, BUILD"
|
|
||||||
HOSTNAME=`hostname`
|
|
||||||
|
|
||||||
# find available memory in Mbyte on the machine
|
|
||||||
# can be set explicitly
|
|
||||||
MEMLIMIT=`free -m | awk '/Mem:/ {print $2}'`
|
|
||||||
|
|
||||||
# set _OEM_NASTRAN to 1 for MD Nastran build
|
|
||||||
# override _OEM_NASTRAN setting with MARC_MD_NASTRAN environment variable
|
|
||||||
_OEM_NASTRAN="${MARC_MD_NASTRAN:-0}"
|
|
||||||
|
|
||||||
# uncomment the following line for an autoforge build
|
|
||||||
#AUTOFORGE=1
|
|
||||||
AUTOFORGE=0
|
|
||||||
export AUTOFORGE
|
|
||||||
|
|
||||||
# integer size
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "" ; then
|
|
||||||
INTEGER_PATH=
|
|
||||||
else
|
|
||||||
INTEGER_PATH=/$MARC_INTEGER_SIZE
|
|
||||||
fi
|
|
||||||
|
|
||||||
FCOMP=ifort
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for Metis
|
|
||||||
#
|
|
||||||
METIS="-I$METIS_SOURCE"
|
|
||||||
METISLIBS="$MARC_LIB/metis.a "
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for MPI
|
|
||||||
#
|
|
||||||
# RCP and RSH are used for parallel network runs
|
|
||||||
# replace with similar commands like rsh if needed
|
|
||||||
RCP=/usr/bin/scp
|
|
||||||
RSH=/usr/bin/ssh
|
|
||||||
#
|
|
||||||
# select MPITYPE based upon what is installed
|
|
||||||
MPITYPE=none
|
|
||||||
if test -d $MARC_INTELMPI
|
|
||||||
then
|
|
||||||
MPITYPE=intelmpi
|
|
||||||
fi
|
|
||||||
if test -d $MARC_HPMPI
|
|
||||||
then
|
|
||||||
MPITYPE=hpmpi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $AUTOFORGE
|
|
||||||
then
|
|
||||||
if test $AUTOFORGE = 1
|
|
||||||
then
|
|
||||||
MPITYPE=none
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# uncomment one of the definitions of MPITYPE below to
|
|
||||||
# explicitly choose the type of MPI to use
|
|
||||||
#MPITYPE=none
|
|
||||||
#MPITYPE=hpmpi
|
|
||||||
#MPITYPE=intelmpi
|
|
||||||
|
|
||||||
MPI_DEFAULT=hpmpi
|
|
||||||
MPI_OTHER=intelmpi
|
|
||||||
|
|
||||||
INTELMPI_VERSION=HYDRA
|
|
||||||
|
|
||||||
# overrule MPITYPE setting with environmental variable MARC_MPITYPE
|
|
||||||
if test $MARC_MPITYPE
|
|
||||||
then
|
|
||||||
MPITYPE=$MARC_MPITYPE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# always set MPITYPE to none for MD Nastran
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
MPITYPE=none
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for MPI
|
|
||||||
#
|
|
||||||
DDM=
|
|
||||||
if test $MPITYPE != none
|
|
||||||
then
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
FCOMPMPI=mpif90
|
|
||||||
export MPI_ROOT=$MARC_HPMPI
|
|
||||||
export MPI_REMSH=$RSH
|
|
||||||
export MPI_F77=$FCOMP
|
|
||||||
ARCHITECTURE=linux_amd64
|
|
||||||
DDM="-I$MPI_ROOT/include/64 -DDDM -DHPMPI"
|
|
||||||
MPI_CLEAN=
|
|
||||||
export MPI_EPATH=$MARC_BIN
|
|
||||||
export LD_LIBRARY_PATH=$MPI_ROOT/lib/$ARCHITECTURE:$MARC_LIB:$MARC_LIB_SHARED:$LD_LIBRARY_PATH
|
|
||||||
export MPIHPSPECIAL="-e MPI_FLAGS=E,T"
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e BINDIR=$MARC_BIN"
|
|
||||||
if test -n "$MSC_LICENSE_FILE"
|
|
||||||
then
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e MSC_LICENSE_FILE=$MSC_LICENSE_FILE"
|
|
||||||
fi
|
|
||||||
if test -n "$LM_LICENSE_FILE"
|
|
||||||
then
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e LM_LICENSE_FILE=$LM_LICENSE_FILE"
|
|
||||||
fi
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e MPI_LIC_CHECKER=$MPI_ROOT/bin/licensing/amd64_s8/lichk.x"
|
|
||||||
RUN_JOB2="$MPI_ROOT/bin/mpirun ${MPIRUNOPTIONS} -prot -f "
|
|
||||||
RUN_JOB1="$MPI_ROOT/bin/mpirun ${MPIRUNOPTIONS} -prot -w $MPIHPSPECIAL -np "
|
|
||||||
RUN_JOB0=
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
FCOMPMPI=mpiifort
|
|
||||||
MPI_ROOT=$MARC_INTELMPI
|
|
||||||
DDM="-I${MPI_ROOT}/include64 -DDDM"
|
|
||||||
PATH=$MPI_ROOT/bin64:$PATH
|
|
||||||
export PATH
|
|
||||||
LD_LIBRARY_PATH=$MPI_ROOT/lib64:$LD_LIBRARY_PATH
|
|
||||||
export LD_LIBRARY_PATH
|
|
||||||
if test $INTELMPI_VERSION = HYDRA
|
|
||||||
then
|
|
||||||
RUN_JOB1="${MPI_ROOT}/bin64/mpiexec.hydra -n "
|
|
||||||
RUN_JOB2="${MPI_ROOT}/bin64/mpiexec.hydra "
|
|
||||||
else
|
|
||||||
RUN_JOB1="${MPI_ROOT}/bin64/mpiexec -n "
|
|
||||||
RUN_JOB2="${MPI_ROOT}/bin64/mpiexec -configfile "
|
|
||||||
fi
|
|
||||||
RUN_JOB0=
|
|
||||||
MPI_CLEAN=
|
|
||||||
MPI_EPATH=$MARC_BIN
|
|
||||||
MPIR_HOME=$MPI_ROOT
|
|
||||||
MPICH_F77=$FCOMP
|
|
||||||
MPICH_F77LINKER=$FCOMP
|
|
||||||
export MPI_ROOT MPI_EPATH MPIR_HOME MPICH_F77 MPICH_F77LINKER
|
|
||||||
I_MPI_PIN_DOMAIN=node
|
|
||||||
export I_MPI_PIN_DOMAIN
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MPI_ROOT=$MARC_DUMMYMPI
|
|
||||||
export MPI_ROOT=$MARC_DUMMYMPI
|
|
||||||
DDM="-I$MPI_ROOT/include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# variables for the "maintain" script
|
|
||||||
#
|
|
||||||
|
|
||||||
MACHINENAME=LINUX
|
|
||||||
MACHINE64BIT=yes
|
|
||||||
MACHINE=Linux_EM64T
|
|
||||||
DEV=/dev/tape
|
|
||||||
GETLOG="whoami"
|
|
||||||
CLEAR="clear"
|
|
||||||
MY_UNAME=`uname -a`
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with VKI Solver
|
|
||||||
#VKISOLVER=VKI
|
|
||||||
VKISOLVER=NONE
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with CASI Solver
|
|
||||||
CASISOLVER=CASI
|
|
||||||
#CASISOLVER=NONE
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with MF2 Solver
|
|
||||||
MF2SOLVER=NONE
|
|
||||||
#MF2SOLVER=SERIAL
|
|
||||||
#MF2SOLVER=MF2PARALLEL
|
|
||||||
|
|
||||||
# Edit following lines to build with Intel(c) Multithreaded solver (PARDISO)
|
|
||||||
#INTELSOLVER=NONE
|
|
||||||
INTELSOLVER=PARDISO
|
|
||||||
|
|
||||||
# Edit following lines to build with MUMPS
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
#MUMPSSOLVER=NONE
|
|
||||||
MUMPSSOLVER=MUMPS
|
|
||||||
else
|
|
||||||
#MUMPSSOLVER=NONE
|
|
||||||
MUMPSSOLVER=MUMPS
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Edit following lines to build with GPGPU version of BCS Solver for
|
|
||||||
# NVIDIA platforms
|
|
||||||
BCSGPUSOLVER=NONE
|
|
||||||
#BCSGPUSOLVER=BCSGPU
|
|
||||||
|
|
||||||
# Edit following 2 lines to build MARC dynamic shared library
|
|
||||||
MARC_DLL=MARC_DLL
|
|
||||||
#MARC_DLL=NONE
|
|
||||||
|
|
||||||
# always set VKISOLVER, CASISOLVER, BCSGPUSOLVER, and MARC_DLL to NONE for MD Nastran
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
VKISOLVER=NONE
|
|
||||||
CASISOLVER=NONE
|
|
||||||
MF2SOLVER=NONE
|
|
||||||
INTELSOLVER=NONE
|
|
||||||
MUMPSSOLVER=NONE
|
|
||||||
BCSGPUSOLVER=NONE
|
|
||||||
MARC_DLL=NONE
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# define Fortran and C compile syntax
|
|
||||||
#
|
|
||||||
SOLVERFLAGS=
|
|
||||||
if test "$VKISOLVER" = VKI
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DVKI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$CASISOLVER" = CASI
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DCASI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MF2SOLVER" = MF2PARALLEL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMF2PARALLEL"
|
|
||||||
fi
|
|
||||||
if test "$MF2SOLVER" = MF2SERIAL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMF2SERIAL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$INTELSOLVER" = PARDISO
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DPARDISO"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MUMPSSOLVER" = MUMPS
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMUMPS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$BCSGPUSOLVER" = BCSGPU
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DBCSGPU"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_DLL" = MARC_DLL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMARC_DLL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LINK_OPT=
|
|
||||||
DEBUG_OPT=
|
|
||||||
C_DEBUG_OPT=
|
|
||||||
|
|
||||||
#Uncomment following line to build Marc in debuggable mode
|
|
||||||
MARCDEBUG=
|
|
||||||
#MARCDEBUG="ON"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
LINK_OPT="-debug -traceback"
|
|
||||||
DEBUG_OPT="-debug -traceback"
|
|
||||||
C_DEBUG_OPT="-debug -traceback"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
MARCCHECK=
|
|
||||||
#MARCCHECK="ON"
|
|
||||||
if test "$MARCCHECK" = "ON"
|
|
||||||
then
|
|
||||||
DEBUG_OPT="$DEBUG_OPT -fpe0 -fp-stack-check -check all -ftrapuv "
|
|
||||||
C_DEBUG_OPT="$C_DEBUG_OPT -fp-stack-check -check-uninit -Wformat -ftrapuv "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
I8FFLAGS=
|
|
||||||
I8DEFINES=
|
|
||||||
I8CDEFINES=
|
|
||||||
I8CASIDEFS=
|
|
||||||
else
|
|
||||||
I8FFLAGS="-i8"
|
|
||||||
I8DEFINES="-DI64"
|
|
||||||
I8CDEFINES="-U_DOUBLE -D_SINGLE"
|
|
||||||
I8CASIDEFS="-DCASI_64BIT_INT=1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
CDEFINES=
|
|
||||||
FDEFINES=
|
|
||||||
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
CDEFINES="$CDEFINES -D_OEM_NASTRAN"
|
|
||||||
FDEFINES="$FDEFINES -D_OEM_NASTRAN"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FDEFINES="$FDEFINES -D_IMPLICITNONE"
|
|
||||||
|
|
||||||
if test "$_OEM_NASTRAN" -eq 0
|
|
||||||
then
|
|
||||||
FDEFINES="$FDEFINES -DOPENMP -DMKL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -D_MSCMARC
|
|
||||||
FDEFINES="$FDEFINES -D_MSCMARC $DEBUG_OPT"
|
|
||||||
CDEFINES="$CDEFINES -D_MSCMARC $C_DEBUG_OPT $I8CDEFINES"
|
|
||||||
|
|
||||||
CINCL="-I$MARC_SOURCE/mdsrc -I$MARC_SOURCE/csource"
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
CINCL="$CINCL -I../../include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CC="icc -c -O1 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
CCLOW="icc -c -O0 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
CCHIGH="icc -c -O3 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
CC="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
CCLOW="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
CCHIGH="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LOAD_CC="icc -O1 -DLinux -DLINUX -DLinux_intel"
|
|
||||||
CCT="$CC"
|
|
||||||
CCTLOW="$CCLOW"
|
|
||||||
CCTHIGH="$CCHIGH"
|
|
||||||
|
|
||||||
CC_CASI="$CC -c99 $I8CASIDEFS"
|
|
||||||
CCLOW_CASI="$CCLOW -c99 $I8CASIDEFS"
|
|
||||||
CCHIGH_CASI="$CCHIGH -c99 $I8CASIDEFS"
|
|
||||||
|
|
||||||
CCT_CASI="$CCT -c99 $I8CASIDEFS"
|
|
||||||
CCTLOW_CASI="$CCLOW -c99 $I8CASIDEFS"
|
|
||||||
CCTHIGH_CASI="$CCHIGH -c99 $I8CASIDEFS"
|
|
||||||
|
|
||||||
#PROFILE="-Mprof=func"
|
|
||||||
#PROFILE="-Mprof=lines"
|
|
||||||
#PROFILE="-Mprof=func,mpi"
|
|
||||||
PROFILE=
|
|
||||||
|
|
||||||
FORTLOW="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTRAN="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTHIGH="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTNA="$FCOMP -c -assume byterecl -safe_cray_ptr -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
FORTLOW="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTRAN="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTHIGH="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTNA="$FCOMP -c -assume byterecl -safe_cray_ptr -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/bcssolver/common -I$MARC_SOURCE/mumpssolver/include $I8FFLAGS -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FORTLOWT="$FORTLOW"
|
|
||||||
FORTRANT="$FORTRAN"
|
|
||||||
FORTHIGHT="$FORTHIGH"
|
|
||||||
|
|
||||||
FORTRANMNF="$FCOMP -c $FDEFINES "
|
|
||||||
CCMNF="icc -c -O1 -DLinux -DLINUX -DLinux_intel -Dport2egcs -I$MARC_SOURCE/marctoadams/mnf/include -D_LARGEFILE64_SOURCE"
|
|
||||||
|
|
||||||
|
|
||||||
FORTRANMUMPS="$FCOMP -c -fpp -D_IMPLICITNONE $I8FFLAGS $I8DEFINES $DDM -I$MARC_SOURCE/mumpssolver/include -Dintel_ -DALLOW_NON_INIT -Dmetis -nofor_main"
|
|
||||||
CCMUMPS="icc -c -DAdd_ -Dmetis -I$MARC_SOURCE/mumpssolver/include"
|
|
||||||
|
|
||||||
|
|
||||||
BCSCC="icc -c -O3 -DLOWERCASE_ -I${MARC_SOURCE}/bcsgpusolver/bcslib_csrc $CDEFINES $CINCL"
|
|
||||||
NVCC="nvcc -c -O3 -arch sm_13 -DLOWERCASE_ -I${MARC_SOURCE}/bcsgpusolver/bcslib_cuda/include "
|
|
||||||
BCSFORTLOW="$FORTLOW -I${MARC_SOURCE}/bcsgpusolver/common"
|
|
||||||
BCSFORTRAN="$FORTRAN -I${MARC_SOURCE}/bcsgpusolver/common"
|
|
||||||
BCSFORTHIGH="$FORTHIGH -I${MARC_SOURCE}/bcsgpusolver/common"
|
|
||||||
BCSFORT90HIGH="$BCSFORTHIGH"
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
BCSFORTRAN=$BCSFORTLOW
|
|
||||||
BCSFORTHIGH=$BCSFORTLOW
|
|
||||||
BCSFORT90HIGH=$BCSFORTLOW
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $MPITYPE != none
|
|
||||||
then
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
LOAD="$MPI_ROOT/bin/$FCOMPMPI ${LOADOPTIONS} -L$MPI_ROOT/lib/$ARCHITECTURE $PROFILE $LINK_OPT -o "
|
|
||||||
LOADT="$MPI_ROOT/bin/$FCOMPMPI ${LOADOPTIONS} -L$MPI_ROOT/lib/$ARCHITECTURE $PROFILE $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
# Uncomment the following lines to turn on the tracer and commnet out the next 5 lines
|
|
||||||
# if test $MPITYPE = intelmpi
|
|
||||||
# then
|
|
||||||
# INCLUDEMPI="-I$MPI_ROOT/include64 -I$VT_ROOT/include"
|
|
||||||
# LOAD="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $INCLUDEMPI -g -t=log $LINK_OPT -o "
|
|
||||||
# LOADT="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $INCLUDEMPI -g -t=log $LINK_OPT -o "
|
|
||||||
# fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
LOAD="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $LINK_OPT -o "
|
|
||||||
LOADT="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
LOAD="$FCOMP $LINK_OPT -o "
|
|
||||||
LOADT="$FCOMP $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_DLL" = MARC_DLL
|
|
||||||
then
|
|
||||||
FORTLOW="$FORTLOW -fpp -fPIC"
|
|
||||||
FORTRAN="$FORTRAN -fpp -fPIC"
|
|
||||||
FORTHIGH="$FORTHIGH -fpp -fPIC"
|
|
||||||
FORTRANMNF="$FORTRANMNF -fpp -fPIC"
|
|
||||||
CC="$CC -fPIC"
|
|
||||||
CCMNF="$CCMNF -fPIC"
|
|
||||||
CC_CASI="$CC_CASI -fPIC"
|
|
||||||
CCLOW_CASI="$CCLOW_CASI -fPIC"
|
|
||||||
CCHIGH_CASI="$CCHIGH_CASI -fPIC"
|
|
||||||
LINK_EXE_MARC="-L$MARC_LIB -lmarc -L$MARC_LIB_SHARED -lguide -lpthread"
|
|
||||||
LINK_MARC_DLL="-shared -fPIC"
|
|
||||||
LOAD_DLL=$LOAD
|
|
||||||
LOADT_DLL=$LOADT
|
|
||||||
EXT_DLL="so"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
XLIBS="-L/usr/X11/lib -lX11 "
|
|
||||||
|
|
||||||
#
|
|
||||||
# define archive and ranlib syntax
|
|
||||||
#
|
|
||||||
|
|
||||||
ARC="ar rvl"
|
|
||||||
ARD="ar dvl"
|
|
||||||
ARX="ar xl"
|
|
||||||
RAN=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# choose which libraries you want to use ( e.g. blas )
|
|
||||||
#
|
|
||||||
|
|
||||||
if test "$VKISOLVER" = VKI
|
|
||||||
then
|
|
||||||
VKISOLVERLIBS="$MARC_LIB/vkisolver.a"
|
|
||||||
else
|
|
||||||
VKISOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$CASISOLVER" = CASI
|
|
||||||
then
|
|
||||||
CASISOLVERLIBS="$MARC_LIB/casilib.a"
|
|
||||||
else
|
|
||||||
CASISOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
MF2SOLVERLIBS=
|
|
||||||
if test "$MF2SOLVER" = MF2PARALLEL
|
|
||||||
then
|
|
||||||
MF2SOLVERLIBS="$MARC_LIB/mf2parallel/libseq.a \
|
|
||||||
$MARC_LIB/mf2parallel/libsym.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmet.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmf2.a \
|
|
||||||
$MARC_LIB/mf2parallel/libgauss.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmf2.a \
|
|
||||||
$MARC_LIB/mf2parallel/libgauss.a \
|
|
||||||
$MARC_LIB/mf2parallel/libnum.a \
|
|
||||||
$MARC_LIB/mf2parallel/libutl.a \
|
|
||||||
$MARC_LIB/mf2parallel/libr8.a \
|
|
||||||
$MARC_LIB/mf2parallel/libz.a "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$INTELSOLVER" = PARDISO
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
INTELSOLVERLIBS="$MARC_MKL/libmkl_solver_lp64.a"
|
|
||||||
else
|
|
||||||
INTELSOLVERLIBS="$MARC_MKL/libmkl_solver_ilp64.a"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
INTELSOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MUMPSSOLVER" = MUMPS
|
|
||||||
then
|
|
||||||
MUMPSSOLVERLIBS="$MARC_LIB/libmumps.a"
|
|
||||||
if test $MPITYPE = none
|
|
||||||
then
|
|
||||||
MUMPSSOLVERLIBS2=
|
|
||||||
echo hello > /dev/null
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_lp64.a $MARC_MKL/libmkl_blacs_intelmpi_lp64.a"
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_ilp64.a $MARC_MKL/libmkl_blacs_intelmpi_ilp64.a"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_lp64.a $MARC_MKL/libmkl_blacs_lp64.a"
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_ilp64.a $MARC_MKL/libmkl_blacs_ilp64.a"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS=
|
|
||||||
MUMPSSOLVERLIBS2=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$BCSGPUSOLVER" = BCSGPU
|
|
||||||
then
|
|
||||||
BCSSOLVERLIBS="${MARC_LIB}/bcsgpulib.a -L/usr/local/cuda/lib -lcudart -lcublas -lcuda "
|
|
||||||
else
|
|
||||||
BCSSOLVERLIBS="${MARC_LIB}/bcslib.a "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MKLLIB=$MARC_MKL/libmkl_intel_lp64.a
|
|
||||||
else
|
|
||||||
MKLLIB=$MARC_MKL/libmkl_intel_ilp64.a
|
|
||||||
fi
|
|
||||||
|
|
||||||
SECLIBS="-L$MARC_LIB -llapi"
|
|
||||||
|
|
||||||
SOLVERLIBS="${BCSSOLVERLIBS} \
|
|
||||||
${INTELSOLVERLIBS} ${MUMPSSOLVERLIBS2} ${MF2SOLVERLIBS} \
|
|
||||||
-Wl,--start-group $MKLLIB $MARC_MKL/libmkl_intel_thread.a $MARC_MKL/libmkl_core.a -Wl,--end-group \
|
|
||||||
$MARC_MKL/libguide.a \
|
|
||||||
$MARC_LIB/blas_src.a ${VKISOLVERLIBS} ${CASISOLVERLIBS} "
|
|
||||||
SOLVERLIBS_DLL=${SOLVERLIBS}
|
|
||||||
|
|
||||||
MRCLIBS="$MARC_LIB/clib.a ${CASISOLVERLIBS}"
|
|
||||||
MRCLIBSPAR="$MARC_LIB/clib.a"
|
|
||||||
STUBS="$MARC_LIB/stubs.a "
|
|
||||||
MNFLIBS="$MARC_LIB/libmnf.a"
|
|
||||||
MDUSER="$MARC_LIB/md_user.a"
|
|
||||||
|
|
||||||
|
|
||||||
OPENMP="-openmp"
|
|
||||||
|
|
||||||
SYSLIBS=" $OPENMP -lpthread "
|
|
||||||
|
|
||||||
# Uncomment the following lines to turn on the trace and comment out the next 4 lines
|
|
||||||
# if test $MPITYPE = intelmpi
|
|
||||||
# then
|
|
||||||
# SYSLIBS="-L${VT_ROOT}/lib -lVT -ldwarf -lelf -lm -lpthread \
|
|
||||||
# -L${MPI_ROOT}/lib64 -lmpi -lmpiif -lmpigi -lrt"
|
|
||||||
# fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
SYSLIBS="-L${MPI_ROOT}/lib64 -lmpi -lmpiif -lmpigi -lrt $OPENMP -lpthread"
|
|
||||||
fi
|
|
||||||
|
|
||||||
SYSLIBSPAR=" "
|
|
||||||
|
|
||||||
MARC_DLL_CODES="runmarc.f"
|
|
||||||
|
|
||||||
|
|
||||||
BLAS_SRC="dzero.f icopy.f izero.f"
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
BLAS_SRC="$BLAS_SRC dsctr.f zsctr.f dzasum.f daxpyi.f zaxpyi.f dgthr.f zgthr.f"
|
|
||||||
else
|
|
||||||
BLAS_SRC="ALL"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
LOW_OPT_CODES="are163.f contro.f ndext.f omarc.f omarca.f omarcb.f omarcc.f \
|
|
||||||
omars.f fixbc.f triang.f bet049.f norst3.f eldata.f \
|
|
||||||
elec*.f elct*.f fmeig.f oada00.f ogeig.f updtrbe2.f cycrota.f \
|
|
||||||
cordef.f ogpk.f ogtan.f eldam.f formrbe3.f \
|
|
||||||
inertie.f em_sso072.f cn_fol3d_qpatch6.f"
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i8" ; then
|
|
||||||
LOW_OPT_CODES="$LOW_OPT_CODES bbcseg.f"
|
|
||||||
fi
|
|
||||||
LOW_OPT_CODES_CASI=""
|
|
||||||
|
|
||||||
HIGH_OPT_CODES="dpsmsa1.f dpsmsa2.f dpsmsa3.f dpsmsa4.f dpsmsa5.f dpsmsa6.f \
|
|
||||||
dpsmsa7.f dpsmsa8.f dpsmsa9.f dpsmsa10.f dpsmsa11.f dpsmsa12.f \
|
|
||||||
dpsmsa13.f dpsmsa14.f dpsmsa15.f dpsmsa16.f "
|
|
||||||
|
|
||||||
|
|
||||||
HIGH_OPT_CODES_CASI="arithkernels.c blockedroutines.c blockedroutines_fd.c elemmatgenkernels.c longvecroutines.c sfmultutils.c solvewithbd.c"
|
|
||||||
|
|
||||||
MAXNUM=1000000
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# This script opens a window running an editor. The default window is an
|
|
||||||
# xterm, and the default editor is vi. These may be customized.
|
|
||||||
|
|
||||||
if [ "`uname`" = "SunOS" ]; then
|
|
||||||
dir=/usr/openwin/bin
|
|
||||||
else
|
|
||||||
dir=/usr/bin/X11
|
|
||||||
fi
|
|
||||||
|
|
||||||
# $dir/xterm -T "vi $*" -n "vi $*" -e vi $*
|
|
||||||
%EDITOR% $*
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# This script opens a window running an editor. The default window is an
|
|
||||||
# xterm, and the default editor is vi. These may be customized.
|
|
||||||
|
|
||||||
if [ "`uname`" = "SunOS" ]; then
|
|
||||||
dir=/usr/openwin/bin
|
|
||||||
else
|
|
||||||
dir=/usr/bin/X11
|
|
||||||
fi
|
|
||||||
|
|
||||||
$dir/xterm -T "vi $*" -n "vi $*" -e vi $*
|
|
|
@ -1,156 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=/home/f.roters/msc/marc2011
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_marc" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,157 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_hmp" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,157 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,157 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_lmp" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,157 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_h" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,157 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,157 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_l" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTRAN $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTHIGH $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTHIGHMP $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTLOW $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTRANMP $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,41 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user.f on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$FORTRAN $user.f || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user.f"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$user.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $user.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
|
@ -1,703 +0,0 @@
|
||||||
#
|
|
||||||
# General definitions for the Marc 2011 version
|
|
||||||
#
|
|
||||||
# EM64T
|
|
||||||
# ( LP64 - i4 version)
|
|
||||||
# (ILP64 - i8 version)
|
|
||||||
#
|
|
||||||
# Linux RedHat 5.4
|
|
||||||
#
|
|
||||||
# 64 bit MPI version
|
|
||||||
#
|
|
||||||
# Intel(R) Fortran Compiler
|
|
||||||
# Version 12.0.4
|
|
||||||
#
|
|
||||||
# Intel(R) C Compiler
|
|
||||||
# Version 12.0.4
|
|
||||||
#
|
|
||||||
# DATE
|
|
||||||
#
|
|
||||||
# To check the O/S level, type:
|
|
||||||
# uname -a
|
|
||||||
#
|
|
||||||
# Distributed parallel MPI libraries:
|
|
||||||
# 1) HP MPI 2.3
|
|
||||||
# To check the mpi version, type:
|
|
||||||
# mpirun -version
|
|
||||||
# 2) Intel MPI 4.0.1.007
|
|
||||||
# To check the mpi version, type:
|
|
||||||
# mpirun -version
|
|
||||||
#
|
|
||||||
# MKL Libraries:
|
|
||||||
# Intel(R) MKL 10.3.0.084
|
|
||||||
#
|
|
||||||
# To check the Compiler level, type using the compiler
|
|
||||||
# installation path:
|
|
||||||
# ifort -V
|
|
||||||
# icc -V
|
|
||||||
#
|
|
||||||
# REMARKS : This file contains the definitions of variables used during
|
|
||||||
# compilation loading and use of the MARC programmes . The
|
|
||||||
# current machine type is identified by means of the variable
|
|
||||||
# MACHINE , defined below.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# MPI_ROOT: root directory in which mpi shared libraries, etc. are located
|
|
||||||
# DIRJOB : directory in which spawned jobs should look for Marc input
|
|
||||||
# MPI_ARCH: system architecture
|
|
||||||
# MPI_EPATH: path where executable resides
|
|
||||||
#
|
|
||||||
|
|
||||||
REVISION="VERSION, BUILD"
|
|
||||||
HOSTNAME=`hostname`
|
|
||||||
|
|
||||||
# find available memory in Mbyte on the machine
|
|
||||||
# can be set explicitly
|
|
||||||
MEMLIMIT=`free -m | awk '/Mem:/ {print $2}'`
|
|
||||||
|
|
||||||
# set _OEM_NASTRAN to 1 for MD Nastran build
|
|
||||||
# override _OEM_NASTRAN setting with MARC_MD_NASTRAN environment variable
|
|
||||||
_OEM_NASTRAN="${MARC_MD_NASTRAN:-0}"
|
|
||||||
|
|
||||||
# uncomment the following line for an autoforge build
|
|
||||||
#AUTOFORGE=1
|
|
||||||
AUTOFORGE=0
|
|
||||||
export AUTOFORGE
|
|
||||||
|
|
||||||
# integer size
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "" ; then
|
|
||||||
INTEGER_PATH=
|
|
||||||
else
|
|
||||||
INTEGER_PATH=/$MARC_INTEGER_SIZE
|
|
||||||
fi
|
|
||||||
|
|
||||||
FCOMP=ifort
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for Metis
|
|
||||||
#
|
|
||||||
METIS="-I$METIS_SOURCE"
|
|
||||||
METISLIBS="$MARC_LIB/metis.a "
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for MPI
|
|
||||||
#
|
|
||||||
# RCP and RSH are used for parallel network runs
|
|
||||||
# replace with similar commands like rsh if needed
|
|
||||||
RCP=/usr/bin/scp
|
|
||||||
RSH=/usr/bin/ssh
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
MPI_DEFAULT=intelmpi
|
|
||||||
MPI_OTHER=hpmpi
|
|
||||||
|
|
||||||
MPITYPE=$MPI_DEFAULT
|
|
||||||
|
|
||||||
if test $AUTOFORGE
|
|
||||||
then
|
|
||||||
if test $AUTOFORGE = 1
|
|
||||||
then
|
|
||||||
MPITYPE=none
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# overrule MPITYPE setting with environmental variable MARC_MPITYPE
|
|
||||||
if test $MARC_MPITYPE
|
|
||||||
then
|
|
||||||
MPITYPE=$MARC_MPITYPE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# always set MPITYPE to none for MD Nastran
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
MPITYPE=none
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Edit following lines to build with GPGPU version of BCS Solver for
|
|
||||||
# NVIDIA platforms
|
|
||||||
#BCSGPUSOLVER=NONE
|
|
||||||
BCSGPUSOLVER=BCSGPU
|
|
||||||
|
|
||||||
SOLVERFLAGS=
|
|
||||||
if test "$BCSGPUSOLVER" = BCSGPU
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DBCSGPU -DCUDA"
|
|
||||||
BCS_DIR=bcsgpusolver
|
|
||||||
export PATH=$MARC_CUDA/bin:$MARC_CUDA/nvvm:$PATH
|
|
||||||
export LD_LIBRARY_PATH=$MARC_CUDA/lib64:$LD_LIBRARY_PATH
|
|
||||||
else
|
|
||||||
BCS_DIR=bcssolver
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
# settings for MPI
|
|
||||||
#
|
|
||||||
DDM=
|
|
||||||
if test $MPITYPE != none
|
|
||||||
then
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
FCOMPMPI=mpif90
|
|
||||||
export MPI_ROOT=$MARC_HPMPI
|
|
||||||
export MPI_REMSH=$RSH
|
|
||||||
export MPI_F77=$FCOMP
|
|
||||||
ARCHITECTURE=linux_amd64
|
|
||||||
DDM="-I$MPI_ROOT/include/64 -DDDM -DHPMPI"
|
|
||||||
MPI_CLEAN=
|
|
||||||
export MPI_EPATH=$MARC_BIN
|
|
||||||
export LD_LIBRARY_PATH=$MPI_ROOT/lib/$ARCHITECTURE:$MARC_LIB:$MARC_LIB_SHARED:$LD_LIBRARY_PATH
|
|
||||||
export MPIHPSPECIAL="-e MPI_FLAGS=E,T,y1"
|
|
||||||
# Below line is moved in run_marc file
|
|
||||||
# export MPIHPSPECIAL="$MPIHPSPECIAL -e LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e BINDIR=$MARC_BIN"
|
|
||||||
if test -n "$MSC_LICENSE_FILE"
|
|
||||||
then
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e MSC_LICENSE_FILE=$MSC_LICENSE_FILE"
|
|
||||||
fi
|
|
||||||
if test -n "$LM_LICENSE_FILE"
|
|
||||||
then
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e LM_LICENSE_FILE=$LM_LICENSE_FILE"
|
|
||||||
fi
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e MPI_LIC_CHECKER=$MPI_ROOT/bin/licensing/amd64_s8/lichk.x"
|
|
||||||
RUN_JOB2="$MPI_ROOT/bin/mpirun ${MPIRUNOPTIONS} -prot -f "
|
|
||||||
RUN_JOB1="$MPI_ROOT/bin/mpirun ${MPIRUNOPTIONS} -prot -w $MPIHPSPECIAL -np "
|
|
||||||
RUN_JOB0=
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
INTELMPI_VERSION=HYDRA
|
|
||||||
FCOMPMPI=mpiifort
|
|
||||||
MPI_ROOT=$MARC_INTELMPI
|
|
||||||
DDM="-I${MPI_ROOT}/include64 -DDDM"
|
|
||||||
PATH=$MPI_ROOT/bin64:$PATH
|
|
||||||
export PATH
|
|
||||||
LD_LIBRARY_PATH=$MPI_ROOT/lib64:$LD_LIBRARY_PATH
|
|
||||||
export LD_LIBRARY_PATH
|
|
||||||
if test $INTELMPI_VERSION = HYDRA
|
|
||||||
then
|
|
||||||
RUN_JOB1="${MPI_ROOT}/bin64/mpiexec.hydra -genvall -n "
|
|
||||||
RUN_JOB2="${MPI_ROOT}/bin64/mpiexec.hydra -genvall"
|
|
||||||
else
|
|
||||||
RUN_JOB1="${MPI_ROOT}/bin64/mpiexec -n "
|
|
||||||
RUN_JOB2="${MPI_ROOT}/bin64/mpiexec -configfile "
|
|
||||||
fi
|
|
||||||
RUN_JOB0=
|
|
||||||
MPI_CLEAN=
|
|
||||||
MPI_EPATH=$MARC_BIN
|
|
||||||
MPIR_HOME=$MPI_ROOT
|
|
||||||
MPICH_F77=$FCOMP
|
|
||||||
MPICH_F77LINKER=$FCOMP
|
|
||||||
export MPI_ROOT MPI_EPATH MPIR_HOME MPICH_F77 MPICH_F77LINKER
|
|
||||||
I_MPI_PIN_DOMAIN=node
|
|
||||||
export I_MPI_PIN_DOMAIN
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MPI_ROOT=$MARC_DUMMYMPI
|
|
||||||
export MPI_ROOT=$MARC_DUMMYMPI
|
|
||||||
DDM="-I$MPI_ROOT/include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# variables for the "maintain" script
|
|
||||||
#
|
|
||||||
|
|
||||||
MACHINENAME=LINUX
|
|
||||||
MACHINE64BIT=yes
|
|
||||||
MACHINE=Linux_EM64T
|
|
||||||
DEV=/dev/tape
|
|
||||||
GETLOG="whoami"
|
|
||||||
CLEAR="clear"
|
|
||||||
MY_UNAME=`uname -a`
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with VKI Solver
|
|
||||||
#VKISOLVER=VKI
|
|
||||||
VKISOLVER=NONE
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with CASI Solver
|
|
||||||
CASISOLVER=CASI
|
|
||||||
#CASISOLVER=NONE
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with MF2 Solver
|
|
||||||
MF2SOLVER=NONE
|
|
||||||
#MF2SOLVER=SERIAL
|
|
||||||
#MF2SOLVER=MF2PARALLEL
|
|
||||||
|
|
||||||
# Edit following lines to build with Intel(c) Multithreaded solver (PARDISO)
|
|
||||||
#INTELSOLVER=NONE
|
|
||||||
INTELSOLVER=PARDISO
|
|
||||||
|
|
||||||
# Edit following lines to build with MUMPS
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
#MUMPSSOLVER=NONE
|
|
||||||
MUMPSSOLVER=MUMPS
|
|
||||||
else
|
|
||||||
#MUMPSSOLVER=NONE
|
|
||||||
MUMPSSOLVER=MUMPS
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Edit following 2 lines to build MARC dynamic shared library
|
|
||||||
MARC_DLL=MARC_DLL
|
|
||||||
#MARC_DLL=NONE
|
|
||||||
|
|
||||||
# always set VKISOLVER, CASISOLVER, BCSGPUSOLVER, and MARC_DLL to NONE for MD Nastran
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
VKISOLVER=NONE
|
|
||||||
CASISOLVER=NONE
|
|
||||||
MF2SOLVER=NONE
|
|
||||||
INTELSOLVER=NONE
|
|
||||||
MUMPSSOLVER=NONE
|
|
||||||
BCSGPUSOLVER=NONE
|
|
||||||
MARC_DLL=NONE
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# define Fortran and C compile syntax
|
|
||||||
#
|
|
||||||
if test "$VKISOLVER" = VKI
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DVKI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$CASISOLVER" = CASI
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DCASI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MF2SOLVER" = MF2PARALLEL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMF2PARALLEL"
|
|
||||||
fi
|
|
||||||
if test "$MF2SOLVER" = MF2SERIAL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMF2SERIAL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$INTELSOLVER" = PARDISO
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DPARDISO"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MUMPSSOLVER" = MUMPS
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMUMPS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if test "$MARC_DLL" = MARC_DLL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMARC_DLL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LINK_OPT=
|
|
||||||
DEBUG_OPT=
|
|
||||||
C_DEBUG_OPT=
|
|
||||||
|
|
||||||
#Uncomment following line to build Marc in debuggable mode
|
|
||||||
MARCDEBUG=
|
|
||||||
#MARCDEBUG="ON"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
LINK_OPT="-debug -traceback"
|
|
||||||
DEBUG_OPT="-debug -traceback"
|
|
||||||
C_DEBUG_OPT="-debug -traceback"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
MARCCHECK=
|
|
||||||
#MARCCHECK="ON"
|
|
||||||
if test "$MARCCHECK" = "ON"
|
|
||||||
then
|
|
||||||
DEBUG_OPT="$DEBUG_OPT -fpe0 -fp-stack-check -check all -ftrapuv "
|
|
||||||
C_DEBUG_OPT="$C_DEBUG_OPT -fp-stack-check -check-uninit -Wformat -ftrapuv "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
I8FFLAGS="-real-size 64 -integer-size 32"
|
|
||||||
I8DEFINES="-DFLOAT=8 -DINT=4"
|
|
||||||
I8CDEFINES=
|
|
||||||
I8CASIDEFS=
|
|
||||||
else
|
|
||||||
I8FFLAGS="-i8 -real-size 64 -integer-size 64"
|
|
||||||
I8DEFINES="-DI64 -DFLOAT=8 -DINT=8"
|
|
||||||
I8CDEFINES="-U_DOUBLE -D_SINGLE"
|
|
||||||
I8CASIDEFS="-DCASI_64BIT_INT=1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
CDEFINES=
|
|
||||||
FDEFINES=
|
|
||||||
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
CDEFINES="$CDEFINES -D_OEM_NASTRAN"
|
|
||||||
FDEFINES="$FDEFINES -D_OEM_NASTRAN"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FDEFINES="$FDEFINES -D_IMPLICITNONE"
|
|
||||||
|
|
||||||
if test "$_OEM_NASTRAN" -eq 0
|
|
||||||
then
|
|
||||||
FDEFINES="$FDEFINES -DOPENMP -DMKL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -D_MSCMARC
|
|
||||||
FDEFINES="$FDEFINES -D_MSCMARC $DEBUG_OPT"
|
|
||||||
CDEFINES="$CDEFINES -D_MSCMARC $C_DEBUG_OPT $I8CDEFINES"
|
|
||||||
|
|
||||||
CINCL="-I$MARC_SOURCE/mdsrc -I$MARC_SOURCE/csource"
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
CINCL="$CINCL -I../../include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CC="icc -c -O1 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
CCLOW="icc -c -O0 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
CCHIGH="icc -c -O3 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
CC="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
CCLOW="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
CCHIGH="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LOAD_CC="icc -O1 -DLinux -DLINUX -DLinux_intel"
|
|
||||||
CCT="$CC"
|
|
||||||
CCTLOW="$CCLOW"
|
|
||||||
CCTHIGH="$CCHIGH"
|
|
||||||
|
|
||||||
CC_CASI="$CC -c99 $I8CASIDEFS"
|
|
||||||
CCLOW_CASI="$CCLOW -c99 $I8CASIDEFS"
|
|
||||||
CCHIGH_CASI="$CCHIGH -c99 $I8CASIDEFS"
|
|
||||||
|
|
||||||
CCT_CASI="$CCT -c99 $I8CASIDEFS"
|
|
||||||
CCTLOW_CASI="$CCLOW -c99 $I8CASIDEFS"
|
|
||||||
CCTHIGH_CASI="$CCHIGH -c99 $I8CASIDEFS"
|
|
||||||
|
|
||||||
#PROFILE="-Mprof=func"
|
|
||||||
#PROFILE="-Mprof=lines"
|
|
||||||
#PROFILE="-Mprof=func,mpi"
|
|
||||||
PROFILE=
|
|
||||||
|
|
||||||
FORTLOW="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTRAN="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTHIGH="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTNA="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM"
|
|
||||||
|
|
||||||
# determine DAMASK version
|
|
||||||
HIT=0
|
|
||||||
for arg in "$@"
|
|
||||||
do
|
|
||||||
if [ $HIT = 1 ]
|
|
||||||
then
|
|
||||||
DAMASKPATH=`dirname $arg`
|
|
||||||
break
|
|
||||||
elif [ ${arg:0:2} = -u -o ${arg:0:2} = -U ]
|
|
||||||
then
|
|
||||||
HIT=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
read DAMASKVERSION < $DAMASKPATH/../VERSION
|
|
||||||
DAMASKVERSION="'"$DAMASKVERSION"'"
|
|
||||||
|
|
||||||
# DAMASK compiler calls: additional flags are in line 2 OpenMP flags in line 3; removed -save for calls with openMP
|
|
||||||
DFORTLOW="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTLOWMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTRAN="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTRANMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTHIGH="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTHIGHMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
FORTLOW="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTRAN="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTHIGH="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTNA="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM"
|
|
||||||
|
|
||||||
# DAMASK compiler calls: additional flags are in line 2 OpenMP flags in line 3; removed -save for calls with openMP
|
|
||||||
DFORTLOW="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTLOWMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTRAN="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTRANMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTHIGH="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
DFORTHIGHMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2012 -DDAMASKVERSION=$DAMASKVERSION \
|
|
||||||
-openmp -openmp_report2 \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FORTLOWT="$FORTLOW"
|
|
||||||
FORTRANT="$FORTRAN"
|
|
||||||
FORTHIGHT="$FORTHIGH"
|
|
||||||
|
|
||||||
FORTRANMNF="$FCOMP -c $FDEFINES "
|
|
||||||
CCMNF="icc -c -O1 -DLinux -DLINUX -DLinux_intel -Dport2egcs -I$MARC_SOURCE/marctoadams/mnf/include -D_LARGEFILE64_SOURCE"
|
|
||||||
|
|
||||||
|
|
||||||
FORTRANMUMPS="$FCOMP -c -fpp -D_IMPLICITNONE $I8FFLAGS $I8DEFINES $DDM -I$MARC_SOURCE/mumpssolver/include -Dintel_ -DALLOW_NON_INIT -Dmetis -nofor_main"
|
|
||||||
CCMUMPS="icc -c -DAdd_ -Dmetis -I$MARC_SOURCE/mumpssolver/include"
|
|
||||||
|
|
||||||
|
|
||||||
BCSCC="icc -c -O3 -DLOWERCASE_ -I${MARC_SOURCE}/${BCS_DIR}/bcslib_csrc $CDEFINES $CINCL"
|
|
||||||
NVCC="nvcc -c -O3 -arch sm_20 -DLOWERCASE_ -I${MARC_SOURCE}/${BCS_DIR}/bcslib_cuda/include -I${MARC_CUDA}/include -I$MARC_SOURCE/mdsrc $I8DEFINES -Xcompiler -fvisibility=hidden -Xcompiler -fPIC $I8DEFINES "
|
|
||||||
NVCCLIB="ar rvl"
|
|
||||||
NVCCLD=gcc
|
|
||||||
BCSFORTLOW="$FORTLOW -I${MARC_SOURCE}/${BCS_DIR}/common"
|
|
||||||
BCSFORTRAN="$FORTRAN -I${MARC_SOURCE}/${BCS_DIR}/common"
|
|
||||||
BCSFORTHIGH="$FORTHIGH -I${MARC_SOURCE}/${BCS_DIR}/common"
|
|
||||||
BCSFORT90HIGH="$BCSFORTHIGH"
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
BCSFORTRAN=$BCSFORTLOW
|
|
||||||
BCSFORTHIGH=$BCSFORTLOW
|
|
||||||
BCSFORT90HIGH=$BCSFORTLOW
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $MPITYPE != none
|
|
||||||
then
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
LOAD="$MPI_ROOT/bin/$FCOMPMPI ${LOADOPTIONS} -L$MPI_ROOT/lib/$ARCHITECTURE $PROFILE $LINK_OPT -o "
|
|
||||||
LOADT="$MPI_ROOT/bin/$FCOMPMPI ${LOADOPTIONS} -L$MPI_ROOT/lib/$ARCHITECTURE $PROFILE $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
# Uncomment the following lines to turn on the tracer and commnet out the next 5 lines
|
|
||||||
# if test $MPITYPE = intelmpi
|
|
||||||
# then
|
|
||||||
# INCLUDEMPI="-I$MPI_ROOT/include64 -I$VT_ROOT/include"
|
|
||||||
# LOAD="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $INCLUDEMPI -g -t=log $LINK_OPT -o "
|
|
||||||
# LOADT="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $INCLUDEMPI -g -t=log $LINK_OPT -o "
|
|
||||||
# fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
LOAD="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $LINK_OPT -o "
|
|
||||||
LOADT="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
LOAD="$FCOMP $LINK_OPT -o "
|
|
||||||
LOADT="$FCOMP $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_DLL" = MARC_DLL
|
|
||||||
then
|
|
||||||
FORTLOW="$FORTLOW -fpp -fPIC"
|
|
||||||
FORTRAN="$FORTRAN -fpp -fPIC"
|
|
||||||
FORTHIGH="$FORTHIGH -fpp -fPIC"
|
|
||||||
FORTRANMNF="$FORTRANMNF -fpp -fPIC"
|
|
||||||
CC="$CC -fPIC"
|
|
||||||
CCMNF="$CCMNF -fPIC"
|
|
||||||
CC_CASI="$CC_CASI -fPIC"
|
|
||||||
CCLOW_CASI="$CCLOW_CASI -fPIC"
|
|
||||||
CCHIGH_CASI="$CCHIGH_CASI -fPIC"
|
|
||||||
LINK_EXE_MARC="-L$MARC_LIB -lmarc -L$MARC_LIB_SHARED -lguide -lpthread"
|
|
||||||
LINK_MARC_DLL="-shared -fPIC"
|
|
||||||
LOAD_DLL=$LOAD
|
|
||||||
LOADT_DLL=$LOADT
|
|
||||||
EXT_DLL="so"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
XLIBS="-L/usr/X11/lib -lX11 "
|
|
||||||
|
|
||||||
#
|
|
||||||
# define archive and ranlib syntax
|
|
||||||
#
|
|
||||||
|
|
||||||
ARC="ar rvl"
|
|
||||||
ARD="ar dvl"
|
|
||||||
ARX="ar xl"
|
|
||||||
RAN=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# choose which libraries you want to use ( e.g. blas )
|
|
||||||
#
|
|
||||||
|
|
||||||
if test "$VKISOLVER" = VKI
|
|
||||||
then
|
|
||||||
VKISOLVERLIBS="$MARC_LIB/vkisolver.a"
|
|
||||||
else
|
|
||||||
VKISOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$CASISOLVER" = CASI
|
|
||||||
then
|
|
||||||
CASISOLVERLIBS="$MARC_LIB/casilib.a"
|
|
||||||
else
|
|
||||||
CASISOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
MF2SOLVERLIBS=
|
|
||||||
if test "$MF2SOLVER" = MF2PARALLEL
|
|
||||||
then
|
|
||||||
MF2SOLVERLIBS="$MARC_LIB/mf2parallel/libseq.a \
|
|
||||||
$MARC_LIB/mf2parallel/libsym.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmet.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmf2.a \
|
|
||||||
$MARC_LIB/mf2parallel/libgauss.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmf2.a \
|
|
||||||
$MARC_LIB/mf2parallel/libgauss.a \
|
|
||||||
$MARC_LIB/mf2parallel/libnum.a \
|
|
||||||
$MARC_LIB/mf2parallel/libutl.a \
|
|
||||||
$MARC_LIB/mf2parallel/libr8.a \
|
|
||||||
$MARC_LIB/mf2parallel/libz.a "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$INTELSOLVER" = PARDISO
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
INTELSOLVERLIBS="$MARC_MKL/libmkl_solver_lp64.a"
|
|
||||||
else
|
|
||||||
INTELSOLVERLIBS="$MARC_MKL/libmkl_solver_ilp64.a"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
INTELSOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MUMPSSOLVER" = MUMPS
|
|
||||||
then
|
|
||||||
MUMPSSOLVERLIBS="$MARC_LIB/libmumps.a"
|
|
||||||
if test $MPITYPE = none
|
|
||||||
then
|
|
||||||
MUMPSSOLVERLIBS2=
|
|
||||||
echo hello > /dev/null
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_lp64.a $MARC_MKL/libmkl_blacs_intelmpi_lp64.a"
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_ilp64.a $MARC_MKL/libmkl_blacs_intelmpi_ilp64.a"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_lp64.a $MARC_MKL/libmkl_blacs_lp64.a"
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_ilp64.a $MARC_MKL/libmkl_blacs_ilp64.a"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS=
|
|
||||||
MUMPSSOLVERLIBS2=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$BCSGPUSOLVER" = BCSGPU
|
|
||||||
then
|
|
||||||
BCSSOLVERLIBS="${MARC_LIB}/bcsgpulib.a "
|
|
||||||
MARCCUDALIBS1="-L${MARC_LIB}/cuda_dummy -lmarccuda "
|
|
||||||
MARCCUDALIBS2="-L${MARC_LIB}/cuda -lmarccuda "
|
|
||||||
MARCCUDALIBS=$MARCCUDALIBS1
|
|
||||||
CUDALIBS="-L$MARC_CUDA/lib64 -lcudart -lcublas -L/usr/lib64 -lcuda "
|
|
||||||
else
|
|
||||||
BCSSOLVERLIBS="${MARC_LIB}/bcslib.a "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MKLLIB=$MARC_MKL/libmkl_intel_lp64.a
|
|
||||||
else
|
|
||||||
MKLLIB=$MARC_MKL/libmkl_intel_ilp64.a
|
|
||||||
fi
|
|
||||||
|
|
||||||
SECLIBS="-L$MARC_LIB -llapi"
|
|
||||||
|
|
||||||
SOLVERLIBS="${BCSSOLVERLIBS} \
|
|
||||||
${INTELSOLVERLIBS} ${MUMPSSOLVERLIBS2} ${MF2SOLVERLIBS} \
|
|
||||||
-Wl,--start-group $MKLLIB $MARC_MKL/libmkl_intel_thread.a $MARC_MKL/libmkl_core.a -Wl,--end-group \
|
|
||||||
$MARC_MKL/libguide.a \
|
|
||||||
$MARC_LIB/blas_src.a ${VKISOLVERLIBS} ${CASISOLVERLIBS} "
|
|
||||||
SOLVERLIBS_DLL=${SOLVERLIBS}
|
|
||||||
|
|
||||||
MRCLIBS="$MARC_LIB/clib.a ${CASISOLVERLIBS}"
|
|
||||||
MRCLIBSPAR="$MARC_LIB/clib.a"
|
|
||||||
STUBS="$MARC_LIB/stubs.a "
|
|
||||||
MNFLIBS="$MARC_LIB/libmnf.a"
|
|
||||||
MDUSER="$MARC_LIB/md_user.a"
|
|
||||||
|
|
||||||
|
|
||||||
OPENMP="-openmp"
|
|
||||||
|
|
||||||
SYSLIBS=" $OPENMP -lpthread "
|
|
||||||
|
|
||||||
# Uncomment the following lines to turn on the trace and comment out the next 4 lines
|
|
||||||
# if test $MPITYPE = intelmpi
|
|
||||||
# then
|
|
||||||
# SYSLIBS="-L${VT_ROOT}/lib -lVT -ldwarf -lelf -lm -lpthread \
|
|
||||||
# -L${MPI_ROOT}/lib64 -lmpi -lmpiif -lmpigi -lrt"
|
|
||||||
# fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
SYSLIBS="-L${MPI_ROOT}/lib64 -lmpi -lmpiif -lmpigi -lrt $OPENMP -lpthread"
|
|
||||||
fi
|
|
||||||
|
|
||||||
SYSLIBSPAR=" "
|
|
||||||
|
|
||||||
MARC_DLL_CODES="runmarc.f"
|
|
||||||
|
|
||||||
|
|
||||||
BLAS_SRC="dzero.f icopy.f izero.f"
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
BLAS_SRC="$BLAS_SRC dsctr.f zsctr.f dzasum.f daxpyi.f zaxpyi.f dgthr.f zgthr.f"
|
|
||||||
else
|
|
||||||
BLAS_SRC="ALL"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
LOW_OPT_CODES="are163.f contro.f ndext.f omarc.f omarca.f omarcb.f omarcc.f \
|
|
||||||
omars.f fixbc.f triang.f bet049.f norst3.f eldata.f \
|
|
||||||
elec*.f elct*.f fmeig.f oada00.f ogeig.f updtrbe2.f cycrota.f \
|
|
||||||
cordef.f ogpk.f ogtan.f eldam.f formrbe3.f \
|
|
||||||
inertie.f em_sso072.f cn_fol3d_qpatch6.f"
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i8" ; then
|
|
||||||
LOW_OPT_CODES="$LOW_OPT_CODES bbcseg.f"
|
|
||||||
fi
|
|
||||||
LOW_OPT_CODES_CASI=""
|
|
||||||
|
|
||||||
HIGH_OPT_CODES="dpsmsa1.f dpsmsa2.f dpsmsa3.f dpsmsa4.f dpsmsa5.f dpsmsa6.f \
|
|
||||||
dpsmsa7.f dpsmsa8.f dpsmsa9.f dpsmsa10.f dpsmsa11.f dpsmsa12.f \
|
|
||||||
dpsmsa13.f dpsmsa14.f dpsmsa15.f dpsmsa16.f "
|
|
||||||
|
|
||||||
|
|
||||||
HIGH_OPT_CODES_CASI="arithkernels.c blockedroutines.c blockedroutines_fd.c elemmatgenkernels.c longvecroutines.c sfmultutils.c solvewithbd.c"
|
|
||||||
|
|
||||||
MAXNUM=1000000
|
|
|
@ -1,641 +0,0 @@
|
||||||
#
|
|
||||||
# General definitions for the Marc 2011 version
|
|
||||||
#
|
|
||||||
# EM64T
|
|
||||||
# ( LP64 - i4 version)
|
|
||||||
# (ILP64 - i8 version)
|
|
||||||
#
|
|
||||||
# Linux RedHat 5.4
|
|
||||||
#
|
|
||||||
# 64 bit MPI version
|
|
||||||
#
|
|
||||||
# Intel(R) Fortran Compiler
|
|
||||||
# Version 12.0.4
|
|
||||||
#
|
|
||||||
# Intel(R) C Compiler
|
|
||||||
# Version 12.0.4
|
|
||||||
#
|
|
||||||
# DATE
|
|
||||||
#
|
|
||||||
# To check the O/S level, type:
|
|
||||||
# uname -a
|
|
||||||
#
|
|
||||||
# Distributed parallel MPI libraries:
|
|
||||||
# 1) HP MPI 2.3
|
|
||||||
# To check the mpi version, type:
|
|
||||||
# mpirun -version
|
|
||||||
# 2) Intel MPI 4.0.1.007
|
|
||||||
# To check the mpi version, type:
|
|
||||||
# mpirun -version
|
|
||||||
#
|
|
||||||
# MKL Libraries:
|
|
||||||
# Intel(R) MKL 10.3.0.084
|
|
||||||
#
|
|
||||||
# To check the Compiler level, type using the compiler
|
|
||||||
# installation path:
|
|
||||||
# ifort -V
|
|
||||||
# icc -V
|
|
||||||
#
|
|
||||||
# REMARKS : This file contains the definitions of variables used during
|
|
||||||
# compilation loading and use of the MARC programmes . The
|
|
||||||
# current machine type is identified by means of the variable
|
|
||||||
# MACHINE , defined below.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# MPI_ROOT: root directory in which mpi shared libraries, etc. are located
|
|
||||||
# DIRJOB : directory in which spawned jobs should look for Marc input
|
|
||||||
# MPI_ARCH: system architecture
|
|
||||||
# MPI_EPATH: path where executable resides
|
|
||||||
#
|
|
||||||
|
|
||||||
REVISION="VERSION, BUILD"
|
|
||||||
HOSTNAME=`hostname`
|
|
||||||
|
|
||||||
# find available memory in Mbyte on the machine
|
|
||||||
# can be set explicitly
|
|
||||||
MEMLIMIT=`free -m | awk '/Mem:/ {print $2}'`
|
|
||||||
|
|
||||||
# set _OEM_NASTRAN to 1 for MD Nastran build
|
|
||||||
# override _OEM_NASTRAN setting with MARC_MD_NASTRAN environment variable
|
|
||||||
_OEM_NASTRAN="${MARC_MD_NASTRAN:-0}"
|
|
||||||
|
|
||||||
# uncomment the following line for an autoforge build
|
|
||||||
#AUTOFORGE=1
|
|
||||||
AUTOFORGE=0
|
|
||||||
export AUTOFORGE
|
|
||||||
|
|
||||||
# integer size
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "" ; then
|
|
||||||
INTEGER_PATH=
|
|
||||||
else
|
|
||||||
INTEGER_PATH=/$MARC_INTEGER_SIZE
|
|
||||||
fi
|
|
||||||
|
|
||||||
FCOMP=ifort
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for Metis
|
|
||||||
#
|
|
||||||
METIS="-I$METIS_SOURCE"
|
|
||||||
METISLIBS="$MARC_LIB/metis.a "
|
|
||||||
|
|
||||||
#
|
|
||||||
# settings for MPI
|
|
||||||
#
|
|
||||||
# RCP and RSH are used for parallel network runs
|
|
||||||
# replace with similar commands like rsh if needed
|
|
||||||
RCP=/usr/bin/scp
|
|
||||||
RSH=/usr/bin/ssh
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
MPI_DEFAULT=intelmpi
|
|
||||||
MPI_OTHER=hpmpi
|
|
||||||
|
|
||||||
MPITYPE=$MPI_DEFAULT
|
|
||||||
|
|
||||||
if test $AUTOFORGE
|
|
||||||
then
|
|
||||||
if test $AUTOFORGE = 1
|
|
||||||
then
|
|
||||||
MPITYPE=none
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# overrule MPITYPE setting with environmental variable MARC_MPITYPE
|
|
||||||
if test $MARC_MPITYPE
|
|
||||||
then
|
|
||||||
MPITYPE=$MARC_MPITYPE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# always set MPITYPE to none for MD Nastran
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
MPITYPE=none
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Edit following lines to build with GPGPU version of BCS Solver for
|
|
||||||
# NVIDIA platforms
|
|
||||||
#BCSGPUSOLVER=NONE
|
|
||||||
BCSGPUSOLVER=BCSGPU
|
|
||||||
|
|
||||||
SOLVERFLAGS=
|
|
||||||
if test "$BCSGPUSOLVER" = BCSGPU
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DBCSGPU -DCUDA"
|
|
||||||
BCS_DIR=bcsgpusolver
|
|
||||||
export PATH=$MARC_CUDA/bin:$MARC_CUDA/nvvm:$PATH
|
|
||||||
export LD_LIBRARY_PATH=$MARC_CUDA/lib64:$LD_LIBRARY_PATH
|
|
||||||
else
|
|
||||||
BCS_DIR=bcssolver
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
# settings for MPI
|
|
||||||
#
|
|
||||||
DDM=
|
|
||||||
if test $MPITYPE != none
|
|
||||||
then
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
FCOMPMPI=mpif90
|
|
||||||
export MPI_ROOT=$MARC_HPMPI
|
|
||||||
export MPI_REMSH=$RSH
|
|
||||||
export MPI_F77=$FCOMP
|
|
||||||
ARCHITECTURE=linux_amd64
|
|
||||||
DDM="-I$MPI_ROOT/include/64 -DDDM -DHPMPI"
|
|
||||||
MPI_CLEAN=
|
|
||||||
export MPI_EPATH=$MARC_BIN
|
|
||||||
export LD_LIBRARY_PATH=$MPI_ROOT/lib/$ARCHITECTURE:$MARC_LIB:$MARC_LIB_SHARED:$LD_LIBRARY_PATH
|
|
||||||
export MPIHPSPECIAL="-e MPI_FLAGS=E,T,y1"
|
|
||||||
# Below line is moved in run_marc file
|
|
||||||
# export MPIHPSPECIAL="$MPIHPSPECIAL -e LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e BINDIR=$MARC_BIN"
|
|
||||||
if test -n "$MSC_LICENSE_FILE"
|
|
||||||
then
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e MSC_LICENSE_FILE=$MSC_LICENSE_FILE"
|
|
||||||
fi
|
|
||||||
if test -n "$LM_LICENSE_FILE"
|
|
||||||
then
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e LM_LICENSE_FILE=$LM_LICENSE_FILE"
|
|
||||||
fi
|
|
||||||
export MPIHPSPECIAL="$MPIHPSPECIAL -e MPI_LIC_CHECKER=$MPI_ROOT/bin/licensing/amd64_s8/lichk.x"
|
|
||||||
RUN_JOB2="$MPI_ROOT/bin/mpirun ${MPIRUNOPTIONS} -prot -f "
|
|
||||||
RUN_JOB1="$MPI_ROOT/bin/mpirun ${MPIRUNOPTIONS} -prot -w $MPIHPSPECIAL -np "
|
|
||||||
RUN_JOB0=
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
INTELMPI_VERSION=HYDRA
|
|
||||||
FCOMPMPI=mpiifort
|
|
||||||
MPI_ROOT=$MARC_INTELMPI
|
|
||||||
DDM="-I${MPI_ROOT}/include64 -DDDM"
|
|
||||||
PATH=$MPI_ROOT/bin64:$PATH
|
|
||||||
export PATH
|
|
||||||
LD_LIBRARY_PATH=$MPI_ROOT/lib64:$LD_LIBRARY_PATH
|
|
||||||
export LD_LIBRARY_PATH
|
|
||||||
if test $INTELMPI_VERSION = HYDRA
|
|
||||||
then
|
|
||||||
RUN_JOB1="${MPI_ROOT}/bin64/mpiexec.hydra -genvall -n "
|
|
||||||
RUN_JOB2="${MPI_ROOT}/bin64/mpiexec.hydra -genvall"
|
|
||||||
else
|
|
||||||
RUN_JOB1="${MPI_ROOT}/bin64/mpiexec -n "
|
|
||||||
RUN_JOB2="${MPI_ROOT}/bin64/mpiexec -configfile "
|
|
||||||
fi
|
|
||||||
RUN_JOB0=
|
|
||||||
MPI_CLEAN=
|
|
||||||
MPI_EPATH=$MARC_BIN
|
|
||||||
MPIR_HOME=$MPI_ROOT
|
|
||||||
MPICH_F77=$FCOMP
|
|
||||||
MPICH_F77LINKER=$FCOMP
|
|
||||||
export MPI_ROOT MPI_EPATH MPIR_HOME MPICH_F77 MPICH_F77LINKER
|
|
||||||
I_MPI_PIN_DOMAIN=node
|
|
||||||
export I_MPI_PIN_DOMAIN
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MPI_ROOT=$MARC_DUMMYMPI
|
|
||||||
export MPI_ROOT=$MARC_DUMMYMPI
|
|
||||||
DDM="-I$MPI_ROOT/include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# variables for the "maintain" script
|
|
||||||
#
|
|
||||||
|
|
||||||
MACHINENAME=LINUX
|
|
||||||
MACHINE64BIT=yes
|
|
||||||
MACHINE=Linux_EM64T
|
|
||||||
DEV=/dev/tape
|
|
||||||
GETLOG="whoami"
|
|
||||||
CLEAR="clear"
|
|
||||||
MY_UNAME=`uname -a`
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with VKI Solver
|
|
||||||
#VKISOLVER=VKI
|
|
||||||
VKISOLVER=NONE
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with CASI Solver
|
|
||||||
CASISOLVER=CASI
|
|
||||||
#CASISOLVER=NONE
|
|
||||||
|
|
||||||
# Edit following 2 lines to build with MF2 Solver
|
|
||||||
MF2SOLVER=NONE
|
|
||||||
#MF2SOLVER=SERIAL
|
|
||||||
#MF2SOLVER=MF2PARALLEL
|
|
||||||
|
|
||||||
# Edit following lines to build with Intel(c) Multithreaded solver (PARDISO)
|
|
||||||
#INTELSOLVER=NONE
|
|
||||||
INTELSOLVER=PARDISO
|
|
||||||
|
|
||||||
# Edit following lines to build with MUMPS
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
#MUMPSSOLVER=NONE
|
|
||||||
MUMPSSOLVER=MUMPS
|
|
||||||
else
|
|
||||||
#MUMPSSOLVER=NONE
|
|
||||||
MUMPSSOLVER=MUMPS
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Edit following 2 lines to build MARC dynamic shared library
|
|
||||||
MARC_DLL=MARC_DLL
|
|
||||||
#MARC_DLL=NONE
|
|
||||||
|
|
||||||
# always set VKISOLVER, CASISOLVER, BCSGPUSOLVER, and MARC_DLL to NONE for MD Nastran
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
VKISOLVER=NONE
|
|
||||||
CASISOLVER=NONE
|
|
||||||
MF2SOLVER=NONE
|
|
||||||
INTELSOLVER=NONE
|
|
||||||
MUMPSSOLVER=NONE
|
|
||||||
BCSGPUSOLVER=NONE
|
|
||||||
MARC_DLL=NONE
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# define Fortran and C compile syntax
|
|
||||||
#
|
|
||||||
if test "$VKISOLVER" = VKI
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DVKI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$CASISOLVER" = CASI
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DCASI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MF2SOLVER" = MF2PARALLEL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMF2PARALLEL"
|
|
||||||
fi
|
|
||||||
if test "$MF2SOLVER" = MF2SERIAL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMF2SERIAL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$INTELSOLVER" = PARDISO
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DPARDISO"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MUMPSSOLVER" = MUMPS
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMUMPS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if test "$MARC_DLL" = MARC_DLL
|
|
||||||
then
|
|
||||||
SOLVERFLAGS="$SOLVERFLAGS -DMARC_DLL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LINK_OPT=
|
|
||||||
DEBUG_OPT=
|
|
||||||
C_DEBUG_OPT=
|
|
||||||
|
|
||||||
#Uncomment following line to build Marc in debuggable mode
|
|
||||||
MARCDEBUG=
|
|
||||||
#MARCDEBUG="ON"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
LINK_OPT="-debug -traceback"
|
|
||||||
DEBUG_OPT="-debug -traceback"
|
|
||||||
C_DEBUG_OPT="-debug -traceback"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
MARCCHECK=
|
|
||||||
#MARCCHECK="ON"
|
|
||||||
if test "$MARCCHECK" = "ON"
|
|
||||||
then
|
|
||||||
DEBUG_OPT="$DEBUG_OPT -fpe0 -fp-stack-check -check all -ftrapuv "
|
|
||||||
C_DEBUG_OPT="$C_DEBUG_OPT -fp-stack-check -check-uninit -Wformat -ftrapuv "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
I8FFLAGS=
|
|
||||||
I8DEFINES=
|
|
||||||
I8CDEFINES=
|
|
||||||
I8CASIDEFS=
|
|
||||||
else
|
|
||||||
I8FFLAGS="-i8"
|
|
||||||
I8DEFINES="-DI64"
|
|
||||||
I8CDEFINES="-U_DOUBLE -D_SINGLE"
|
|
||||||
I8CASIDEFS="-DCASI_64BIT_INT=1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
CDEFINES=
|
|
||||||
FDEFINES=
|
|
||||||
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
CDEFINES="$CDEFINES -D_OEM_NASTRAN"
|
|
||||||
FDEFINES="$FDEFINES -D_OEM_NASTRAN"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FDEFINES="$FDEFINES -D_IMPLICITNONE"
|
|
||||||
|
|
||||||
if test "$_OEM_NASTRAN" -eq 0
|
|
||||||
then
|
|
||||||
FDEFINES="$FDEFINES -DOPENMP -DMKL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -D_MSCMARC
|
|
||||||
FDEFINES="$FDEFINES -D_MSCMARC $DEBUG_OPT"
|
|
||||||
CDEFINES="$CDEFINES -D_MSCMARC $C_DEBUG_OPT $I8CDEFINES"
|
|
||||||
|
|
||||||
CINCL="-I$MARC_SOURCE/mdsrc -I$MARC_SOURCE/csource"
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
CINCL="$CINCL -I../../include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CC="icc -c -O1 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
CCLOW="icc -c -O0 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
CCHIGH="icc -c -O3 $I8DEFINES -DLinux -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
CC="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
CCLOW="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
CCHIGH="icc -c -DLinux $I8DEFINES -DLINUX -DLinux_intel $CDEFINES $CINCL $SOLVERFLAGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LOAD_CC="icc -O1 -DLinux -DLINUX -DLinux_intel"
|
|
||||||
CCT="$CC"
|
|
||||||
CCTLOW="$CCLOW"
|
|
||||||
CCTHIGH="$CCHIGH"
|
|
||||||
|
|
||||||
CC_CASI="$CC -c99 $I8CASIDEFS"
|
|
||||||
CCLOW_CASI="$CCLOW -c99 $I8CASIDEFS"
|
|
||||||
CCHIGH_CASI="$CCHIGH -c99 $I8CASIDEFS"
|
|
||||||
|
|
||||||
CCT_CASI="$CCT -c99 $I8CASIDEFS"
|
|
||||||
CCTLOW_CASI="$CCLOW -c99 $I8CASIDEFS"
|
|
||||||
CCTHIGH_CASI="$CCHIGH -c99 $I8CASIDEFS"
|
|
||||||
|
|
||||||
#PROFILE="-Mprof=func"
|
|
||||||
#PROFILE="-Mprof=lines"
|
|
||||||
#PROFILE="-Mprof=func,mpi"
|
|
||||||
PROFILE=
|
|
||||||
|
|
||||||
FORTLOW="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTRAN="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTHIGH="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTNA="$FCOMP -c -assume byterecl -safe_cray_ptr -save -zero -mp1 -WB -fno-alias -O3 $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM"
|
|
||||||
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
FORTLOW="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTRAN="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTHIGH="$FCOMP -c -assume byterecl -safe_cray_ptr $PROFILE -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
|
||||||
FORTNA="$FCOMP -c -assume byterecl -safe_cray_ptr -save -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FORTLOWT="$FORTLOW"
|
|
||||||
FORTRANT="$FORTRAN"
|
|
||||||
FORTHIGHT="$FORTHIGH"
|
|
||||||
|
|
||||||
FORTRANMNF="$FCOMP -c $FDEFINES "
|
|
||||||
CCMNF="icc -c -O1 -DLinux -DLINUX -DLinux_intel -Dport2egcs -I$MARC_SOURCE/marctoadams/mnf/include -D_LARGEFILE64_SOURCE"
|
|
||||||
|
|
||||||
|
|
||||||
FORTRANMUMPS="$FCOMP -c -fpp -D_IMPLICITNONE $I8FFLAGS $I8DEFINES $DDM -I$MARC_SOURCE/mumpssolver/include -Dintel_ -DALLOW_NON_INIT -Dmetis -nofor_main"
|
|
||||||
CCMUMPS="icc -c -DAdd_ -Dmetis -I$MARC_SOURCE/mumpssolver/include"
|
|
||||||
|
|
||||||
|
|
||||||
BCSCC="icc -c -O3 -DLOWERCASE_ -I${MARC_SOURCE}/${BCS_DIR}/bcslib_csrc $CDEFINES $CINCL"
|
|
||||||
NVCC="nvcc -c -O3 -arch sm_20 -DLOWERCASE_ -I${MARC_SOURCE}/${BCS_DIR}/bcslib_cuda/include -I${MARC_CUDA}/include -I$MARC_SOURCE/mdsrc $I8DEFINES -Xcompiler -fvisibility=hidden -Xcompiler -fPIC $I8DEFINES "
|
|
||||||
NVCCLIB="ar rvl"
|
|
||||||
NVCCLD=gcc
|
|
||||||
BCSFORTLOW="$FORTLOW -I${MARC_SOURCE}/${BCS_DIR}/common"
|
|
||||||
BCSFORTRAN="$FORTRAN -I${MARC_SOURCE}/${BCS_DIR}/common"
|
|
||||||
BCSFORTHIGH="$FORTHIGH -I${MARC_SOURCE}/${BCS_DIR}/common"
|
|
||||||
BCSFORT90HIGH="$BCSFORTHIGH"
|
|
||||||
if test "$MARCDEBUG" = "ON"
|
|
||||||
then
|
|
||||||
BCSFORTRAN=$BCSFORTLOW
|
|
||||||
BCSFORTHIGH=$BCSFORTLOW
|
|
||||||
BCSFORT90HIGH=$BCSFORTLOW
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $MPITYPE != none
|
|
||||||
then
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
LOAD="$MPI_ROOT/bin/$FCOMPMPI ${LOADOPTIONS} -L$MPI_ROOT/lib/$ARCHITECTURE $PROFILE $LINK_OPT -o "
|
|
||||||
LOADT="$MPI_ROOT/bin/$FCOMPMPI ${LOADOPTIONS} -L$MPI_ROOT/lib/$ARCHITECTURE $PROFILE $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
# Uncomment the following lines to turn on the tracer and commnet out the next 5 lines
|
|
||||||
# if test $MPITYPE = intelmpi
|
|
||||||
# then
|
|
||||||
# INCLUDEMPI="-I$MPI_ROOT/include64 -I$VT_ROOT/include"
|
|
||||||
# LOAD="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $INCLUDEMPI -g -t=log $LINK_OPT -o "
|
|
||||||
# LOADT="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $INCLUDEMPI -g -t=log $LINK_OPT -o "
|
|
||||||
# fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
LOAD="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $LINK_OPT -o "
|
|
||||||
LOADT="$MPI_ROOT/bin64/$FCOMPMPI $PROFILE $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
LOAD="$FCOMP $LINK_OPT -o "
|
|
||||||
LOADT="$FCOMP $LINK_OPT -o "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_DLL" = MARC_DLL
|
|
||||||
then
|
|
||||||
FORTLOW="$FORTLOW -fpp -fPIC"
|
|
||||||
FORTRAN="$FORTRAN -fpp -fPIC"
|
|
||||||
FORTHIGH="$FORTHIGH -fpp -fPIC"
|
|
||||||
FORTRANMNF="$FORTRANMNF -fpp -fPIC"
|
|
||||||
CC="$CC -fPIC"
|
|
||||||
CCMNF="$CCMNF -fPIC"
|
|
||||||
CC_CASI="$CC_CASI -fPIC"
|
|
||||||
CCLOW_CASI="$CCLOW_CASI -fPIC"
|
|
||||||
CCHIGH_CASI="$CCHIGH_CASI -fPIC"
|
|
||||||
LINK_EXE_MARC="-L$MARC_LIB -lmarc -L$MARC_LIB_SHARED -lguide -lpthread"
|
|
||||||
LINK_MARC_DLL="-shared -fPIC"
|
|
||||||
LOAD_DLL=$LOAD
|
|
||||||
LOADT_DLL=$LOADT
|
|
||||||
EXT_DLL="so"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
XLIBS="-L/usr/X11/lib -lX11 "
|
|
||||||
|
|
||||||
#
|
|
||||||
# define archive and ranlib syntax
|
|
||||||
#
|
|
||||||
|
|
||||||
ARC="ar rvl"
|
|
||||||
ARD="ar dvl"
|
|
||||||
ARX="ar xl"
|
|
||||||
RAN=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# choose which libraries you want to use ( e.g. blas )
|
|
||||||
#
|
|
||||||
|
|
||||||
if test "$VKISOLVER" = VKI
|
|
||||||
then
|
|
||||||
VKISOLVERLIBS="$MARC_LIB/vkisolver.a"
|
|
||||||
else
|
|
||||||
VKISOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$CASISOLVER" = CASI
|
|
||||||
then
|
|
||||||
CASISOLVERLIBS="$MARC_LIB/casilib.a"
|
|
||||||
else
|
|
||||||
CASISOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
MF2SOLVERLIBS=
|
|
||||||
if test "$MF2SOLVER" = MF2PARALLEL
|
|
||||||
then
|
|
||||||
MF2SOLVERLIBS="$MARC_LIB/mf2parallel/libseq.a \
|
|
||||||
$MARC_LIB/mf2parallel/libsym.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmet.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmf2.a \
|
|
||||||
$MARC_LIB/mf2parallel/libgauss.a \
|
|
||||||
$MARC_LIB/mf2parallel/libmf2.a \
|
|
||||||
$MARC_LIB/mf2parallel/libgauss.a \
|
|
||||||
$MARC_LIB/mf2parallel/libnum.a \
|
|
||||||
$MARC_LIB/mf2parallel/libutl.a \
|
|
||||||
$MARC_LIB/mf2parallel/libr8.a \
|
|
||||||
$MARC_LIB/mf2parallel/libz.a "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$INTELSOLVER" = PARDISO
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
INTELSOLVERLIBS="$MARC_MKL/libmkl_solver_lp64.a"
|
|
||||||
else
|
|
||||||
INTELSOLVERLIBS="$MARC_MKL/libmkl_solver_ilp64.a"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
INTELSOLVERLIBS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MUMPSSOLVER" = MUMPS
|
|
||||||
then
|
|
||||||
MUMPSSOLVERLIBS="$MARC_LIB/libmumps.a"
|
|
||||||
if test $MPITYPE = none
|
|
||||||
then
|
|
||||||
MUMPSSOLVERLIBS2=
|
|
||||||
echo hello > /dev/null
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_lp64.a $MARC_MKL/libmkl_blacs_intelmpi_lp64.a"
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_ilp64.a $MARC_MKL/libmkl_blacs_intelmpi_ilp64.a"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test $MPITYPE = hpmpi
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_lp64.a $MARC_MKL/libmkl_blacs_lp64.a"
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS2="$MARC_MKL/libmkl_scalapack_ilp64.a $MARC_MKL/libmkl_blacs_ilp64.a"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MUMPSSOLVERLIBS=
|
|
||||||
MUMPSSOLVERLIBS2=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$BCSGPUSOLVER" = BCSGPU
|
|
||||||
then
|
|
||||||
BCSSOLVERLIBS="${MARC_LIB}/bcsgpulib.a "
|
|
||||||
MARCCUDALIBS1="-L${MARC_LIB}/cuda_dummy -lmarccuda "
|
|
||||||
MARCCUDALIBS2="-L${MARC_LIB}/cuda -lmarccuda "
|
|
||||||
MARCCUDALIBS=$MARCCUDALIBS1
|
|
||||||
CUDALIBS="-L$MARC_CUDA/lib64 -lcudart -lcublas -L/usr/lib64 -lcuda "
|
|
||||||
else
|
|
||||||
BCSSOLVERLIBS="${MARC_LIB}/bcslib.a "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
MKLLIB=$MARC_MKL/libmkl_intel_lp64.a
|
|
||||||
else
|
|
||||||
MKLLIB=$MARC_MKL/libmkl_intel_ilp64.a
|
|
||||||
fi
|
|
||||||
|
|
||||||
SECLIBS="-L$MARC_LIB -llapi"
|
|
||||||
|
|
||||||
SOLVERLIBS="${BCSSOLVERLIBS} \
|
|
||||||
${INTELSOLVERLIBS} ${MUMPSSOLVERLIBS2} ${MF2SOLVERLIBS} \
|
|
||||||
-Wl,--start-group $MKLLIB $MARC_MKL/libmkl_intel_thread.a $MARC_MKL/libmkl_core.a -Wl,--end-group \
|
|
||||||
$MARC_MKL/libguide.a \
|
|
||||||
$MARC_LIB/blas_src.a ${VKISOLVERLIBS} ${CASISOLVERLIBS} "
|
|
||||||
SOLVERLIBS_DLL=${SOLVERLIBS}
|
|
||||||
|
|
||||||
MRCLIBS="$MARC_LIB/clib.a ${CASISOLVERLIBS}"
|
|
||||||
MRCLIBSPAR="$MARC_LIB/clib.a"
|
|
||||||
STUBS="$MARC_LIB/stubs.a "
|
|
||||||
MNFLIBS="$MARC_LIB/libmnf.a"
|
|
||||||
MDUSER="$MARC_LIB/md_user.a"
|
|
||||||
|
|
||||||
|
|
||||||
OPENMP="-openmp"
|
|
||||||
|
|
||||||
SYSLIBS=" $OPENMP -lpthread "
|
|
||||||
|
|
||||||
# Uncomment the following lines to turn on the trace and comment out the next 4 lines
|
|
||||||
# if test $MPITYPE = intelmpi
|
|
||||||
# then
|
|
||||||
# SYSLIBS="-L${VT_ROOT}/lib -lVT -ldwarf -lelf -lm -lpthread \
|
|
||||||
# -L${MPI_ROOT}/lib64 -lmpi -lmpiif -lmpigi -lrt"
|
|
||||||
# fi
|
|
||||||
if test $MPITYPE = intelmpi
|
|
||||||
then
|
|
||||||
SYSLIBS="-L${MPI_ROOT}/lib64 -lmpi -lmpiif -lmpigi -lrt $OPENMP -lpthread"
|
|
||||||
fi
|
|
||||||
|
|
||||||
SYSLIBSPAR=" "
|
|
||||||
|
|
||||||
MARC_DLL_CODES="runmarc.f"
|
|
||||||
|
|
||||||
|
|
||||||
BLAS_SRC="dzero.f icopy.f izero.f"
|
|
||||||
if test "$_OEM_NASTRAN" -ne 0
|
|
||||||
then
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i4" ; then
|
|
||||||
BLAS_SRC="$BLAS_SRC dsctr.f zsctr.f dzasum.f daxpyi.f zaxpyi.f dgthr.f zgthr.f"
|
|
||||||
else
|
|
||||||
BLAS_SRC="ALL"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
LOW_OPT_CODES="are163.f contro.f ndext.f omarc.f omarca.f omarcb.f omarcc.f \
|
|
||||||
omars.f fixbc.f triang.f bet049.f norst3.f eldata.f \
|
|
||||||
elec*.f elct*.f fmeig.f oada00.f ogeig.f updtrbe2.f cycrota.f \
|
|
||||||
cordef.f ogpk.f ogtan.f eldam.f formrbe3.f \
|
|
||||||
inertie.f em_sso072.f cn_fol3d_qpatch6.f"
|
|
||||||
if test "$MARC_INTEGER_SIZE" = "i8" ; then
|
|
||||||
LOW_OPT_CODES="$LOW_OPT_CODES bbcseg.f"
|
|
||||||
fi
|
|
||||||
LOW_OPT_CODES_CASI=""
|
|
||||||
|
|
||||||
HIGH_OPT_CODES="dpsmsa1.f dpsmsa2.f dpsmsa3.f dpsmsa4.f dpsmsa5.f dpsmsa6.f \
|
|
||||||
dpsmsa7.f dpsmsa8.f dpsmsa9.f dpsmsa10.f dpsmsa11.f dpsmsa12.f \
|
|
||||||
dpsmsa13.f dpsmsa14.f dpsmsa15.f dpsmsa16.f "
|
|
||||||
|
|
||||||
|
|
||||||
HIGH_OPT_CODES_CASI="arithkernels.c blockedroutines.c blockedroutines_fd.c elemmatgenkernels.c longvecroutines.c sfmultutils.c solvewithbd.c"
|
|
||||||
|
|
||||||
MAXNUM=1000000
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# This script opens a window running an editor. The default window is an
|
|
||||||
# xterm, and the default editor is vi. These may be customized.
|
|
||||||
|
|
||||||
if [ "`uname`" = "SunOS" ]; then
|
|
||||||
dir=/usr/openwin/bin
|
|
||||||
else
|
|
||||||
dir=/usr/bin/X11
|
|
||||||
fi
|
|
||||||
|
|
||||||
# $dir/xterm -T "vi $*" -n "vi $*" -e vi $*
|
|
||||||
%EDITOR% $*
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# This script opens a window running an editor. The default window is an
|
|
||||||
# xterm, and the default editor is vi. These may be customized.
|
|
||||||
|
|
||||||
if [ "`uname`" = "SunOS" ]; then
|
|
||||||
dir=/usr/openwin/bin
|
|
||||||
else
|
|
||||||
dir=/usr/bin/X11
|
|
||||||
fi
|
|
||||||
|
|
||||||
$dir/xterm -T "vi $*" -n "vi $*" -e vi $*
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
echo "usage: $0 job_name"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo STOP > $1.cnt
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
echo "usage: $0 job_name"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo STOP > $1.cnt
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
echo "usage: $0 job_name"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo STOP > $1.cnt
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
echo "usage: $0 job_name"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo STOP > $1.cnt
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
echo "usage: $0 job_name"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo STOP > $1.cnt
|
|
|
@ -1,163 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=/msc/marc2012
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
gpu=$3
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$gpu" != "" -a "$gpu" != "-" ]; then
|
|
||||||
gpu="-gpu $gpu"
|
|
||||||
else
|
|
||||||
gpu=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_marc" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode $gpu > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,164 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
gpu=$3
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$gpu" != "" -a "$gpu" != "-" ]; then
|
|
||||||
gpu="-gpu $gpu"
|
|
||||||
else
|
|
||||||
gpu=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_hmp" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode $gpu > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,164 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
gpu=$3
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$gpu" != "" -a "$gpu" != "-" ]; then
|
|
||||||
gpu="-gpu $gpu"
|
|
||||||
else
|
|
||||||
gpu=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_mp" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode $gpu > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,164 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
gpu=$3
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$gpu" != "" -a "$gpu" != "-" ]; then
|
|
||||||
gpu="-gpu $gpu"
|
|
||||||
else
|
|
||||||
gpu=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_lmp" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode $gpu > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,164 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
gpu=$3
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$gpu" != "" -a "$gpu" != "-" ]; then
|
|
||||||
gpu="-gpu $gpu"
|
|
||||||
else
|
|
||||||
gpu=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_h" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode $gpu > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,164 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
gpu=$3
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$gpu" != "" -a "$gpu" != "-" ]; then
|
|
||||||
gpu="-gpu $gpu"
|
|
||||||
else
|
|
||||||
gpu=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode $gpu > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
|
@ -1,164 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# The exit status of this script is read by Mentat.
|
|
||||||
# Normal exit status is 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
DIR=%INSTALLDIR%/marc%VERSION%
|
|
||||||
if test $MARCDIR1
|
|
||||||
then
|
|
||||||
DIR=$MARCDIR1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRCEXT=.f
|
|
||||||
RSTEXT=.t08
|
|
||||||
PSTEXT=.t19
|
|
||||||
PSTEXTB=.t16
|
|
||||||
VWFCEXT=.vfs
|
|
||||||
|
|
||||||
slv=$1
|
|
||||||
version=$2
|
|
||||||
ndom_fea_solver=$3
|
|
||||||
ndom_preprocessor=$4
|
|
||||||
hostfile=$5
|
|
||||||
compat=$6
|
|
||||||
job=$7
|
|
||||||
srcfile=$8
|
|
||||||
srcmeth=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
restart=$1
|
|
||||||
postfile=$2
|
|
||||||
viewfactorsfile=$3
|
|
||||||
autorst=$4
|
|
||||||
copy_datfile="-ci $5"
|
|
||||||
copy_postfile="-cr $6"
|
|
||||||
scr_dir=$7
|
|
||||||
dcoup=$8
|
|
||||||
nthread=$9
|
|
||||||
shift 9 # cannot use $10, $11, ...
|
|
||||||
nsolver=$1
|
|
||||||
mode=$2
|
|
||||||
gpu=$3
|
|
||||||
|
|
||||||
if [ "$slv" != "" -a "$slv" != "marc" ]; then
|
|
||||||
slv="-iam sfm"
|
|
||||||
else
|
|
||||||
slv=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
|
|
||||||
nprocds="-nprocds $ndom_fea_solver"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
|
|
||||||
nprocd="-nprocd $ndom_preprocessor"
|
|
||||||
else
|
|
||||||
nprocd=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
|
|
||||||
# srcfile=`echo $srcfile | sed "s/$SRCEXT$//"`
|
|
||||||
case "$srcmeth" in
|
|
||||||
-)
|
|
||||||
srcfile="-u $srcfile"
|
|
||||||
;;
|
|
||||||
compsave)
|
|
||||||
srcfile="-u $srcfile -save y"
|
|
||||||
;;
|
|
||||||
runsaved)
|
|
||||||
srcfile=${srcfile%.*}".marc"
|
|
||||||
srcfile="-prog $srcfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
srcfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$restart" != "" -a "$restart" != "-" ]; then
|
|
||||||
restart=`echo $restart | sed "s/$RSTEXT$//"`
|
|
||||||
restart="-r $restart"
|
|
||||||
else
|
|
||||||
restart=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$postfile" != "" -a "$postfile" != "-" ]; then
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXT$//"`
|
|
||||||
postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
|
|
||||||
postfile="-pid $postfile"
|
|
||||||
else
|
|
||||||
postfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
|
|
||||||
viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
|
|
||||||
viewfactorsfile="-vf $viewfactorsfile"
|
|
||||||
else
|
|
||||||
viewfactorsfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
|
|
||||||
hostfile="-ho $hostfile"
|
|
||||||
else
|
|
||||||
hostfile=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$compat" != "" -a "$compat" != "-" ]; then
|
|
||||||
compat="-co $compat"
|
|
||||||
else
|
|
||||||
compat=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
|
|
||||||
scr_dir="-sd $scr_dir"
|
|
||||||
else
|
|
||||||
scr_dir=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
|
|
||||||
dcoup="-dcoup $dcoup"
|
|
||||||
else
|
|
||||||
dcoup=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
|
|
||||||
nthread="-nthread $nthread"
|
|
||||||
else
|
|
||||||
nthread=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
|
|
||||||
nsolver="-nsolver $nsolver"
|
|
||||||
else
|
|
||||||
nsolver=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
4) mode="-mo i4" ;;
|
|
||||||
8) mode="-mo i8" ;;
|
|
||||||
*) mode= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$gpu" != "" -a "$gpu" != "-" ]; then
|
|
||||||
gpu="-gpu $gpu"
|
|
||||||
else
|
|
||||||
gpu=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f $job.cnt
|
|
||||||
rm -f $job.sts
|
|
||||||
rm -f $job.out
|
|
||||||
rm -f $job.log
|
|
||||||
|
|
||||||
# To prevent a mismatch with the python version used by the solver
|
|
||||||
# do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
|
|
||||||
# unset environment variables PYTHONHOME and PYTHONPATH
|
|
||||||
unset PYTHONHOME
|
|
||||||
unset PYTHONPATH
|
|
||||||
|
|
||||||
"${DIR}/tools/run_damask_l" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
|
|
||||||
$srcfile $restart $postfile $viewfactorsfile $hostfile \
|
|
||||||
$compat $copy_datfile $copy_postfile $scr_dir $dcoup \
|
|
||||||
$nthread $nsolver $mode $gpu > /dev/null 2>&1
|
|
||||||
sleep 1
|
|
||||||
exit 0
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTRAN $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTHIGH $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTHIGHMP $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTLOW $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTRANLOWMP $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
usernoext=$user
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .F`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .for`
|
|
||||||
usernoext=`dirname $usernoext`/`$BASENAME $usernoext .f90`
|
|
||||||
|
|
||||||
# add BLAS options for linking
|
|
||||||
BLAS="%BLAS%"
|
|
||||||
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$DFORTRANMP $user || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$usernoext.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$BLAS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $usernoext.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
||||||
/bin/rm $DIRJOB/*.mod
|
|
|
@ -1,41 +0,0 @@
|
||||||
#!/bin/ksh
|
|
||||||
# 1st arg: $DIR
|
|
||||||
# 2nd arg: $DIRJOB
|
|
||||||
# 3rd arg: $user
|
|
||||||
# 4th arg: $program
|
|
||||||
DIR=$1
|
|
||||||
user=$3
|
|
||||||
program=$4
|
|
||||||
. $DIR/tools/include
|
|
||||||
DIRJOB=$2
|
|
||||||
cd $DIRJOB
|
|
||||||
echo "Compiling and linking user subroutine $user.f on host `hostname`"
|
|
||||||
echo "program: $program"
|
|
||||||
$FORTRAN $user.f || \
|
|
||||||
{
|
|
||||||
echo "$0: compile failed for $user.f"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $program 2>/dev/null
|
|
||||||
userobj=$user.o
|
|
||||||
|
|
||||||
|
|
||||||
$LOAD ${program} $DIR/lib/main.o\
|
|
||||||
$DIR/lib/blkdta.o $DIR/lib/comm?.o \
|
|
||||||
${userobj-} \
|
|
||||||
$DIR/lib/srclib.a \
|
|
||||||
$MNFLIBS \
|
|
||||||
$MDUSER \
|
|
||||||
../lib/mdsrc.a \
|
|
||||||
../lib/mcvfit.a \
|
|
||||||
$STUBS \
|
|
||||||
${SOLVERLIBS} \
|
|
||||||
$TKLIBS \
|
|
||||||
$MRCLIBS \
|
|
||||||
$METISLIBS \
|
|
||||||
$SYSLIBS || \
|
|
||||||
{
|
|
||||||
echo "$0: link failed for $user.o on host `hostname`"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
/bin/rm $userobj
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
echo "usage: $0 job_name"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo STOP > $1.cnt
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
echo "usage: $0 job_name"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo STOP > $1.cnt
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
echo "usage: $0 job_name"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo STOP > $1.cnt
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue