Merge branch 'development' into 20-NewStyleDislotwin
This commit is contained in:
commit
989701aebd
|
@ -51,24 +51,24 @@ variables:
|
||||||
# ++++++++++++ Compiler ++++++++++++++++++++++++++++++++++++++++++++++
|
# ++++++++++++ Compiler ++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
IntelCompiler16_0: "Compiler/Intel/16.0 Libraries/IMKL/2016"
|
IntelCompiler16_0: "Compiler/Intel/16.0 Libraries/IMKL/2016"
|
||||||
IntelCompiler17_0: "Compiler/Intel/17.0 Libraries/IMKL/2017"
|
IntelCompiler17_0: "Compiler/Intel/17.0 Libraries/IMKL/2017"
|
||||||
|
IntelCompiler18_1: "Compiler/Intel/18.1 Libraries/IMKL/2018"
|
||||||
GNUCompiler5_3: "Compiler/GNU/5.3"
|
GNUCompiler5_3: "Compiler/GNU/5.3"
|
||||||
# ------------ Defaults ----------------------------------------------
|
# ------------ Defaults ----------------------------------------------
|
||||||
IntelCompiler: "$IntelCompiler17_0"
|
IntelCompiler: "$IntelCompiler18_1"
|
||||||
GNUCompiler: "$GNUCompiler5_3"
|
GNUCompiler: "$GNUCompiler5_3"
|
||||||
# ++++++++++++ MPI +++++++++++++++++++++++++++++++++++++++++++++++++++
|
# ++++++++++++ MPI +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
MPICH3_2Intel17_0: "MPI/Intel/17.0/MPICH/3.2"
|
MPICH3_2Intel17_0: "MPI/Intel/17.0/MPICH/3.2"
|
||||||
MPICH3_2GNU5_3: "MPI/GNU/5.3/MPICH/3.2"
|
MPICH3_2Intel18_1: "MPI/Intel/18.1/MPICH/3.2.1"
|
||||||
|
MPICH3_2GNU5_3: "MPI/GNU/5.3/MPICH/3.2.1"
|
||||||
# ------------ Defaults ----------------------------------------------
|
# ------------ Defaults ----------------------------------------------
|
||||||
MPICH_GNU: "$MPICH3_2GNU5_3"
|
MPICH_GNU: "$MPICH3_2GNU5_3"
|
||||||
MPICH_Intel: "$MPICH3_2Intel17_0"
|
MPICH_Intel: "$MPICH3_2Intel18_1"
|
||||||
# ++++++++++++ PETSc +++++++++++++++++++++++++++++++++++++++++++++++++
|
# ++++++++++++ PETSc +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
PETSc3_7_6MPICH3_2Intel17_0: "Libraries/PETSc/3.7.6/Intel-17.0-MPICH-3.2"
|
PETSc3_9_1MPICH3_2Intel18_1: "Libraries/PETSc/3.9.1/Intel-18.1-MPICH-3.2.1"
|
||||||
PETSc3_7_5MPICH3_2Intel17_0: "Libraries/PETSc/3.7.5/Intel-17.0-MPICH-3.2"
|
PETSc3_9_1MPICH3_2GNU5_3: "Libraries/PETSc/3.9.1/GNU-5.3-MPICH-3.2.1"
|
||||||
PETSc3_6_4MPICH3_2Intel17_0: "Libraries/PETSc/3.6.4/Intel-17.0-MPICH-3.2"
|
|
||||||
PETSc3_7_5MPICH3_2GNU5_3: "Libraries/PETSc/3.7.5/GNU-5.3-MPICH-3.2"
|
|
||||||
# ------------ Defaults ----------------------------------------------
|
# ------------ Defaults ----------------------------------------------
|
||||||
PETSc_MPICH_Intel: "$PETSc3_7_6MPICH3_2Intel17_0"
|
PETSc_MPICH_Intel: "$PETSc3_9_1MPICH3_2Intel18_1"
|
||||||
PETSc_MPICH_GNU: "$PETSc3_7_5MPICH3_2GNU5_3"
|
PETSc_MPICH_GNU: "$PETSc3_9_1MPICH3_2GNU5_3"
|
||||||
# ++++++++++++ FEM +++++++++++++++++++++++++++++++++++++++++++++++++++
|
# ++++++++++++ FEM +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
Abaqus2016: "FEM/Abaqus/2016"
|
Abaqus2016: "FEM/Abaqus/2016"
|
||||||
Abaqus2017: "FEM/Abaqus/2017"
|
Abaqus2017: "FEM/Abaqus/2017"
|
||||||
|
@ -324,6 +324,13 @@ HybridIA:
|
||||||
- master
|
- master
|
||||||
- release
|
- release
|
||||||
|
|
||||||
|
TextureComponents:
|
||||||
|
stage: spectral
|
||||||
|
script: TextureComponents/test.py
|
||||||
|
except:
|
||||||
|
- master
|
||||||
|
- release
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
Marc_compileIfort2014:
|
Marc_compileIfort2014:
|
||||||
stage: compileMarc2014
|
stage: compileMarc2014
|
||||||
|
|
|
@ -203,7 +203,9 @@ if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel")
|
||||||
# -fast = -ipo, -O3, -no-prec-div, -static, -fp-model fast=2, and -xHost"
|
# -fast = -ipo, -O3, -no-prec-div, -static, -fp-model fast=2, and -xHost"
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set (STANDARD_CHECK "-stand f08 -standard-semantics")
|
# -assume std_mod_proc_name (included in -standard-semantics) causes problems if other modules
|
||||||
|
# (PETSc, HDF5) are not compiled with this option (https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/62172)
|
||||||
|
set (STANDARD_CHECK "-stand f08 -standard-semantics -assume nostd_mod_proc_name")
|
||||||
set (LINKER_FLAGS "${LINKER_FLAGS} -shared-intel")
|
set (LINKER_FLAGS "${LINKER_FLAGS} -shared-intel")
|
||||||
# Link against shared Intel libraries instead of static ones
|
# Link against shared Intel libraries instead of static ones
|
||||||
|
|
||||||
|
@ -215,13 +217,6 @@ if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel")
|
||||||
set (COMPILE_FLAGS "${COMPILE_FLAGS} -ftz")
|
set (COMPILE_FLAGS "${COMPILE_FLAGS} -ftz")
|
||||||
# flush underflow to zero, automatically set if -O[1,2,3]
|
# flush underflow to zero, automatically set if -O[1,2,3]
|
||||||
|
|
||||||
set (COMPILE_FLAGS "${COMPILE_FLAGS} -assume")
|
|
||||||
# assume ...
|
|
||||||
set (COMPILE_FLAGS "${COMPILE_FLAGS} byterecl")
|
|
||||||
# ... record length is given in bytes (also set by -standard-semantics)
|
|
||||||
set (COMPILE_FLAGS "${COMPILE_FLAGS},fpe_summary")
|
|
||||||
# ... print list of floating point exceptions occured during execution
|
|
||||||
|
|
||||||
set (COMPILE_FLAGS "${COMPILE_FLAGS} -diag-disable")
|
set (COMPILE_FLAGS "${COMPILE_FLAGS} -diag-disable")
|
||||||
# disables warnings ...
|
# disables warnings ...
|
||||||
set (COMPILE_FLAGS "${COMPILE_FLAGS} 5268")
|
set (COMPILE_FLAGS "${COMPILE_FLAGS} 5268")
|
||||||
|
|
|
@ -23,7 +23,7 @@ if which $1 &> /dev/null; then
|
||||||
$1 $2
|
$1 $2
|
||||||
echo -e '\n'
|
echo -e '\n'
|
||||||
else
|
else
|
||||||
echo $ does not exist
|
echo $1 not found
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
||||||
Subproject commit 186d61315bb1329deb0a8d871c4ea1b1c3dee2a5
|
Subproject commit b7d1d309146e017caa5744333c2e4a4532a6fc20
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,56 @@
|
||||||
|
5 header
|
||||||
|
seeds_fromRandom v2.0.1-1138-gfcac08c -N 50 -g 128 128 128
|
||||||
|
grid a 128 b 128 c 128
|
||||||
|
microstructures 50
|
||||||
|
randomSeed 3336946323
|
||||||
|
1_pos 2_pos 3_pos 1_euler 2_euler 3_euler microstructure
|
||||||
|
0.54457843603947365 0.84911587396210719 0.34846714169395199 146.18027121829002 137.38970467457548 64.889274068548971 1.0
|
||||||
|
0.30082506347847232 0.98313838966599176 0.44557226838658942 277.4997516434205 39.360506400353323 71.246613676352894 2.0
|
||||||
|
0.40772634005027159 0.9616152434202665 0.058204060548736787 357.09763745092783 25.490253793203657 268.023521027068 3.0
|
||||||
|
0.58904198203278091 0.72270060278093695 0.31942765324679046 350.68488850223423 130.4171465853421 250.42731366202318 4.0
|
||||||
|
0.51285660590703486 0.96889097226822973 0.65275467737350745 23.745542919457275 118.98401463018114 322.60963659419878 5.0
|
||||||
|
0.78608003485028433 0.83273743685098622 0.46591785719509976 124.52498788960992 100.66865249263579 43.350904777210218 6.0
|
||||||
|
0.65676045955005913 0.90612854270261067 0.46812684725311626 206.73481508655914 108.36640892186001 80.109515277983789 7.0
|
||||||
|
0.41091744799856139 0.019203430085754657 0.87577849258950335 294.38492822136715 146.40525644850072 307.47368257125362 8.0
|
||||||
|
0.2895339668620191 0.44890615451191845 0.98331278676555256 155.95129760119522 47.149690499466338 129.03566717283138 9.0
|
||||||
|
0.19961281156351873 0.52634383062850942 0.65188451822931848 147.12314868626314 111.70076966247582 118.18572187802707 10.0
|
||||||
|
0.86414247862963223 0.1358065510164656 0.66025345324864337 164.3847245485006 106.948282223783 169.81246394416348 11.0
|
||||||
|
0.22971651291623074 0.092972318577821886 0.29406405983067813 152.69170803150587 154.25570085621541 12.482717398044327 12.0
|
||||||
|
0.26338815658881415 0.34338560362947429 0.55845211616339796 34.576603888911734 112.1396081205236 231.97898012368159 13.0
|
||||||
|
0.75109304237913643 0.32426372309630619 0.24464858180476037 287.27773986438422 132.7748719439447 29.566044111233396 14.0
|
||||||
|
0.011464166371603362 0.038504815611266896 0.31848008962612995 3.6027692030412783 128.19004192002171 318.21386202740894 15.0
|
||||||
|
0.40531294455896061 0.89392258706810201 0.47360685251709117 224.94453046189483 91.073774858498993 174.6238603309032 16.0
|
||||||
|
0.53642882463725594 0.12961813440684475 0.33670742966203715 275.10050328051165 143.71902154901966 46.372591362351443 17.0
|
||||||
|
0.025264257063423813 0.86284946730733791 0.67853751997904233 286.09297442950589 84.366012495567063 168.12310601585438 18.0
|
||||||
|
0.46082042086486502 0.79920741984567956 0.84550103531963372 338.58981410067844 115.61172937509538 33.588172611417498 19.0
|
||||||
|
0.22570807057805362 0.074166418124772107 0.35703686595525042 123.22376691705952 84.092264279947017 358.5702863996658 20.0
|
||||||
|
0.05386086781200651 0.33174190751238741 0.22207351758975458 347.73707141532731 68.522081814108546 343.42676588519805 21.0
|
||||||
|
0.843158604433492 0.92955496315098074 0.64647123931005734 11.343815482295781 80.300931773797004 9.6393328996438079 22.0
|
||||||
|
0.38975306778625629 0.24157610260940071 0.71161594028191588 321.39703457206355 30.680985581522023 310.97284763119887 23.0
|
||||||
|
0.29080297238998321 0.7438587097696947 0.27827316089105131 318.66484094014749 129.93793511237541 136.82657482859585 24.0
|
||||||
|
0.39382389364070247 0.28978401907200979 0.25701142568390795 322.47065731551987 13.846167927307052 301.54027053054892 25.0
|
||||||
|
0.61050322346481545 0.13737535992809438 0.36661645869662263 352.54143971537871 57.8511858353625 133.84653788992898 26.0
|
||||||
|
0.79736663927764695 0.20513299822009629 0.79699332479250651 290.58637400802854 44.449209602954802 275.77563923277597 27.0
|
||||||
|
0.75235587126626513 0.11041486201059918 0.8131872750127791 70.389885527768058 106.61781772242031 249.0896396040977 28.0
|
||||||
|
0.47139010668774128 0.12192484253468709 0.21955576044612418 82.523861430871293 130.07642048077489 161.94830004765717 29.0
|
||||||
|
0.58577411200822327 0.55808726366080907 0.68861538513192688 4.5456602316904782 68.430488072013802 279.06105056042912 30.0
|
||||||
|
0.078221348390348527 0.38485150106633381 0.70002412594863284 44.840105036355524 52.915732353957182 321.10892793267385 31.0
|
||||||
|
0.67648574989589816 0.36189363050547918 0.1744438641736718 56.290857666353922 79.852422734452261 218.87802771695559 32.0
|
||||||
|
0.66993786328789628 0.24839196429109262 0.22913111586511459 90.545592617209479 111.73679898243722 50.777738624812869 33.0
|
||||||
|
0.97253038612350284 0.5008359837170796 0.22908814679929382 258.2784447839781 81.324197699117292 308.75839223966972 34.0
|
||||||
|
0.57267221923324418 0.57812183688041852 0.27747089968489891 44.241276881211661 104.39672542923724 263.41942696808212 35.0
|
||||||
|
0.20684173793886379 0.43993013267805814 0.65735383309297513 343.60408990114365 51.644327943351122 302.98734797140071 36.0
|
||||||
|
0.74510273339709676 0.73117975286639059 0.88155543772031653 318.38483613589898 93.903589849536274 302.06468871599935 37.0
|
||||||
|
0.96140945332061889 0.16540946028864878 0.40824265860818898 97.086714635901274 130.50888029759304 221.78895191070089 38.0
|
||||||
|
0.76663076605317781 0.85911002545479809 0.11281299879667539 163.06393615448818 43.363447677950042 338.05013375241901 39.0
|
||||||
|
0.41268673658765898 0.24787882796675886 0.57686480644197569 200.12920794363012 45.222523931505947 280.23271113977307 40.0
|
||||||
|
0.77256877568016891 0.88174830744168597 0.85149237688892054 116.81358850313981 71.413890894473454 115.54962789790765 41.0
|
||||||
|
0.26725724981852333 0.2962688497890511 0.89524301333622525 254.14781916777747 83.176346219908254 33.979304092964192 42.0
|
||||||
|
0.58047025880020098 0.57494408407976194 0.61595960318628096 334.70268656247265 42.480438737564974 177.92796756121371 43.0
|
||||||
|
0.52102440567302477 0.7145666401672387 0.21858506378351775 178.43052543384653 153.21174542887405 324.42119289220273 44.0
|
||||||
|
0.77321583279723483 0.96647383074249249 0.5062943967878929 230.42797261926012 99.507340620849902 169.75007570059978 45.0
|
||||||
|
0.3364367026326 0.45790436703027437 0.27197669375839439 218.70321774431869 60.819721511735267 217.80859716828817 46.0
|
||||||
|
0.41823530342173082 0.077759964416919514 0.66113722050248613 189.26108507623661 50.425749120256064 78.019878648192815 47.0
|
||||||
|
0.8754300454839713 0.094969845269609401 0.42632522145904467 250.899467172654 33.14582034295529 150.05888748377424 48.0
|
||||||
|
0.1950290416819265 0.59474264558516909 0.93298429220138601 232.236367110732 47.258083025548189 34.83912199551915 49.0
|
||||||
|
0.91993054481220637 0.48586729788450678 0.10933899155043697 246.05124283375034 131.539860458254 249.58739755697601 50.0
|
|
@ -16,24 +16,26 @@ from damask import version as DAMASKVERSION
|
||||||
# Use the version in $PATH
|
# Use the version in $PATH
|
||||||
fortCmd = "ifort"
|
fortCmd = "ifort"
|
||||||
|
|
||||||
# -free to use free-format FORTRAN 90 syntax
|
# -free to use free-format FORTRAN 90 syntax
|
||||||
# -O <0-3> optimization level
|
# -O <0-3> optimization level
|
||||||
# -fpp use FORTRAN preprocessor on source code
|
# -fpp use FORTRAN preprocessor on source code
|
||||||
# -openmp build with openMP support
|
# -openmp build with openMP support
|
||||||
# -w90 -w95 suppress messages about use of non-standard Fortran (previous version of abaqus_v6.env only)
|
# -w90 -w95 suppress messages about use of non-standard Fortran (previous version of abaqus_v6.env only)
|
||||||
# -WB turn a compile-time bounds check into a warning (previous version of abaqus_v6.env only)
|
# -WB turn a compile-time bounds check into a warning (previous version of abaqus_v6.env only)
|
||||||
# -mP2OPT_hpo_vec_divbyzero=F inofficial compiler switch, proposed by abaqus but highly dubios (previous version of abaqus_v6.env only)
|
# -mP2OPT_hpo_vec_divbyzero=F inofficial compiler switch, proposed by abaqus but highly dubios (previous version of abaqus_v6.env only)
|
||||||
# -ftz flush underflow to zero
|
# -ftz flush underflow to zero
|
||||||
# -diag-disable 5268 disable warnings about line length > 132 (only comments there anyway)
|
# -diag-disable 5268 disable warnings about line length > 132 (only comments there anyway)
|
||||||
# -implicitnone assume no implicit types (e.g. i for integer)
|
# -implicitnone assume no implicit types (e.g. i for integer)
|
||||||
# -assume byterecl count record length in bytes
|
# -standard-semantics sets standard (Fortran 2008) and some other conventions
|
||||||
# -real-size 64 -DFLOAT=8 assume size of real to be 8 bytes, matches our definition of pReal
|
# -assume nostd_mod_proc_name avoid problems with libraries compiled without that option
|
||||||
# -integer-size 32 -DINT=4 assume size of integer to be 4 bytes, matches our definition of pInt
|
# -real-size 64 -DFLOAT=8 assume size of real to be 8 bytes, matches our definition of pReal
|
||||||
|
# -integer-size 32 -DINT=4 assume size of integer to be 4 bytes, matches our definition of pInt
|
||||||
|
|
||||||
compile_fortran = (fortCmd + " -c -fPIC -auto -shared-intel " +
|
compile_fortran = (fortCmd + " -c -fPIC -auto -shared-intel " +
|
||||||
"-I%I -free -O1 -fpp -openmp " +
|
"-I%I -free -O1 -fpp -openmp " +
|
||||||
"-ftz -diag-disable 5268 " +
|
"-ftz -diag-disable 5268 " +
|
||||||
"-implicitnone -assume byterecl -stand f08 -standard-semantics " +
|
"-implicitnone -standard-semantics " +
|
||||||
|
"-assume nostd_mod_proc_name " +
|
||||||
"-real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4 " +
|
"-real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4 " +
|
||||||
'-DDAMASKVERSION=\\\"%s\\\"'%DAMASKVERSION)
|
'-DDAMASKVERSION=\\\"%s\\\"'%DAMASKVERSION)
|
||||||
|
|
||||||
|
|
|
@ -16,24 +16,25 @@ from damask import version as DAMASKVERSION
|
||||||
# Use the version in $PATH
|
# Use the version in $PATH
|
||||||
fortCmd = "ifort"
|
fortCmd = "ifort"
|
||||||
|
|
||||||
# -free to use free-format FORTRAN 90 syntax
|
# -free to use free-format FORTRAN 90 syntax
|
||||||
# -O <0-3> optimization level
|
# -O <0-3> optimization level
|
||||||
# -fpp use FORTRAN preprocessor on source code
|
# -fpp use FORTRAN preprocessor on source code
|
||||||
# -openmp build with openMP support
|
# -w90 -w95 suppress messages about use of non-standard Fortran (previous version of abaqus_v6.env only)
|
||||||
# -w90 -w95 suppress messages about use of non-standard Fortran (previous version of abaqus_v6.env only)
|
# -WB turn a compile-time bounds check into a warning (previous version of abaqus_v6.env only)
|
||||||
# -WB turn a compile-time bounds check into a warning (previous version of abaqus_v6.env only)
|
# -mP2OPT_hpo_vec_divbyzero=F inofficial compiler switch, proposed by abaqus but highly dubios (previous version of abaqus_v6.env only)
|
||||||
# -mP2OPT_hpo_vec_divbyzero=F inofficial compiler switch, proposed by abaqus but highly dubios (previous version of abaqus_v6.env only)
|
# -ftz flush underflow to zero
|
||||||
# -ftz flush underflow to zero
|
# -diag-disable 5268 disable warnings about line length > 132 (only comments there anyway)
|
||||||
# -diag-disable 5268 disable warnings about line length > 132 (only comments there anyway)
|
# -implicitnone assume no implicit types (e.g. i for integer)
|
||||||
# -implicitnone assume no implicit types (e.g. i for integer)
|
# -standard-semantics sets standard (Fortran 2008) and some other conventions
|
||||||
# -assume byterecl count record length in bytes
|
# -assume nostd_mod_proc_name avoid problems with libraries compiled without that option
|
||||||
# -real-size 64 -DFLOAT=8 assume size of real to be 8 bytes, matches our definition of pReal
|
# -real-size 64 -DFLOAT=8 assume size of real to be 8 bytes, matches our definition of pReal
|
||||||
# -integer-size 32 -DINT=4 assume size of integer to be 4 bytes, matches our definition of pInt
|
# -integer-size 32 -DINT=4 assume size of integer to be 4 bytes, matches our definition of pInt
|
||||||
|
|
||||||
compile_fortran = (fortCmd + " -c -fPIC -auto -shared-intel " +
|
compile_fortran = (fortCmd + " -c -fPIC -auto -shared-intel " +
|
||||||
"-I%I -free -O1 -fpp " +
|
"-I%I -free -O1 -fpp " +
|
||||||
"-ftz -diag-disable 5268 " +
|
"-ftz -diag-disable 5268 " +
|
||||||
"-implicitnone -assume byterecl -stand f08 -standard-semantics " +
|
"-implicitnone -standard-semantics " +
|
||||||
|
"-assume nostd_mod_proc_name " +
|
||||||
"-real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4 " +
|
"-real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4 " +
|
||||||
'-DDAMASKVERSION=\\\"%s\\\"'%DAMASKVERSION)
|
'-DDAMASKVERSION=\\\"%s\\\"'%DAMASKVERSION)
|
||||||
|
|
||||||
|
|
|
@ -416,7 +416,7 @@ then
|
||||||
PROFILE=" $PROFILE -pg"
|
PROFILE=" $PROFILE -pg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FORT_OPT="-c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -mp1 -WB"
|
FORT_OPT="-c -implicitnone -stand f08 -standard-semantics -assume nostd_std_mod_proc_name -safe_cray_ptr -mp1 -WB"
|
||||||
if test "$MTHREAD" = "OPENMP"
|
if test "$MTHREAD" = "OPENMP"
|
||||||
then
|
then
|
||||||
FORT_OPT=" $FORT_OPT -openmp"
|
FORT_OPT=" $FORT_OPT -openmp"
|
||||||
|
@ -458,21 +458,21 @@ DAMASKVERSION="'"$DAMASKVERSION"'"
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_std_mod_proc_name -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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_std_mod_proc_name -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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_std_mod_proc_name -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
|
@ -492,21 +492,21 @@ then
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_std_mod_proc_name -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=2014.2.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_std_mod_proc_name -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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_std_mod_proc_name -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=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014.2 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
|
|
|
@ -410,7 +410,7 @@ then
|
||||||
PROFILE="-prof-gen=srcpos"
|
PROFILE="-prof-gen=srcpos"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FORT_OPT="-c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -mp1 -WB"
|
FORT_OPT="-c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -safe_cray_ptr -mp1 -WB"
|
||||||
if test "$MTHREAD" = "OPENMP"
|
if test "$MTHREAD" = "OPENMP"
|
||||||
then
|
then
|
||||||
FORT_OPT=" $FORT_OPT -openmp"
|
FORT_OPT=" $FORT_OPT -openmp"
|
||||||
|
@ -452,21 +452,21 @@ DAMASKVERSION="'"$DAMASKVERSION"'"
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
|
@ -486,21 +486,21 @@ then
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2014 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
|
|
|
@ -419,7 +419,7 @@ then
|
||||||
PROFILE=" $PROFILE -pg"
|
PROFILE=" $PROFILE -pg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FORT_OPT="-c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -mp1 -WB"
|
FORT_OPT="-c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -safe_cray_ptr -mp1 -WB"
|
||||||
if test "$MTHREAD" = "OPENMP"
|
if test "$MTHREAD" = "OPENMP"
|
||||||
then
|
then
|
||||||
FORT_OPT=" $FORT_OPT -openmp"
|
FORT_OPT=" $FORT_OPT -openmp"
|
||||||
|
@ -454,21 +454,21 @@ fi
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
|
@ -488,21 +488,21 @@ then
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2015 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
-openmp -openmp_report2 -openmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
|
|
|
@ -449,7 +449,7 @@ then
|
||||||
PROFILE=" $PROFILE -pg"
|
PROFILE=" $PROFILE -pg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FORT_OPT="-c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -mp1 -WB -fp-model source"
|
FORT_OPT="-c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -safe_cray_ptr -mp1 -WB -fp-model source"
|
||||||
if test "$MTHREAD" = "OPENMP"
|
if test "$MTHREAD" = "OPENMP"
|
||||||
then
|
then
|
||||||
FORT_OPT=" $FORT_OPT -qopenmp"
|
FORT_OPT=" $FORT_OPT -qopenmp"
|
||||||
|
@ -484,21 +484,21 @@ fi
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
|
@ -518,21 +518,21 @@ then
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-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 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS"
|
||||||
|
|
|
@ -457,7 +457,7 @@ then
|
||||||
PROFILE=" $PROFILE -pg"
|
PROFILE=" $PROFILE -pg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FORT_OPT="-c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr -mp1 -WB -fp-model source"
|
FORT_OPT="-c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -safe_cray_ptr -mp1 -WB -fp-model source"
|
||||||
if test "$MTHREAD" = "OPENMP"
|
if test "$MTHREAD" = "OPENMP"
|
||||||
then
|
then
|
||||||
FORT_OPT=" $FORT_OPT -qopenmp"
|
FORT_OPT=" $FORT_OPT -qopenmp"
|
||||||
|
@ -494,21 +494,21 @@ fi
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTLOWMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -O0 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTRANMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -O1 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias -O2 $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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTHIGHMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias -O2 $I8FFLAGS -I$MARC_SOURCE/common \
|
||||||
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
|
@ -528,21 +528,21 @@ then
|
||||||
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOW="$FCOMP $FORT_OPT $PROFILE $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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTLOWMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTLOWMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRAN="$FCOMP $FORT_OPT $PROFILE $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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTRANMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTRANMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGH="$FCOMP $FORT_OPT $PROFILE -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-enable sc3 -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
DFORTHIGHMP="$FCOMP -c -assume byterecl -stand f08 -standard-semantics -safe_cray_ptr $PROFILE -zero -mp1 -WB -fno-alias $I8FFLAGS -I$MARC_SOURCE/common \
|
DFORTHIGHMP="$FCOMP -c -implicitnone -stand f08 -standard-semantics -assume nostd_mod_proc_name -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=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
-fpp -ftz -diag-disable 5268 -warn declarations -warn general -warn usage -warn interfaces -warn ignore_loc -warn alignments -DMarc4DAMASK=2016 -DDAMASKVERSION=$DAMASKVERSION \
|
||||||
-qopenmp -qopenmp-threadprivate=compat\
|
-qopenmp -qopenmp-threadprivate=compat\
|
||||||
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
-I$MARC_SOURCE/${BCS_DIR}/common -I$MARC_SOURCE/mumpssolver/include $I8DEFINES -DLinux -DLINUX -DLinux_intel $FDEFINES $DDM $SOLVERFLAGS -I$KDTREE2_MOD"
|
||||||
|
|
|
@ -16,7 +16,7 @@ The Intel Fortran compiler needs to be installed.
|
||||||
|
|
||||||
APPENDIX:
|
APPENDIX:
|
||||||
|
|
||||||
The structure of this directory should be (VERSION = 2010.2 or 2011 or 2012 or 2013 or 2014):
|
The structure of this directory should be (VERSION = 20XX or 20XX.Y)
|
||||||
|
|
||||||
./installation.txt this text
|
./installation.txt this text
|
||||||
./apply_MPIE_modifications script file to apply modifications to the installation
|
./apply_MPIE_modifications script file to apply modifications to the installation
|
||||||
|
|
|
@ -74,6 +74,7 @@ add_library (PLASTIC OBJECT
|
||||||
"plastic_disloUCLA.f90"
|
"plastic_disloUCLA.f90"
|
||||||
"plastic_isotropic.f90"
|
"plastic_isotropic.f90"
|
||||||
"plastic_phenopowerlaw.f90"
|
"plastic_phenopowerlaw.f90"
|
||||||
|
"plastic_kinematichardening.f90"
|
||||||
"plastic_nonlocal.f90"
|
"plastic_nonlocal.f90"
|
||||||
"plastic_none.f90")
|
"plastic_none.f90")
|
||||||
add_dependencies(PLASTIC DAMASK_HELPERS)
|
add_dependencies(PLASTIC DAMASK_HELPERS)
|
||||||
|
|
|
@ -162,6 +162,7 @@ subroutine CPFEM_init
|
||||||
write(6,'(/,a)') ' <<<+- CPFEM init -+>>>'
|
write(6,'(/,a)') ' <<<+- CPFEM 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"
|
||||||
|
flush(6)
|
||||||
endif mainProcess
|
endif mainProcess
|
||||||
|
|
||||||
! initialize stress and jacobian to zero
|
! initialize stress and jacobian to zero
|
||||||
|
@ -242,8 +243,8 @@ subroutine CPFEM_init
|
||||||
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
|
||||||
|
flush(6)
|
||||||
endif
|
endif
|
||||||
flush(6)
|
|
||||||
|
|
||||||
end subroutine CPFEM_init
|
end subroutine CPFEM_init
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@ program DAMASK_spectral
|
||||||
compiler_version, &
|
compiler_version, &
|
||||||
compiler_options
|
compiler_options
|
||||||
#endif
|
#endif
|
||||||
|
#include <petsc/finclude/petscsys.h>
|
||||||
|
use PETScsys
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pInt, &
|
pInt, &
|
||||||
pLongInt, &
|
pLongInt, &
|
||||||
|
@ -70,7 +72,6 @@ program DAMASK_spectral
|
||||||
DAMAGE_nonlocal_ID
|
DAMAGE_nonlocal_ID
|
||||||
use spectral_utilities, only: &
|
use spectral_utilities, only: &
|
||||||
utilities_init, &
|
utilities_init, &
|
||||||
utilities_destroy, &
|
|
||||||
tSolutionState, &
|
tSolutionState, &
|
||||||
tLoadCase, &
|
tLoadCase, &
|
||||||
cutBack, &
|
cutBack, &
|
||||||
|
@ -84,11 +85,8 @@ program DAMASK_spectral
|
||||||
use spectral_damage
|
use spectral_damage
|
||||||
use spectral_thermal
|
use spectral_thermal
|
||||||
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
#include <petsc/finclude/petscsys.h>
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! variables related to information from load case and geom file
|
! variables related to information from load case and geom file
|
||||||
real(pReal), dimension(9) :: temp_valueVector = 0.0_pReal !< temporarily from loadcase file when reading in tensors (initialize to 0.0)
|
real(pReal), dimension(9) :: temp_valueVector = 0.0_pReal !< temporarily from loadcase file when reading in tensors (initialize to 0.0)
|
||||||
|
@ -143,18 +141,11 @@ program DAMASK_spectral
|
||||||
integer(pInt), parameter :: maxByteOut = 2147483647-4096 !< limit of one file output write https://trac.mpich.org/projects/mpich/ticket/1742
|
integer(pInt), parameter :: maxByteOut = 2147483647-4096 !< limit of one file output write https://trac.mpich.org/projects/mpich/ticket/1742
|
||||||
integer(pInt), parameter :: maxRealOut = maxByteOut/pReal
|
integer(pInt), parameter :: maxRealOut = maxByteOut/pReal
|
||||||
integer(pLongInt), dimension(2) :: outputIndex
|
integer(pLongInt), dimension(2) :: outputIndex
|
||||||
PetscErrorCode :: ierr
|
integer :: ierr
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
quit, &
|
quit
|
||||||
MPI_file_open, &
|
|
||||||
MPI_file_close, &
|
|
||||||
MPI_file_seek, &
|
|
||||||
MPI_file_get_position, &
|
|
||||||
MPI_file_write, &
|
|
||||||
MPI_abort, &
|
|
||||||
MPI_finalize, &
|
|
||||||
MPI_allreduce, &
|
|
||||||
PETScFinalize
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! init DAMASK (all modules)
|
! init DAMASK (all modules)
|
||||||
|
@ -442,10 +433,9 @@ program DAMASK_spectral
|
||||||
do i = 1, size(materialpoint_results,3)/(maxByteOut/(materialpoint_sizeResults*pReal))+1 ! slice the output of my process in chunks not exceeding the limit for one output
|
do i = 1, size(materialpoint_results,3)/(maxByteOut/(materialpoint_sizeResults*pReal))+1 ! slice the output of my process in chunks not exceeding the limit for one output
|
||||||
outputIndex = int([(i-1_pInt)*((maxRealOut)/materialpoint_sizeResults)+1_pInt, & ! QUESTION: why not starting i at 0 instead of murky 1?
|
outputIndex = int([(i-1_pInt)*((maxRealOut)/materialpoint_sizeResults)+1_pInt, & ! QUESTION: why not starting i at 0 instead of murky 1?
|
||||||
min(i*((maxRealOut)/materialpoint_sizeResults),size(materialpoint_results,3))],pLongInt)
|
min(i*((maxRealOut)/materialpoint_sizeResults),size(materialpoint_results,3))],pLongInt)
|
||||||
call MPI_file_write(resUnit, &
|
call MPI_file_write(resUnit,reshape(materialpoint_results(:,:,outputIndex(1):outputIndex(2)), &
|
||||||
reshape(materialpoint_results(:,:,outputIndex(1):outputIndex(2)), &
|
[(outputIndex(2)-outputIndex(1)+1)*int(materialpoint_sizeResults,pLongInt)]), &
|
||||||
[(outputIndex(2)-outputIndex(1)+1)*int(materialpoint_sizeResults,pLongInt)]), &
|
int((outputIndex(2)-outputIndex(1)+1)*int(materialpoint_sizeResults,pLongInt)), &
|
||||||
(outputIndex(2)-outputIndex(1)+1)*int(materialpoint_sizeResults,pLongInt), &
|
|
||||||
MPI_DOUBLE, MPI_STATUS_IGNORE, ierr)
|
MPI_DOUBLE, MPI_STATUS_IGNORE, ierr)
|
||||||
if (ierr /= 0_pInt) call IO_error(error_ID=894_pInt, ext_msg='MPI_file_write')
|
if (ierr /= 0_pInt) call IO_error(error_ID=894_pInt, ext_msg='MPI_file_write')
|
||||||
enddo
|
enddo
|
||||||
|
@ -634,8 +624,8 @@ program DAMASK_spectral
|
||||||
outputIndex=int([(i-1_pInt)*((maxRealOut)/materialpoint_sizeResults)+1_pInt, &
|
outputIndex=int([(i-1_pInt)*((maxRealOut)/materialpoint_sizeResults)+1_pInt, &
|
||||||
min(i*((maxRealOut)/materialpoint_sizeResults),size(materialpoint_results,3))],pLongInt)
|
min(i*((maxRealOut)/materialpoint_sizeResults),size(materialpoint_results,3))],pLongInt)
|
||||||
call MPI_file_write(resUnit,reshape(materialpoint_results(:,:,outputIndex(1):outputIndex(2)),&
|
call MPI_file_write(resUnit,reshape(materialpoint_results(:,:,outputIndex(1):outputIndex(2)),&
|
||||||
[(outputIndex(2)-outputIndex(1)+1)*int(materialpoint_sizeResults,pLongInt)]), &
|
[(outputIndex(2)-outputIndex(1)+1)*int(materialpoint_sizeResults,pLongInt)]), &
|
||||||
(outputIndex(2)-outputIndex(1)+1)*int(materialpoint_sizeResults,pLongInt),&
|
int((outputIndex(2)-outputIndex(1)+1)*int(materialpoint_sizeResults,pLongInt)),&
|
||||||
MPI_DOUBLE, MPI_STATUS_IGNORE, ierr)
|
MPI_DOUBLE, MPI_STATUS_IGNORE, ierr)
|
||||||
if(ierr /=0_pInt) call IO_error(894_pInt, ext_msg='MPI_file_write')
|
if(ierr /=0_pInt) call IO_error(894_pInt, ext_msg='MPI_file_write')
|
||||||
enddo
|
enddo
|
||||||
|
@ -682,22 +672,12 @@ end program DAMASK_spectral
|
||||||
!> stderr. Exit code 3 signals no severe problems, but some increments did not converge
|
!> stderr. Exit code 3 signals no severe problems, but some increments did not converge
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine quit(stop_id)
|
subroutine quit(stop_id)
|
||||||
|
#include <petsc/finclude/petscsys.h>
|
||||||
|
use MPI
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pInt
|
pInt
|
||||||
use spectral_mech_Basic, only: &
|
|
||||||
BasicPETSC_destroy
|
|
||||||
use spectral_mech_Polarisation, only: &
|
|
||||||
Polarisation_destroy
|
|
||||||
use spectral_damage, only: &
|
|
||||||
spectral_damage_destroy
|
|
||||||
use spectral_thermal, only: &
|
|
||||||
spectral_thermal_destroy
|
|
||||||
use spectral_utilities, only: &
|
|
||||||
utilities_destroy
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
|
|
||||||
#include <petsc/finclude/petscsys.h>
|
implicit none
|
||||||
integer(pInt), intent(in) :: stop_id
|
integer(pInt), intent(in) :: stop_id
|
||||||
integer, dimension(8) :: dateAndTime ! type default integer
|
integer, dimension(8) :: dateAndTime ! type default integer
|
||||||
integer(pInt) :: error = 0_pInt
|
integer(pInt) :: error = 0_pInt
|
||||||
|
@ -705,14 +685,7 @@ subroutine quit(stop_id)
|
||||||
logical :: ErrorInQuit
|
logical :: ErrorInQuit
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
PETScFinalize, &
|
PETScFinalize
|
||||||
MPI_finalize
|
|
||||||
|
|
||||||
call BasicPETSC_destroy()
|
|
||||||
call Polarisation_destroy()
|
|
||||||
call spectral_damage_destroy()
|
|
||||||
call spectral_thermal_destroy()
|
|
||||||
call utilities_destroy()
|
|
||||||
|
|
||||||
call PETScFinalize(ierr)
|
call PETScFinalize(ierr)
|
||||||
if (ierr /= 0) write(6,'(a)') ' Error in PETScFinalize'
|
if (ierr /= 0) write(6,'(a)') ' Error in PETScFinalize'
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "plastic_none.f90"
|
#include "plastic_none.f90"
|
||||||
#include "plastic_isotropic.f90"
|
#include "plastic_isotropic.f90"
|
||||||
#include "plastic_phenopowerlaw.f90"
|
#include "plastic_phenopowerlaw.f90"
|
||||||
|
#include "plastic_kinematichardening.f90"
|
||||||
#include "plastic_dislotwin.f90"
|
#include "plastic_dislotwin.f90"
|
||||||
#include "plastic_disloUCLA.f90"
|
#include "plastic_disloUCLA.f90"
|
||||||
#include "plastic_nonlocal.f90"
|
#include "plastic_nonlocal.f90"
|
||||||
|
|
|
@ -74,6 +74,7 @@ subroutine constitutive_init()
|
||||||
PLASTICITY_none_ID, &
|
PLASTICITY_none_ID, &
|
||||||
PLASTICITY_isotropic_ID, &
|
PLASTICITY_isotropic_ID, &
|
||||||
PLASTICITY_phenopowerlaw_ID, &
|
PLASTICITY_phenopowerlaw_ID, &
|
||||||
|
PLASTICITY_kinehardening_ID, &
|
||||||
PLASTICITY_dislotwin_ID, &
|
PLASTICITY_dislotwin_ID, &
|
||||||
PLASTICITY_disloucla_ID, &
|
PLASTICITY_disloucla_ID, &
|
||||||
PLASTICITY_nonlocal_ID ,&
|
PLASTICITY_nonlocal_ID ,&
|
||||||
|
@ -95,6 +96,7 @@ subroutine constitutive_init()
|
||||||
PLASTICITY_NONE_label, &
|
PLASTICITY_NONE_label, &
|
||||||
PLASTICITY_ISOTROPIC_label, &
|
PLASTICITY_ISOTROPIC_label, &
|
||||||
PLASTICITY_PHENOPOWERLAW_label, &
|
PLASTICITY_PHENOPOWERLAW_label, &
|
||||||
|
PLASTICITY_KINEHARDENING_label, &
|
||||||
PLASTICITY_DISLOTWIN_label, &
|
PLASTICITY_DISLOTWIN_label, &
|
||||||
PLASTICITY_DISLOUCLA_label, &
|
PLASTICITY_DISLOUCLA_label, &
|
||||||
PLASTICITY_NONLOCAL_label, &
|
PLASTICITY_NONLOCAL_label, &
|
||||||
|
@ -113,6 +115,7 @@ subroutine constitutive_init()
|
||||||
use plastic_none
|
use plastic_none
|
||||||
use plastic_isotropic
|
use plastic_isotropic
|
||||||
use plastic_phenopowerlaw
|
use plastic_phenopowerlaw
|
||||||
|
use plastic_kinehardening
|
||||||
use plastic_dislotwin
|
use plastic_dislotwin
|
||||||
use plastic_disloucla
|
use plastic_disloucla
|
||||||
use plastic_nonlocal
|
use plastic_nonlocal
|
||||||
|
@ -156,6 +159,7 @@ subroutine constitutive_init()
|
||||||
if (any(phase_plasticity == PLASTICITY_NONE_ID)) call plastic_none_init
|
if (any(phase_plasticity == PLASTICITY_NONE_ID)) call plastic_none_init
|
||||||
if (any(phase_plasticity == PLASTICITY_ISOTROPIC_ID)) call plastic_isotropic_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_ISOTROPIC_ID)) call plastic_isotropic_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_PHENOPOWERLAW_ID)) call plastic_phenopowerlaw_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_PHENOPOWERLAW_ID)) call plastic_phenopowerlaw_init(FILEUNIT)
|
||||||
|
if (any(phase_plasticity == PLASTICITY_KINEHARDENING_ID)) call plastic_kinehardening_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_DISLOTWIN_ID)) call plastic_dislotwin_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_DISLOTWIN_ID)) call plastic_dislotwin_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_DISLOUCLA_ID)) call plastic_disloucla_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_DISLOUCLA_ID)) call plastic_disloucla_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) then
|
if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) then
|
||||||
|
@ -214,6 +218,11 @@ subroutine constitutive_init()
|
||||||
thisNoutput => plastic_phenopowerlaw_Noutput
|
thisNoutput => plastic_phenopowerlaw_Noutput
|
||||||
thisOutput => plastic_phenopowerlaw_output
|
thisOutput => plastic_phenopowerlaw_output
|
||||||
thisSize => plastic_phenopowerlaw_sizePostResult
|
thisSize => plastic_phenopowerlaw_sizePostResult
|
||||||
|
case (PLASTICITY_KINEHARDENING_ID) plasticityType
|
||||||
|
outputName = PLASTICITY_KINEHARDENING_label
|
||||||
|
thisNoutput => plastic_kinehardening_Noutput
|
||||||
|
thisOutput => plastic_kinehardening_output
|
||||||
|
thisSize => plastic_kinehardening_sizePostResult
|
||||||
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
||||||
outputName = PLASTICITY_DISLOTWIN_label
|
outputName = PLASTICITY_DISLOTWIN_label
|
||||||
thisNoutput => plastic_dislotwin_Noutput
|
thisNoutput => plastic_dislotwin_Noutput
|
||||||
|
@ -472,6 +481,7 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar3333, dLp_dFi3333, Tstar_v
|
||||||
PLASTICITY_NONE_ID, &
|
PLASTICITY_NONE_ID, &
|
||||||
PLASTICITY_ISOTROPIC_ID, &
|
PLASTICITY_ISOTROPIC_ID, &
|
||||||
PLASTICITY_PHENOPOWERLAW_ID, &
|
PLASTICITY_PHENOPOWERLAW_ID, &
|
||||||
|
PLASTICITY_KINEHARDENING_ID, &
|
||||||
PLASTICITY_DISLOTWIN_ID, &
|
PLASTICITY_DISLOTWIN_ID, &
|
||||||
PLASTICITY_DISLOUCLA_ID, &
|
PLASTICITY_DISLOUCLA_ID, &
|
||||||
PLASTICITY_NONLOCAL_ID
|
PLASTICITY_NONLOCAL_ID
|
||||||
|
@ -479,6 +489,8 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar3333, dLp_dFi3333, Tstar_v
|
||||||
plastic_isotropic_LpAndItsTangent
|
plastic_isotropic_LpAndItsTangent
|
||||||
use plastic_phenopowerlaw, only: &
|
use plastic_phenopowerlaw, only: &
|
||||||
plastic_phenopowerlaw_LpAndItsTangent
|
plastic_phenopowerlaw_LpAndItsTangent
|
||||||
|
use plastic_kinehardening, only: &
|
||||||
|
plastic_kinehardening_LpAndItsTangent
|
||||||
use plastic_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
plastic_dislotwin_LpAndItsTangent
|
plastic_dislotwin_LpAndItsTangent
|
||||||
use plastic_disloucla, only: &
|
use plastic_disloucla, only: &
|
||||||
|
@ -522,18 +534,20 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar3333, dLp_dFi3333, Tstar_v
|
||||||
Lp = 0.0_pReal
|
Lp = 0.0_pReal
|
||||||
dLp_dMstar = 0.0_pReal
|
dLp_dMstar = 0.0_pReal
|
||||||
case (PLASTICITY_ISOTROPIC_ID) plasticityType
|
case (PLASTICITY_ISOTROPIC_ID) plasticityType
|
||||||
call plastic_isotropic_LpAndItsTangent(Lp,dLp_dMstar,Mstar_v,ipc,ip,el)
|
call plastic_isotropic_LpAndItsTangent (Lp,dLp_dMstar,Mstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID) plasticityType
|
case (PLASTICITY_PHENOPOWERLAW_ID) plasticityType
|
||||||
call plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMstar,Mstar_v,ipc,ip,el)
|
call plastic_phenopowerlaw_LpAndItsTangent (Lp,dLp_dMstar,Mstar_v,ipc,ip,el)
|
||||||
|
case (PLASTICITY_KINEHARDENING_ID) plasticityType
|
||||||
|
call plastic_kinehardening_LpAndItsTangent (Lp,dLp_dMstar,Mstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_NONLOCAL_ID) plasticityType
|
case (PLASTICITY_NONLOCAL_ID) plasticityType
|
||||||
call plastic_nonlocal_LpAndItsTangent(Lp,dLp_dMstar,Mstar_v, &
|
call plastic_nonlocal_LpAndItsTangent (Lp,dLp_dMstar,Mstar_v, &
|
||||||
temperature(ho)%p(tme),ip,el)
|
temperature(ho)%p(tme),ip,el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
||||||
call plastic_dislotwin_LpAndItsTangent(Lp,dLp_dMstar,Mstar_v, &
|
call plastic_dislotwin_LpAndItsTangent (Lp,dLp_dMstar,Mstar_v, &
|
||||||
temperature(ho)%p(tme),ipc,ip,el)
|
temperature(ho)%p(tme),ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOUCLA_ID) plasticityType
|
case (PLASTICITY_DISLOUCLA_ID) plasticityType
|
||||||
call plastic_disloucla_LpAndItsTangent(Lp,dLp_dMstar,Mstar_v, &
|
call plastic_disloucla_LpAndItsTangent (Lp,dLp_dMstar,Mstar_v, &
|
||||||
temperature(ho)%p(tme), ipc,ip,el)
|
temperature(ho)%p(tme), ipc,ip,el)
|
||||||
end select plasticityType
|
end select plasticityType
|
||||||
|
|
||||||
dLp_dTstar3333 = math_Plain99to3333(dLp_dMstar)
|
dLp_dTstar3333 = math_Plain99to3333(dLp_dMstar)
|
||||||
|
@ -717,7 +731,7 @@ end function constitutive_initialFi
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns the 2nd Piola-Kirchhoff stress tensor and its tangent with respect to
|
!> @brief returns the 2nd Piola-Kirchhoff stress tensor and its tangent with respect to
|
||||||
!> the elastic deformation gradient depending on the selected elastic law (so far no case switch
|
!> the elastic deformation gradient depending on the selected elastic law (so far no case switch
|
||||||
!! because only hooke is implemented
|
!! because only Hooke is implemented
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_TandItsTangent(T, dT_dFe, dT_dFi, Fe, Fi, ipc, ip, el)
|
subroutine constitutive_TandItsTangent(T, dT_dFe, dT_dFi, Fe, Fi, ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
|
@ -844,6 +858,7 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, subdt, subfra
|
||||||
PLASTICITY_none_ID, &
|
PLASTICITY_none_ID, &
|
||||||
PLASTICITY_isotropic_ID, &
|
PLASTICITY_isotropic_ID, &
|
||||||
PLASTICITY_phenopowerlaw_ID, &
|
PLASTICITY_phenopowerlaw_ID, &
|
||||||
|
PLASTICITY_kinehardening_ID, &
|
||||||
PLASTICITY_dislotwin_ID, &
|
PLASTICITY_dislotwin_ID, &
|
||||||
PLASTICITY_disloucla_ID, &
|
PLASTICITY_disloucla_ID, &
|
||||||
PLASTICITY_nonlocal_ID, &
|
PLASTICITY_nonlocal_ID, &
|
||||||
|
@ -855,6 +870,8 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, subdt, subfra
|
||||||
plastic_isotropic_dotState
|
plastic_isotropic_dotState
|
||||||
use plastic_phenopowerlaw, only: &
|
use plastic_phenopowerlaw, only: &
|
||||||
plastic_phenopowerlaw_dotState
|
plastic_phenopowerlaw_dotState
|
||||||
|
use plastic_kinehardening, only: &
|
||||||
|
plastic_kinehardening_dotState
|
||||||
use plastic_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
plastic_dislotwin_dotState
|
plastic_dislotwin_dotState
|
||||||
use plastic_disloucla, only: &
|
use plastic_disloucla, only: &
|
||||||
|
@ -905,6 +922,8 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, subdt, subfra
|
||||||
call plastic_isotropic_dotState (Tstar_v,ipc,ip,el)
|
call plastic_isotropic_dotState (Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID) plasticityType
|
case (PLASTICITY_PHENOPOWERLAW_ID) plasticityType
|
||||||
call plastic_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
call plastic_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
||||||
|
case (PLASTICITY_KINEHARDENING_ID) plasticityType
|
||||||
|
call plastic_kinehardening_dotState(Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
||||||
call plastic_dislotwin_dotState (Tstar_v,temperature(ho)%p(tme), &
|
call plastic_dislotwin_dotState (Tstar_v,temperature(ho)%p(tme), &
|
||||||
ipc,ip,el)
|
ipc,ip,el)
|
||||||
|
@ -959,10 +978,13 @@ subroutine constitutive_collectDeltaState(Tstar_v, Fe, ipc, ip, el)
|
||||||
phase_source, &
|
phase_source, &
|
||||||
phase_Nsources, &
|
phase_Nsources, &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
|
PLASTICITY_KINEHARDENING_ID, &
|
||||||
PLASTICITY_NONLOCAL_ID, &
|
PLASTICITY_NONLOCAL_ID, &
|
||||||
SOURCE_damage_isoBrittle_ID, &
|
SOURCE_damage_isoBrittle_ID, &
|
||||||
SOURCE_vacancy_irradiation_ID, &
|
SOURCE_vacancy_irradiation_ID, &
|
||||||
SOURCE_vacancy_thermalfluc_ID
|
SOURCE_vacancy_thermalfluc_ID
|
||||||
|
use plastic_kinehardening, only: &
|
||||||
|
plastic_kinehardening_deltaState
|
||||||
use plastic_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
plastic_nonlocal_deltaState
|
plastic_nonlocal_deltaState
|
||||||
use source_damage_isoBrittle, only: &
|
use source_damage_isoBrittle, only: &
|
||||||
|
@ -991,15 +1013,18 @@ subroutine constitutive_collectDeltaState(Tstar_v, Fe, ipc, ip, el)
|
||||||
if (iand(debug_level(debug_constitutive), debug_levelBasic) /= 0_pInt) &
|
if (iand(debug_level(debug_constitutive), debug_levelBasic) /= 0_pInt) &
|
||||||
call system_clock(count=tick,count_rate=tickrate,count_max=maxticks)
|
call system_clock(count=tick,count_rate=tickrate,count_max=maxticks)
|
||||||
|
|
||||||
if(phase_plasticity(material_phase(ipc,ip,el)) == PLASTICITY_NONLOCAL_ID) &
|
plasticityType: select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||||
call plastic_nonlocal_deltaState(Tstar_v,ip,el)
|
case (PLASTICITY_KINEHARDENING_ID) plasticityType
|
||||||
|
call plastic_kinehardening_deltaState(Tstar_v,ipc,ip,el)
|
||||||
|
case (PLASTICITY_NONLOCAL_ID) plasticityType
|
||||||
|
call plastic_nonlocal_deltaState(Tstar_v,ip,el)
|
||||||
|
end select plasticityType
|
||||||
|
|
||||||
SourceLoop: do s = 1_pInt, phase_Nsources(material_phase(ipc,ip,el))
|
SourceLoop: do s = 1_pInt, phase_Nsources(material_phase(ipc,ip,el))
|
||||||
sourceType: select case (phase_source(s,material_phase(ipc,ip,el)))
|
sourceType: select case (phase_source(s,material_phase(ipc,ip,el)))
|
||||||
case (SOURCE_damage_isoBrittle_ID) sourceType
|
case (SOURCE_damage_isoBrittle_ID) sourceType
|
||||||
call source_damage_isoBrittle_deltaState (constitutive_homogenizedC(ipc,ip,el), Fe, &
|
call source_damage_isoBrittle_deltaState (constitutive_homogenizedC(ipc,ip,el), Fe, &
|
||||||
ipc, ip, el)
|
ipc, ip, el)
|
||||||
case (SOURCE_vacancy_irradiation_ID) sourceType
|
case (SOURCE_vacancy_irradiation_ID) sourceType
|
||||||
call source_vacancy_irradiation_deltaState(ipc, ip, el)
|
call source_vacancy_irradiation_deltaState(ipc, ip, el)
|
||||||
case (SOURCE_vacancy_thermalfluc_ID) sourceType
|
case (SOURCE_vacancy_thermalfluc_ID) sourceType
|
||||||
|
@ -1043,6 +1068,7 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
|
||||||
PLASTICITY_NONE_ID, &
|
PLASTICITY_NONE_ID, &
|
||||||
PLASTICITY_ISOTROPIC_ID, &
|
PLASTICITY_ISOTROPIC_ID, &
|
||||||
PLASTICITY_PHENOPOWERLAW_ID, &
|
PLASTICITY_PHENOPOWERLAW_ID, &
|
||||||
|
PLASTICITY_KINEHARDENING_ID, &
|
||||||
PLASTICITY_DISLOTWIN_ID, &
|
PLASTICITY_DISLOTWIN_ID, &
|
||||||
PLASTICITY_DISLOUCLA_ID, &
|
PLASTICITY_DISLOUCLA_ID, &
|
||||||
PLASTICITY_NONLOCAL_ID, &
|
PLASTICITY_NONLOCAL_ID, &
|
||||||
|
@ -1054,6 +1080,8 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
|
||||||
plastic_isotropic_postResults
|
plastic_isotropic_postResults
|
||||||
use plastic_phenopowerlaw, only: &
|
use plastic_phenopowerlaw, only: &
|
||||||
plastic_phenopowerlaw_postResults
|
plastic_phenopowerlaw_postResults
|
||||||
|
use plastic_kinehardening, only: &
|
||||||
|
plastic_kinehardening_postResults
|
||||||
use plastic_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
plastic_dislotwin_postResults
|
plastic_dislotwin_postResults
|
||||||
use plastic_disloucla, only: &
|
use plastic_disloucla, only: &
|
||||||
|
@ -1102,6 +1130,9 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID) plasticityType
|
case (PLASTICITY_PHENOPOWERLAW_ID) plasticityType
|
||||||
constitutive_postResults(startPos:endPos) = &
|
constitutive_postResults(startPos:endPos) = &
|
||||||
plastic_phenopowerlaw_postResults(Tstar_v,ipc,ip,el)
|
plastic_phenopowerlaw_postResults(Tstar_v,ipc,ip,el)
|
||||||
|
case (PLASTICITY_KINEHARDENING_ID) plasticityType
|
||||||
|
constitutive_postResults(startPos:endPos) = &
|
||||||
|
plastic_kinehardening_postResults(Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
||||||
constitutive_postResults(startPos:endPos) = &
|
constitutive_postResults(startPos:endPos) = &
|
||||||
plastic_dislotwin_postResults(Tstar_v,temperature(ho)%p(tme),ipc,ip,el)
|
plastic_dislotwin_postResults(Tstar_v,temperature(ho)%p(tme),ipc,ip,el)
|
||||||
|
|
|
@ -986,7 +986,9 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
crystallite_todo(c,i,e) = crystallite_subStep(c,i,e) > subStepMinCryst ! still on track or already done (beyond repair)
|
crystallite_todo(c,i,e) = crystallite_subStep(c,i,e) > subStepMinCryst ! still on track or already done (beyond repair)
|
||||||
!$OMP FLUSH(crystallite_todo)
|
!$OMP FLUSH(crystallite_todo)
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (iand(debug_level(debug_crystallite),debug_levelBasic) /= 0_pInt) then
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt &
|
||||||
|
.and. ((e == debug_e .and. i == debug_i .and. c == debug_g) &
|
||||||
|
.or. .not. iand(debug_level(debug_crystallite),debug_levelSelective) /= 0_pInt)) then
|
||||||
if (crystallite_todo(c,i,e)) then
|
if (crystallite_todo(c,i,e)) then
|
||||||
write(6,'(a,f12.8,a,i8,1x,i2,1x,i3,/)') '<< CRYST >> cutback step in crystallite_stressAndItsTangent &
|
write(6,'(a,f12.8,a,i8,1x,i2,1x,i3,/)') '<< CRYST >> cutback step in crystallite_stressAndItsTangent &
|
||||||
&with new crystallite_subStep: ',&
|
&with new crystallite_subStep: ',&
|
||||||
|
@ -1042,16 +1044,25 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
endif timeSyncing2
|
endif timeSyncing2
|
||||||
|
|
||||||
if (iand(debug_level(debug_crystallite),debug_levelExtensive) /= 0_pInt) then
|
if (iand(debug_level(debug_crystallite),debug_levelExtensive) /= 0_pInt) then
|
||||||
write(6,'(/,a,e12.5)') '<< CRYST >> min(subStep) ',minval(crystallite_subStep)
|
write(6,'(/,a,f8.5)') '<< CRYST >> min(subStep) ',minval(crystallite_subStep)
|
||||||
write(6,'(a,e12.5)') '<< CRYST >> max(subStep) ',maxval(crystallite_subStep)
|
write(6,'(a,f8.5)') '<< CRYST >> max(subStep) ',maxval(crystallite_subStep)
|
||||||
write(6,'(a,e12.5)') '<< CRYST >> min(subFrac) ',minval(crystallite_subFrac)
|
write(6,'(a,f8.5)') '<< CRYST >> min(subFrac) ',minval(crystallite_subFrac)
|
||||||
write(6,'(a,e12.5,/)') '<< CRYST >> max(subFrac) ',maxval(crystallite_subFrac)
|
write(6,'(a,f8.5,/)') '<< CRYST >> max(subFrac) ',maxval(crystallite_subFrac)
|
||||||
flush(6)
|
flush(6)
|
||||||
|
if (iand(debug_level(debug_crystallite),debug_levelSelective) /= 0_pInt) then
|
||||||
|
write(6,'(/,a,f8.5,1x,a,1x,f8.5,1x,a)') '<< CRYST >> subFrac + subStep = ',&
|
||||||
|
crystallite_subFrac(debug_g,debug_i,debug_e),'+',crystallite_subStep(debug_g,debug_i,debug_e),'@selective'
|
||||||
|
flush(6)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! --- integrate --- requires fully defined state array (basic + dependent state)
|
! --- integrate --- requires fully defined state array (basic + dependent state)
|
||||||
|
|
||||||
if (any(crystallite_todo)) then
|
if (any(crystallite_todo)) then
|
||||||
|
if (iand(debug_level(debug_crystallite),debug_levelExtensive) /= 0_pInt) then
|
||||||
|
write(6,'(/,a,i3)') '<< CRYST >> using state integrator ',numerics_integrator(numerics_integrationMode)
|
||||||
|
flush(6)
|
||||||
|
endif
|
||||||
select case(numerics_integrator(numerics_integrationMode))
|
select case(numerics_integrator(numerics_integrationMode))
|
||||||
case(1_pInt)
|
case(1_pInt)
|
||||||
call crystallite_integrateStateFPI()
|
call crystallite_integrateStateFPI()
|
||||||
|
@ -2702,6 +2713,9 @@ subroutine crystallite_integrateStateFPI()
|
||||||
|
|
||||||
singleRun = (eIter(1) == eIter(2) .and. iIter(1,eIter(1)) == iIter(2,eIter(2)))
|
singleRun = (eIter(1) == eIter(2) .and. iIter(1,eIter(1)) == iIter(2,eIter(2)))
|
||||||
|
|
||||||
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt) &
|
||||||
|
write(6,'(a,i8,a)') '<< CRYST >> ', count(crystallite_todo(:,:,:)),' grains todo at start of state integration'
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! initialize dotState
|
! initialize dotState
|
||||||
if (.not. singleRun) then
|
if (.not. singleRun) then
|
||||||
|
@ -2754,6 +2768,8 @@ subroutine crystallite_integrateStateFPI()
|
||||||
NaN = NaN .or. any(IEEE_is_NaN(sourceState(p)%p(mySource)%dotState(:,c)))
|
NaN = NaN .or. any(IEEE_is_NaN(sourceState(p)%p(mySource)%dotState(:,c)))
|
||||||
enddo
|
enddo
|
||||||
if (NaN) then ! NaN occured in any dotState
|
if (NaN) then ! NaN occured in any dotState
|
||||||
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt) &
|
||||||
|
write(6,*) '<< CRYST >> dotstate ',plasticState(p)%dotState(:,c)
|
||||||
if (.not. crystallite_localPlasticity(g,i,e)) then ! if broken is a non-local...
|
if (.not. crystallite_localPlasticity(g,i,e)) then ! if broken is a non-local...
|
||||||
!$OMP CRITICAL (checkTodo)
|
!$OMP CRITICAL (checkTodo)
|
||||||
crystallite_todo = crystallite_todo .and. crystallite_localPlasticity ! ...all non-locals done (and broken)
|
crystallite_todo = crystallite_todo .and. crystallite_localPlasticity ! ...all non-locals done (and broken)
|
||||||
|
@ -2767,6 +2783,9 @@ subroutine crystallite_integrateStateFPI()
|
||||||
!$OMP ENDDO
|
!$OMP ENDDO
|
||||||
|
|
||||||
! --- UPDATE STATE ---
|
! --- UPDATE STATE ---
|
||||||
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt) &
|
||||||
|
write(6,'(a,i8,a)') '<< CRYST >> ', count(crystallite_todo(:,:,:)),' grains todo after preguess of state'
|
||||||
|
|
||||||
|
|
||||||
!$OMP DO PRIVATE(mySizePlasticDotState,mySizeSourceDotState,p,c)
|
!$OMP DO PRIVATE(mySizePlasticDotState,mySizeSourceDotState,p,c)
|
||||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||||
|
@ -2822,6 +2841,9 @@ subroutine crystallite_integrateStateFPI()
|
||||||
|
|
||||||
! --- STRESS INTEGRATION ---
|
! --- STRESS INTEGRATION ---
|
||||||
|
|
||||||
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt) &
|
||||||
|
write(6,'(a,i8,a)') '<< CRYST >> ', count(crystallite_todo(:,:,:)),' grains todo before stress integration'
|
||||||
|
|
||||||
!$OMP DO
|
!$OMP DO
|
||||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||||
!$OMP FLUSH(crystallite_todo)
|
!$OMP FLUSH(crystallite_todo)
|
||||||
|
@ -2976,7 +2998,11 @@ subroutine crystallite_integrateStateFPI()
|
||||||
.or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0_pInt)) then
|
.or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0_pInt)) then
|
||||||
write(6,'(a,i8,1x,i2,1x,i3,/)') '<< CRYST >> update state at el ip g ',e,i,g
|
write(6,'(a,i8,1x,i2,1x,i3,/)') '<< CRYST >> update state at el ip g ',e,i,g
|
||||||
write(6,'(a,f6.1,/)') '<< CRYST >> plasticstatedamper ',plasticStatedamper
|
write(6,'(a,f6.1,/)') '<< CRYST >> plasticstatedamper ',plasticStatedamper
|
||||||
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> plastic state residuum',plasticStateResiduum(1:mySizePlasticDotState)
|
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> plastic state residuum',&
|
||||||
|
abs(plasticStateResiduum(1:mySizePlasticDotState))
|
||||||
|
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> abstol dotstate',plasticState(p)%aTolState(1:mySizePlasticDotState)
|
||||||
|
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> reltol dotstate',rTol_crystalliteState* &
|
||||||
|
abs(tempPlasticState(1:mySizePlasticDotState))
|
||||||
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> new state',tempPlasticState(1:mySizePlasticDotState)
|
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> new state',tempPlasticState(1:mySizePlasticDotState)
|
||||||
endif
|
endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -3036,8 +3062,8 @@ subroutine crystallite_integrateStateFPI()
|
||||||
!$OMP END PARALLEL
|
!$OMP END PARALLEL
|
||||||
|
|
||||||
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt) &
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt) &
|
||||||
write(6,'(a,i8,a,i2,/)') '<< CRYST >> ', count(crystallite_converged(:,:,:)), &
|
write(6,'(a,i8,a,i2)') '<< CRYST >> ', count(crystallite_converged(:,:,:)), &
|
||||||
' grains converged after state integration #', NiterationState
|
' grains converged after state integration #', NiterationState
|
||||||
|
|
||||||
|
|
||||||
! --- NON-LOCAL CONVERGENCE CHECK ---
|
! --- NON-LOCAL CONVERGENCE CHECK ---
|
||||||
|
@ -3152,8 +3178,8 @@ logical function crystallite_stateJump(ipc,ip,el)
|
||||||
write(6,'(a,i8,1x,i2,1x,i3, /)') '<< CRYST >> update state at el ip ipc ',el,ip,ipc
|
write(6,'(a,i8,1x,i2,1x,i3, /)') '<< CRYST >> update state at el ip ipc ',el,ip,ipc
|
||||||
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> deltaState', plasticState(p)%deltaState(1:mySizePlasticDeltaState,c)
|
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> deltaState', plasticState(p)%deltaState(1:mySizePlasticDeltaState,c)
|
||||||
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> new state', &
|
write(6,'(a,/,(12x,12(e12.5,1x)),/)') '<< CRYST >> new state', &
|
||||||
plasticState(p)%state(myOffsetSourceDeltaState + 1_pInt : &
|
plasticState(p)%state(myOffsetPlasticDeltaState + 1_pInt : &
|
||||||
myOffsetSourceDeltaState + mySizeSourceDeltaState,c)
|
myOffsetPlasticDeltaState + mySizePlasticDeltaState,c)
|
||||||
endif
|
endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -3195,9 +3221,9 @@ end function crystallite_push33ToRef
|
||||||
!> intermediate acceleration of the Newton-Raphson correction
|
!> intermediate acceleration of the Newton-Raphson correction
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
logical function crystallite_integrateStress(&
|
logical function crystallite_integrateStress(&
|
||||||
ipc,& ! grain number
|
ipc,& ! grain number
|
||||||
ip,& ! integration point number
|
ip,& ! integration point number
|
||||||
el,& ! element number
|
el,& ! element number
|
||||||
timeFraction &
|
timeFraction &
|
||||||
)
|
)
|
||||||
use, intrinsic :: &
|
use, intrinsic :: &
|
||||||
|
@ -3252,10 +3278,10 @@ logical function crystallite_integrateStress(&
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in):: el, & ! element index
|
integer(pInt), intent(in):: el, & ! element index
|
||||||
ip, & ! integration point index
|
ip, & ! integration point index
|
||||||
ipc ! grain index
|
ipc ! grain index
|
||||||
real(pReal), optional, intent(in) :: timeFraction ! fraction of timestep
|
real(pReal), optional, intent(in) :: timeFraction ! fraction of timestep
|
||||||
|
|
||||||
!*** local variables ***!
|
!*** local variables ***!
|
||||||
real(pReal), dimension(3,3):: Fg_new, & ! deformation gradient at end of timestep
|
real(pReal), dimension(3,3):: Fg_new, & ! deformation gradient at end of timestep
|
||||||
|
@ -3330,7 +3356,6 @@ logical function crystallite_integrateStress(&
|
||||||
write(6,'(a,i8,1x,i2,1x,i3)') '<< CRYST >> integrateStress at el ip ipc ',el,ip,ipc
|
write(6,'(a,i8,1x,i2,1x,i3)') '<< CRYST >> integrateStress at el ip ipc ',el,ip,ipc
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
!* only integrate over fraction of timestep?
|
!* only integrate over fraction of timestep?
|
||||||
|
|
||||||
if (present(timeFraction)) then
|
if (present(timeFraction)) then
|
||||||
|
@ -3417,7 +3442,7 @@ logical function crystallite_integrateStress(&
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) &
|
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) &
|
||||||
write(6,'(a,i3,a,i8,1x,a,i8,a,1x,i2,1x,i3,/)') '<< CRYST >> integrateStress reached loop limit',nStress, &
|
write(6,'(a,i3,a,i8,1x,a,i8,a,1x,i2,1x,i3,/)') '<< CRYST >> integrateStress reached loop limit',nStress, &
|
||||||
' at el (elFE) ip ipc ', el,mesh_element(1,el),ip,ipc
|
' at el (elFE) ip ipc ', el,'(',mesh_element(1,el),')',ip,ipc
|
||||||
#endif
|
#endif
|
||||||
return
|
return
|
||||||
endif loopsExeced
|
endif loopsExeced
|
||||||
|
@ -3426,7 +3451,8 @@ logical function crystallite_integrateStress(&
|
||||||
|
|
||||||
B = math_I3 - dt*Lpguess
|
B = math_I3 - dt*Lpguess
|
||||||
Fe = math_mul33x33(math_mul33x33(A,B), invFi_new) ! current elastic deformation tensor
|
Fe = math_mul33x33(math_mul33x33(A,B), invFi_new) ! current elastic deformation tensor
|
||||||
call constitutive_TandItsTangent(Tstar, dT_dFe3333, dT_dFi3333, Fe, Fi_new, ipc, ip, el) ! call constitutive law to calculate 2nd Piola-Kirchhoff stress and its derivative in unloaded configuration
|
call constitutive_TandItsTangent(Tstar, dT_dFe3333, dT_dFi3333, &
|
||||||
|
Fe, Fi_new, ipc, ip, el) ! call constitutive law to calculate 2nd Piola-Kirchhoff stress and its derivative in unloaded configuration
|
||||||
Tstar_v = math_Mandel33to6(Tstar)
|
Tstar_v = math_Mandel33to6(Tstar)
|
||||||
|
|
||||||
!* calculate plastic velocity gradient and its tangent from constitutive law
|
!* calculate plastic velocity gradient and its tangent from constitutive law
|
||||||
|
@ -3434,6 +3460,17 @@ logical function crystallite_integrateStress(&
|
||||||
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) &
|
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) &
|
||||||
call system_clock(count=tick,count_rate=tickrate,count_max=maxticks)
|
call system_clock(count=tick,count_rate=tickrate,count_max=maxticks)
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt &
|
||||||
|
.and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) &
|
||||||
|
.or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0_pInt)) then
|
||||||
|
write(6,'(a,i3,/)') '<< CRYST >> stress iteration ', NiterationStressLp
|
||||||
|
write(6,'(a,/,3(12x,3(e20.10,1x)/))') '<< CRYST >> Lpguess', math_transpose33(Lpguess)
|
||||||
|
write(6,'(a,/,3(12x,3(e20.10,1x)/))') '<< CRYST >> Fi', math_transpose33(Fi_new)
|
||||||
|
write(6,'(a,/,3(12x,3(e20.10,1x)/))') '<< CRYST >> Fe', math_transpose33(Fe)
|
||||||
|
write(6,'(a,/,6(e20.10,1x))') '<< CRYST >> Tstar', Tstar_v
|
||||||
|
endif
|
||||||
|
#endif
|
||||||
call constitutive_LpAndItsTangent(Lp_constitutive, dLp_dT3333, dLp_dFi3333, &
|
call constitutive_LpAndItsTangent(Lp_constitutive, dLp_dT3333, dLp_dFi3333, &
|
||||||
Tstar_v, Fi_new, ipc, ip, el)
|
Tstar_v, Fi_new, ipc, ip, el)
|
||||||
|
|
||||||
|
@ -3451,9 +3488,7 @@ logical function crystallite_integrateStress(&
|
||||||
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt &
|
if (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
|
||||||
write(6,'(a,i3,/)') '<< CRYST >> stress iteration ', NiterationStressLp
|
write(6,'(a,/,3(12x,3(e20.10,1x)/))') '<< CRYST >> Lp_constitutive', math_transpose33(Lp_constitutive)
|
||||||
write(6,'(a,/,3(12x,3(e20.7,1x)/))') '<< CRYST >> Lp_constitutive', math_transpose33(Lp_constitutive)
|
|
||||||
write(6,'(a,/,3(12x,3(e20.7,1x)/))') '<< CRYST >> Lpguess', math_transpose33(Lpguess)
|
|
||||||
endif
|
endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -3483,6 +3518,13 @@ logical function crystallite_integrateStress(&
|
||||||
else ! not converged and residuum not improved...
|
else ! not converged and residuum not improved...
|
||||||
steplengthLp = subStepSizeLp * steplengthLp ! ...try with smaller step length in same direction
|
steplengthLp = subStepSizeLp * steplengthLp ! ...try with smaller step length in same direction
|
||||||
Lpguess = Lpguess_old + steplengthLp * deltaLp
|
Lpguess = Lpguess_old + steplengthLp * deltaLp
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt &
|
||||||
|
.and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) &
|
||||||
|
.or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0_pInt)) then
|
||||||
|
write(6,'(a,1x,f7.4)') '<< CRYST >> linear search for Lpguess with step', steplengthLp
|
||||||
|
endif
|
||||||
|
#endif
|
||||||
cycle LpLoop
|
cycle LpLoop
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -3496,6 +3538,16 @@ logical function crystallite_integrateStress(&
|
||||||
dFe_dLp3333 = - dt * dFe_dLp3333
|
dFe_dLp3333 = - dt * dFe_dLp3333
|
||||||
dRLp_dLp = math_identity2nd(9_pInt) &
|
dRLp_dLp = math_identity2nd(9_pInt) &
|
||||||
- math_Plain3333to99(math_mul3333xx3333(math_mul3333xx3333(dLp_dT3333,dT_dFe3333),dFe_dLp3333))
|
- math_Plain3333to99(math_mul3333xx3333(math_mul3333xx3333(dLp_dT3333,dT_dFe3333),dFe_dLp3333))
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0_pInt &
|
||||||
|
.and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) &
|
||||||
|
.or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0_pInt)) then
|
||||||
|
write(6,'(a,/,9(12x,9(e12.4,1x)/))') '<< CRYST >> dLp_dT', math_Plain3333to99(dLp_dT3333)
|
||||||
|
write(6,'(a,1x,e20.10)') '<< CRYST >> dLp_dT norm', norm2(math_Plain3333to99(dLp_dT3333))
|
||||||
|
write(6,'(a,/,9(12x,9(e12.4,1x)/))') '<< CRYST >> dRLp_dLp', dRLp_dLp - math_identity2nd(9_pInt)
|
||||||
|
write(6,'(a,1x,e20.10)') '<< CRYST >> dRLp_dLp norm', norm2(dRLp_dLp - math_identity2nd(9_pInt))
|
||||||
|
endif
|
||||||
|
#endif
|
||||||
dRLp_dLp2 = dRLp_dLp ! will be overwritten in first call to LAPACK routine
|
dRLp_dLp2 = dRLp_dLp ! will be overwritten in first call to LAPACK routine
|
||||||
work = math_plain33to9(residuumLp)
|
work = math_plain33to9(residuumLp)
|
||||||
call dgesv(9,1,dRLp_dLp2,9,ipiv,work,9,ierr) ! solve dRLp/dLp * delta Lp = -res for delta Lp
|
call dgesv(9,1,dRLp_dLp2,9,ipiv,work,9,ierr) ! solve dRLp/dLp * delta Lp = -res for delta Lp
|
||||||
|
|
|
@ -443,13 +443,15 @@ subroutine debug_info
|
||||||
write(6,'(a15,i10,1x,i10)') ' total',integral,sum(debug_MaterialpointLoopDistribution)
|
write(6,'(a15,i10,1x,i10)') ' total',integral,sum(debug_MaterialpointLoopDistribution)
|
||||||
endif debugOutputHomog
|
endif debugOutputHomog
|
||||||
|
|
||||||
debugOutputCPFEM: if (iand(debug_level(debug_CPFEM),debug_LEVELBASIC) /= 0) then
|
debugOutputCPFEM: if (iand(debug_level(debug_CPFEM),debug_LEVELBASIC) /= 0 &
|
||||||
write(6,'(2/,a,/)') ' Extreme values of returned stress and jacobian'
|
.and. any(debug_stressMinLocation /= 0_pInt) &
|
||||||
|
.and. any(debug_stressMaxLocation /= 0_pInt) ) then
|
||||||
|
write(6,'(2/,a,/)') ' Extreme values of returned stress and Jacobian'
|
||||||
write(6,'(a39)') ' value el ip'
|
write(6,'(a39)') ' value el ip'
|
||||||
write(6,'(a14,1x,e12.3,1x,i6,1x,i4)') ' stress min :', debug_stressMin, debug_stressMinLocation
|
write(6,'(a14,1x,e12.3,1x,i8,1x,i4)') ' stress min :', debug_stressMin, debug_stressMinLocation
|
||||||
write(6,'(a14,1x,e12.3,1x,i6,1x,i4)') ' max :', debug_stressMax, debug_stressMaxLocation
|
write(6,'(a14,1x,e12.3,1x,i8,1x,i4)') ' max :', debug_stressMax, debug_stressMaxLocation
|
||||||
write(6,'(a14,1x,e12.3,1x,i6,1x,i4)') ' jacobian min :', debug_jacobianMin, debug_jacobianMinLocation
|
write(6,'(a14,1x,e12.3,1x,i8,1x,i4)') ' Jacobian min :', debug_jacobianMin, debug_jacobianMinLocation
|
||||||
write(6,'(a14,1x,e12.3,1x,i6,1x,i4,/)') ' max :', debug_jacobianMax, debug_jacobianMaxLocation
|
write(6,'(a14,1x,e12.3,1x,i8,1x,i4,/)') ' max :', debug_jacobianMax, debug_jacobianMaxLocation
|
||||||
endif debugOutputCPFEM
|
endif debugOutputCPFEM
|
||||||
!$OMP END CRITICAL (write2out)
|
!$OMP END CRITICAL (write2out)
|
||||||
|
|
||||||
|
|
|
@ -166,52 +166,30 @@ subroutine homogenization_RGC_init(fileUnit)
|
||||||
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 ('(output)')
|
case ('(output)')
|
||||||
|
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
||||||
|
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
||||||
|
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
||||||
select case(IO_lc(IO_stringValue(line,chunkPos,2_pInt)))
|
select case(IO_lc(IO_stringValue(line,chunkPos,2_pInt)))
|
||||||
case('constitutivework')
|
case('constitutivework')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = constitutivework_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = constitutivework_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
|
||||||
case('penaltyenergy')
|
case('penaltyenergy')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = penaltyenergy_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = penaltyenergy_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
|
||||||
case('volumediscrepancy')
|
case('volumediscrepancy')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = volumediscrepancy_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = volumediscrepancy_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
|
||||||
case('averagerelaxrate')
|
case('averagerelaxrate')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = averagerelaxrate_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = averagerelaxrate_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
|
||||||
case('maximumrelaxrate')
|
case('maximumrelaxrate')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = maximumrelaxrate_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = maximumrelaxrate_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
|
||||||
case('magnitudemismatch')
|
case('magnitudemismatch')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = magnitudemismatch_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = magnitudemismatch_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
|
||||||
case('ipcoords')
|
case('ipcoords')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = ipcoords_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = ipcoords_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
|
||||||
case('avgdefgrad','avgf')
|
case('avgdefgrad','avgf')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = avgdefgrad_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = avgdefgrad_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
|
||||||
case('avgp','avgfirstpiola','avg1stpiola')
|
case('avgp','avgfirstpiola','avg1stpiola')
|
||||||
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
|
|
||||||
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = avgfirstpiola_ID
|
homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = avgfirstpiola_ID
|
||||||
homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
|
case default
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) -1_pInt ! correct for invalid
|
||||||
|
|
||||||
end select
|
end select
|
||||||
case ('clustersize')
|
case ('clustersize')
|
||||||
|
|
|
@ -25,6 +25,7 @@ module material
|
||||||
PLASTICITY_none_label = 'none', &
|
PLASTICITY_none_label = 'none', &
|
||||||
PLASTICITY_isotropic_label = 'isotropic', &
|
PLASTICITY_isotropic_label = 'isotropic', &
|
||||||
PLASTICITY_phenopowerlaw_label = 'phenopowerlaw', &
|
PLASTICITY_phenopowerlaw_label = 'phenopowerlaw', &
|
||||||
|
PLASTICITY_kinehardening_label = 'kinehardening', &
|
||||||
PLASTICITY_dislotwin_label = 'dislotwin', &
|
PLASTICITY_dislotwin_label = 'dislotwin', &
|
||||||
PLASTICITY_disloucla_label = 'disloucla', &
|
PLASTICITY_disloucla_label = 'disloucla', &
|
||||||
PLASTICITY_nonlocal_label = 'nonlocal', &
|
PLASTICITY_nonlocal_label = 'nonlocal', &
|
||||||
|
@ -72,6 +73,7 @@ module material
|
||||||
PLASTICITY_none_ID, &
|
PLASTICITY_none_ID, &
|
||||||
PLASTICITY_isotropic_ID, &
|
PLASTICITY_isotropic_ID, &
|
||||||
PLASTICITY_phenopowerlaw_ID, &
|
PLASTICITY_phenopowerlaw_ID, &
|
||||||
|
PLASTICITY_kinehardening_ID, &
|
||||||
PLASTICITY_dislotwin_ID, &
|
PLASTICITY_dislotwin_ID, &
|
||||||
PLASTICITY_disloucla_ID, &
|
PLASTICITY_disloucla_ID, &
|
||||||
PLASTICITY_nonlocal_ID
|
PLASTICITY_nonlocal_ID
|
||||||
|
@ -308,6 +310,7 @@ module material
|
||||||
PLASTICITY_none_ID, &
|
PLASTICITY_none_ID, &
|
||||||
PLASTICITY_isotropic_ID, &
|
PLASTICITY_isotropic_ID, &
|
||||||
PLASTICITY_phenopowerlaw_ID, &
|
PLASTICITY_phenopowerlaw_ID, &
|
||||||
|
PLASTICITY_kinehardening_ID, &
|
||||||
PLASTICITY_dislotwin_ID, &
|
PLASTICITY_dislotwin_ID, &
|
||||||
PLASTICITY_disloucla_ID, &
|
PLASTICITY_disloucla_ID, &
|
||||||
PLASTICITY_nonlocal_ID, &
|
PLASTICITY_nonlocal_ID, &
|
||||||
|
@ -983,6 +986,8 @@ subroutine material_parsePhase(fileUnit,myPart)
|
||||||
phase_plasticity(section) = PLASTICITY_ISOTROPIC_ID
|
phase_plasticity(section) = PLASTICITY_ISOTROPIC_ID
|
||||||
case (PLASTICITY_PHENOPOWERLAW_label)
|
case (PLASTICITY_PHENOPOWERLAW_label)
|
||||||
phase_plasticity(section) = PLASTICITY_PHENOPOWERLAW_ID
|
phase_plasticity(section) = PLASTICITY_PHENOPOWERLAW_ID
|
||||||
|
case (PLASTICITY_KINEHARDENING_label)
|
||||||
|
phase_plasticity(section) = PLASTICITY_KINEHARDENING_ID
|
||||||
case (PLASTICITY_DISLOTWIN_label)
|
case (PLASTICITY_DISLOTWIN_label)
|
||||||
phase_plasticity(section) = PLASTICITY_DISLOTWIN_ID
|
phase_plasticity(section) = PLASTICITY_DISLOTWIN_ID
|
||||||
case (PLASTICITY_DISLOUCLA_label)
|
case (PLASTICITY_DISLOUCLA_label)
|
||||||
|
|
927
src/math.f90
927
src/math.f90
File diff suppressed because it is too large
Load Diff
12
src/mesh.f90
12
src/mesh.f90
|
@ -118,11 +118,6 @@ module mesh
|
||||||
logical, private :: noPart !< for cases where the ABAQUS input file does not use part/assembly information
|
logical, private :: noPart !< for cases where the ABAQUS input file does not use part/assembly information
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Spectral
|
|
||||||
#include <petsc/finclude/petscsys.h>
|
|
||||||
include 'fftw3-mpi.f03'
|
|
||||||
#endif
|
|
||||||
|
|
||||||
! These definitions should actually reside in the FE-solver specific part (different for MARC/ABAQUS)
|
! These definitions should actually reside in the FE-solver specific part (different for MARC/ABAQUS)
|
||||||
! Hence, I suggest to prefix with "FE_"
|
! Hence, I suggest to prefix with "FE_"
|
||||||
|
|
||||||
|
@ -481,6 +476,10 @@ subroutine mesh_init(ip,el)
|
||||||
use, intrinsic :: iso_fortran_env, only: &
|
use, intrinsic :: iso_fortran_env, only: &
|
||||||
compiler_version, &
|
compiler_version, &
|
||||||
compiler_options
|
compiler_options
|
||||||
|
#endif
|
||||||
|
#ifdef Spectral
|
||||||
|
#include <petsc/finclude/petscsys.h>
|
||||||
|
use PETScsys
|
||||||
#endif
|
#endif
|
||||||
use DAMASK_interface
|
use DAMASK_interface
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
|
@ -516,6 +515,7 @@ subroutine mesh_init(ip,el)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
#ifdef Spectral
|
#ifdef Spectral
|
||||||
|
include 'fftw3-mpi.f03'
|
||||||
integer(C_INTPTR_T) :: devNull, local_K, local_K_offset
|
integer(C_INTPTR_T) :: devNull, local_K, local_K_offset
|
||||||
integer :: ierr, worldsize
|
integer :: ierr, worldsize
|
||||||
#endif
|
#endif
|
||||||
|
@ -524,8 +524,6 @@ subroutine mesh_init(ip,el)
|
||||||
integer(pInt) :: j
|
integer(pInt) :: j
|
||||||
logical :: myDebug
|
logical :: myDebug
|
||||||
|
|
||||||
external :: MPI_comm_size
|
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- mesh init -+>>>'
|
write(6,'(/,a)') ' <<<+- mesh 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"
|
||||||
|
|
|
@ -10,9 +10,6 @@ module numerics
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
#ifdef PETSc
|
|
||||||
#include <petsc/finclude/petsc.h90>
|
|
||||||
#endif
|
|
||||||
character(len=64), parameter, private :: &
|
character(len=64), parameter, private :: &
|
||||||
numerics_CONFIGFILE = 'numerics.config' !< name of configuration file
|
numerics_CONFIGFILE = 'numerics.config' !< name of configuration file
|
||||||
|
|
||||||
|
@ -216,6 +213,10 @@ subroutine numerics_init
|
||||||
IO_warning, &
|
IO_warning, &
|
||||||
IO_timeStamp, &
|
IO_timeStamp, &
|
||||||
IO_EOF
|
IO_EOF
|
||||||
|
#ifdef PETSc
|
||||||
|
#include <petsc/finclude/petscsys.h>
|
||||||
|
use petscsys
|
||||||
|
#endif
|
||||||
#if defined(Spectral) || defined(FEM)
|
#if defined(Spectral) || defined(FEM)
|
||||||
!$ use OMP_LIB, only: omp_set_num_threads ! Use the standard conforming module file for omp if using the spectral solver
|
!$ use OMP_LIB, only: omp_set_num_threads ! Use the standard conforming module file for omp if using the spectral solver
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -232,9 +233,7 @@ subroutine numerics_init
|
||||||
line
|
line
|
||||||
!$ character(len=6) DAMASK_NumThreadsString ! environment variable DAMASK_NUM_THREADS
|
!$ character(len=6) DAMASK_NumThreadsString ! environment variable DAMASK_NUM_THREADS
|
||||||
external :: &
|
external :: &
|
||||||
MPI_Comm_rank, &
|
PETScErrorF ! is called in the CHKERRQ macro
|
||||||
MPI_Comm_size, &
|
|
||||||
MPI_Abort
|
|
||||||
|
|
||||||
#ifdef PETSc
|
#ifdef PETSc
|
||||||
call MPI_Comm_rank(PETSC_COMM_WORLD,worldrank,ierr);CHKERRQ(ierr)
|
call MPI_Comm_rank(PETSC_COMM_WORLD,worldrank,ierr);CHKERRQ(ierr)
|
||||||
|
|
|
@ -62,7 +62,7 @@ module plastic_isotropic
|
||||||
end type
|
end type
|
||||||
|
|
||||||
type, private :: tIsotropicAbsTol !< internal alias for abs tolerance in state
|
type, private :: tIsotropicAbsTol !< internal alias for abs tolerance in state
|
||||||
real(pReal), pointer :: & ! scalars along NipcMyInstance
|
real(pReal), pointer :: & ! scalars
|
||||||
flowstress, &
|
flowstress, &
|
||||||
accumulatedShear
|
accumulatedShear
|
||||||
end type
|
end type
|
||||||
|
|
|
@ -0,0 +1,969 @@
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @author Philip Eisenlohr, Michigan State University
|
||||||
|
!> @author Zhuowen Zhao, Michigan State University
|
||||||
|
!> @brief Introducing Voce-type kinematic hardening rule into crystal plasticity
|
||||||
|
!! formulation using a power law fitting
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
module plastic_kinehardening
|
||||||
|
use prec, only: &
|
||||||
|
pReal,&
|
||||||
|
pInt
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
private
|
||||||
|
integer(pInt), dimension(:), allocatable, public, protected :: &
|
||||||
|
plastic_kinehardening_sizePostResults !< cumulative size of post results
|
||||||
|
|
||||||
|
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
||||||
|
plastic_kinehardening_sizePostResult !< size of each post result output
|
||||||
|
|
||||||
|
character(len=64), dimension(:,:), allocatable, target, public :: &
|
||||||
|
plastic_kinehardening_output !< name of each post result output
|
||||||
|
|
||||||
|
integer(pInt), dimension(:), allocatable, target, public :: &
|
||||||
|
plastic_kinehardening_Noutput !< number of outputs per instance
|
||||||
|
|
||||||
|
integer(pInt), dimension(:), allocatable, public, protected :: &
|
||||||
|
plastic_kinehardening_totalNslip !< no. of slip system used in simulation
|
||||||
|
|
||||||
|
|
||||||
|
integer(pInt), dimension(:,:), allocatable, private :: &
|
||||||
|
plastic_kinehardening_Nslip !< active number of slip systems per family (input parameter, per family)
|
||||||
|
|
||||||
|
|
||||||
|
enum, bind(c)
|
||||||
|
enumerator :: undefined_ID, &
|
||||||
|
crss_ID, & !< critical resolved stress
|
||||||
|
crss_back_ID, & !< critical resolved back stress
|
||||||
|
sense_ID, & !< sense of acting shear stress (-1 or +1)
|
||||||
|
chi0_ID, & !< backstress at last switch of stress sense (positive?)
|
||||||
|
gamma0_ID, & !< accumulated shear at last switch of stress sense (at current switch?)
|
||||||
|
accshear_ID, &
|
||||||
|
sumGamma_ID, &
|
||||||
|
shearrate_ID, &
|
||||||
|
resolvedstress_ID
|
||||||
|
|
||||||
|
end enum
|
||||||
|
|
||||||
|
|
||||||
|
type, private :: tParameters !< container type for internal constitutive parameters
|
||||||
|
integer(kind(undefined_ID)), dimension(:), allocatable, private :: &
|
||||||
|
outputID !< ID of each post result output
|
||||||
|
|
||||||
|
real(pReal) :: &
|
||||||
|
gdot0, & !< reference shear strain rate for slip (input parameter)
|
||||||
|
n_slip, & !< stress exponent for slip (input parameter)
|
||||||
|
aTolResistance, &
|
||||||
|
aTolShear
|
||||||
|
|
||||||
|
|
||||||
|
real(pReal), dimension(:), allocatable, private :: &
|
||||||
|
crss0, & !< initial critical shear stress for slip (input parameter, per family)
|
||||||
|
theta0, & !< initial hardening rate of forward stress for each slip
|
||||||
|
theta1, & !< asymptotic hardening rate of forward stress for each slip >
|
||||||
|
theta0_b, & !< initial hardening rate of back stress for each slip >
|
||||||
|
theta1_b, & !< asymptotic hardening rate of back stress for each slip >
|
||||||
|
tau1, &
|
||||||
|
tau1_b, &
|
||||||
|
interaction_slipslip, & !< latent hardening matrix
|
||||||
|
nonSchmidCoeff
|
||||||
|
|
||||||
|
real(pReal), dimension(:,:), allocatable, private :: &
|
||||||
|
hardeningMatrix_SlipSlip
|
||||||
|
end type
|
||||||
|
|
||||||
|
type, private :: tKinehardeningState
|
||||||
|
real(pReal), pointer, dimension(:,:) :: & !< vectors along NipcMyInstance
|
||||||
|
crss, & !< critical resolved stress
|
||||||
|
crss_back, & !< critical resolved back stress
|
||||||
|
sense, & !< sense of acting shear stress (-1 or +1)
|
||||||
|
chi0, & !< backstress at last switch of stress sense
|
||||||
|
gamma0, & !< accumulated shear at last switch of stress sense
|
||||||
|
accshear !< accumulated (absolute) shear
|
||||||
|
|
||||||
|
real(pReal), pointer, dimension(:) :: & !< scalars along NipcMyInstance
|
||||||
|
sumGamma !< accumulated shear across all systems
|
||||||
|
end type
|
||||||
|
|
||||||
|
type(tParameters), dimension(:), allocatable, private :: &
|
||||||
|
param !< containers of constitutive parameters (len Ninstance)
|
||||||
|
|
||||||
|
type(tKinehardeningState), allocatable, dimension(:), private :: &
|
||||||
|
dotState, &
|
||||||
|
deltaState, &
|
||||||
|
state, &
|
||||||
|
state0
|
||||||
|
|
||||||
|
|
||||||
|
public :: &
|
||||||
|
plastic_kinehardening_init, &
|
||||||
|
plastic_kinehardening_LpAndItsTangent, &
|
||||||
|
plastic_kinehardening_dotState, &
|
||||||
|
plastic_kinehardening_deltaState, &
|
||||||
|
plastic_kinehardening_postResults
|
||||||
|
private :: &
|
||||||
|
plastic_kinehardening_shearRates
|
||||||
|
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief module initialization
|
||||||
|
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine plastic_kinehardening_init(fileUnit)
|
||||||
|
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
||||||
|
use prec, only: &
|
||||||
|
dEq0
|
||||||
|
use debug, only: &
|
||||||
|
debug_level, &
|
||||||
|
debug_constitutive,&
|
||||||
|
debug_levelBasic
|
||||||
|
use math, only: &
|
||||||
|
math_Mandel3333to66, &
|
||||||
|
math_Voigt66to3333, &
|
||||||
|
math_expand
|
||||||
|
use IO, only: &
|
||||||
|
IO_read, &
|
||||||
|
IO_lc, &
|
||||||
|
IO_getTag, &
|
||||||
|
IO_isBlank, &
|
||||||
|
IO_stringPos, &
|
||||||
|
IO_stringValue, &
|
||||||
|
IO_floatValue, &
|
||||||
|
IO_intValue, &
|
||||||
|
IO_warning, &
|
||||||
|
IO_error, &
|
||||||
|
IO_timeStamp, &
|
||||||
|
IO_EOF
|
||||||
|
use material, only: &
|
||||||
|
PLASTICITY_kinehardening_label, &
|
||||||
|
PLASTICITY_kinehardening_ID, &
|
||||||
|
phase_plasticity, &
|
||||||
|
phase_plasticityInstance, &
|
||||||
|
phase_Noutput, &
|
||||||
|
material_phase, &
|
||||||
|
plasticState, &
|
||||||
|
MATERIAL_partPhase
|
||||||
|
use lattice
|
||||||
|
use numerics,only: &
|
||||||
|
numerics_integrator
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
integer(pInt), intent(in) :: fileUnit
|
||||||
|
|
||||||
|
integer(pInt), allocatable, dimension(:) :: chunkPos
|
||||||
|
integer(pInt) :: &
|
||||||
|
o, j, k, f, &
|
||||||
|
output_ID, &
|
||||||
|
phase, &
|
||||||
|
instance, &
|
||||||
|
maxNinstance, &
|
||||||
|
NipcMyPhase, &
|
||||||
|
Nchunks_SlipSlip = 0_pInt, Nchunks_SlipFamilies = 0_pInt, &
|
||||||
|
Nchunks_nonSchmid = 0_pInt, &
|
||||||
|
offset_slip, index_myFamily, index_otherFamily, &
|
||||||
|
startIndex, endIndex, &
|
||||||
|
mySize, nSlip, nSlipFamilies, &
|
||||||
|
sizeDotState, &
|
||||||
|
sizeState, &
|
||||||
|
sizeDeltaState
|
||||||
|
|
||||||
|
real(pReal), dimension(:), allocatable :: tempPerSlip
|
||||||
|
|
||||||
|
character(len=65536) :: &
|
||||||
|
tag = '', &
|
||||||
|
line = '', &
|
||||||
|
extmsg = ''
|
||||||
|
character(len=64) :: &
|
||||||
|
outputtag = ''
|
||||||
|
|
||||||
|
write(6,'(/,a)') ' <<<+- constitutive_'//PLASTICITY_KINEHARDENING_label//' init -+>>>'
|
||||||
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
|
#include "compilation_info.f90"
|
||||||
|
|
||||||
|
maxNinstance = int(count(phase_plasticity == PLASTICITY_KINEHARDENING_ID),pInt)
|
||||||
|
if (maxNinstance == 0_pInt) return
|
||||||
|
|
||||||
|
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) &
|
||||||
|
write(6,'(a,1x,i5,/)') '# instances:',maxNinstance
|
||||||
|
|
||||||
|
allocate(plastic_kinehardening_sizePostResults(maxNinstance), source=0_pInt)
|
||||||
|
allocate(plastic_kinehardening_sizePostResult(maxval(phase_Noutput),maxNinstance), &
|
||||||
|
source=0_pInt)
|
||||||
|
allocate(plastic_kinehardening_output(maxval(phase_Noutput),maxNinstance))
|
||||||
|
plastic_kinehardening_output = ''
|
||||||
|
allocate(plastic_kinehardening_Noutput(maxNinstance), source=0_pInt)
|
||||||
|
allocate(plastic_kinehardening_Nslip(lattice_maxNslipFamily,maxNinstance), source=0_pInt)
|
||||||
|
allocate(plastic_kinehardening_totalNslip(maxNinstance), source=0_pInt)
|
||||||
|
allocate(param(maxNinstance)) ! one container of parameters per instance
|
||||||
|
|
||||||
|
rewind(fileUnit)
|
||||||
|
phase = 0_pInt
|
||||||
|
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= material_partPhase) ! wind forward to <phase>
|
||||||
|
line = IO_read(fileUnit)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
parsingFile: do while (trim(line) /= IO_EOF) ! read through sections of phase part
|
||||||
|
line = IO_read(fileUnit)
|
||||||
|
if (IO_isBlank(line)) cycle ! skip empty lines
|
||||||
|
if (IO_getTag(line,'<','>') /= '') then ! stop at next part
|
||||||
|
line = IO_read(fileUnit, .true.) ! reset IO_read
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
if (IO_getTag(line,'[',']') /= '') then ! next phase
|
||||||
|
phase = phase + 1_pInt ! advance phase section counter
|
||||||
|
if (phase_plasticity(phase) == PLASTICITY_KINEHARDENING_ID) then
|
||||||
|
instance = phase_plasticityInstance(phase) ! count instances of my constitutive law
|
||||||
|
Nchunks_SlipFamilies = count(lattice_NslipSystem(:,phase) > 0_pInt) ! maximum number of slip families according to lattice type of current phase
|
||||||
|
Nchunks_SlipSlip = maxval(lattice_interactionSlipSlip(:,:,phase))
|
||||||
|
Nchunks_nonSchmid = lattice_NnonSchmid(phase)
|
||||||
|
allocate(param(instance)%outputID(phase_Noutput(phase)), source=undefined_ID) ! allocate space for IDs of every requested output
|
||||||
|
allocate(param(instance)%crss0 (Nchunks_SlipFamilies), source=0.0_pReal)
|
||||||
|
allocate(param(instance)%tau1 (Nchunks_SlipFamilies), source=0.0_pReal)
|
||||||
|
allocate(param(instance)%tau1_b (Nchunks_SlipFamilies), source=0.0_pReal)
|
||||||
|
allocate(param(instance)%theta0 (Nchunks_SlipFamilies), source=0.0_pReal)
|
||||||
|
allocate(param(instance)%theta1 (Nchunks_SlipFamilies), source=0.0_pReal)
|
||||||
|
allocate(param(instance)%theta0_b(Nchunks_SlipFamilies), source=0.0_pReal)
|
||||||
|
allocate(param(instance)%theta1_b(Nchunks_SlipFamilies), source=0.0_pReal)
|
||||||
|
allocate(param(instance)%interaction_slipslip(Nchunks_SlipSlip), source=0.0_pReal)
|
||||||
|
allocate(param(instance)%nonSchmidCoeff(Nchunks_nonSchmid), source=0.0_pReal)
|
||||||
|
if(allocated(tempPerSlip)) deallocate(tempPerSlip)
|
||||||
|
allocate(tempPerSlip(Nchunks_SlipFamilies))
|
||||||
|
endif
|
||||||
|
cycle ! skip to next line
|
||||||
|
endif
|
||||||
|
if (phase > 0_pInt ) then; if (phase_plasticity(phase) == PLASTICITY_KINEHARDENING_ID) then ! one of my phases. Do not short-circuit here (.and. between if-statements), it's not safe in Fortran
|
||||||
|
instance = phase_plasticityInstance(phase) ! which instance of my plasticity is present phase
|
||||||
|
chunkPos = IO_stringPos(line)
|
||||||
|
tag = IO_lc(IO_stringValue(line,chunkPos,1_pInt)) ! extract key
|
||||||
|
select case(tag)
|
||||||
|
case ('(output)')
|
||||||
|
outputtag = IO_lc(IO_stringValue(line,chunkPos,2_pInt))
|
||||||
|
output_ID = undefined_ID
|
||||||
|
select case(outputtag)
|
||||||
|
case ('resistance')
|
||||||
|
output_ID = crss_ID
|
||||||
|
case ('backstress')
|
||||||
|
output_ID = crss_back_ID
|
||||||
|
case ('sense')
|
||||||
|
output_ID = sense_ID
|
||||||
|
case ('chi0')
|
||||||
|
output_ID = chi0_ID
|
||||||
|
case ('gamma0')
|
||||||
|
output_ID = gamma0_ID
|
||||||
|
case ('accumulatedshear')
|
||||||
|
output_ID = accshear_ID
|
||||||
|
case ('totalshear')
|
||||||
|
output_ID = sumGamma_ID
|
||||||
|
case ('shearrate')
|
||||||
|
output_ID = shearrate_ID
|
||||||
|
case ('resolvedstress')
|
||||||
|
output_ID = resolvedstress_ID
|
||||||
|
end select
|
||||||
|
|
||||||
|
if (output_ID /= undefined_ID) then
|
||||||
|
plastic_kinehardening_Noutput(instance) = plastic_kinehardening_Noutput(instance) + 1_pInt
|
||||||
|
plastic_kinehardening_output(plastic_kinehardening_Noutput(instance),instance) = outputtag
|
||||||
|
param(instance)%outputID (plastic_kinehardening_Noutput(instance)) = output_ID
|
||||||
|
endif
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! parameters depending on number of slip families
|
||||||
|
case ('nslip')
|
||||||
|
if (chunkPos(1) < Nchunks_SlipFamilies + 1_pInt) &
|
||||||
|
call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_KINEHARDENING_label//')')
|
||||||
|
if (chunkPos(1) > Nchunks_SlipFamilies + 1_pInt) &
|
||||||
|
call IO_error(150_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_KINEHARDENING_label//')')
|
||||||
|
Nchunks_SlipFamilies = chunkPos(1) - 1_pInt ! user specified number of (possibly) active slip families (e.g. 6 0 6 --> 3)
|
||||||
|
do j = 1_pInt, Nchunks_SlipFamilies
|
||||||
|
plastic_kinehardening_Nslip(j,instance) = IO_intValue(line,chunkPos,1_pInt+j)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
case ('crss0','tau1','tau1_b','theta0','theta1','theta0_b','theta1_b')
|
||||||
|
tempPerSlip = 0.0_pReal
|
||||||
|
do j = 1_pInt, Nchunks_SlipFamilies
|
||||||
|
if (plastic_kinehardening_Nslip(j,instance) > 0_pInt) &
|
||||||
|
tempPerSlip(j) = IO_floatValue(line,chunkPos,1_pInt+j)
|
||||||
|
enddo
|
||||||
|
select case(tag)
|
||||||
|
case ('crss0')
|
||||||
|
param(instance)%crss0(1:Nchunks_SlipFamilies) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
|
case ('tau1')
|
||||||
|
param(instance)%tau1(1:Nchunks_SlipFamilies) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
|
case ('tau1_b')
|
||||||
|
param(instance)%tau1_b(1:Nchunks_SlipFamilies) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
|
case ('theta0')
|
||||||
|
param(instance)%theta0(1:Nchunks_SlipFamilies) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
|
case ('theta1')
|
||||||
|
param(instance)%theta1(1:Nchunks_SlipFamilies) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
|
case ('theta0_b')
|
||||||
|
param(instance)%theta0_b(1:Nchunks_SlipFamilies) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
|
case ('theta1_b')
|
||||||
|
param(instance)%theta1_b(1:Nchunks_SlipFamilies) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
|
end select
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! parameters depending on number of interactions
|
||||||
|
case ('interaction_slipslip')
|
||||||
|
if (chunkPos(1) < 1_pInt + Nchunks_SlipSlip) &
|
||||||
|
call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_KINEHARDENING_label//')')
|
||||||
|
do j = 1_pInt, Nchunks_SlipSlip
|
||||||
|
param(instance)%interaction_slipslip(j) = IO_floatValue(line,chunkPos,1_pInt+j)
|
||||||
|
enddo
|
||||||
|
case ('nonschmidcoeff')
|
||||||
|
if (chunkPos(1) < 1_pInt + Nchunks_nonSchmid) &
|
||||||
|
call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_KINEHARDENING_label//')')
|
||||||
|
do j = 1_pInt,Nchunks_nonSchmid
|
||||||
|
param(instance)%nonSchmidCoeff(j) = IO_floatValue(line,chunkPos,1_pInt+j)
|
||||||
|
enddo
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
case ('gdot0')
|
||||||
|
param(instance)%gdot0 = IO_floatValue(line,chunkPos,2_pInt)
|
||||||
|
|
||||||
|
case ('n_slip')
|
||||||
|
param(instance)%n_slip = IO_floatValue(line,chunkPos,2_pInt)
|
||||||
|
|
||||||
|
case ('atol_resistance')
|
||||||
|
param(instance)%aTolResistance = IO_floatValue(line,chunkPos,2_pInt)
|
||||||
|
|
||||||
|
case ('atol_shear')
|
||||||
|
param(instance)%aTolShear = IO_floatValue(line,chunkPos,2_pInt)
|
||||||
|
|
||||||
|
case default
|
||||||
|
|
||||||
|
end select
|
||||||
|
endif; endif
|
||||||
|
enddo parsingFile
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! allocation of variables whose size depends on the total number of active slip systems
|
||||||
|
allocate(state(maxNinstance))
|
||||||
|
allocate(state0(maxNinstance))
|
||||||
|
allocate(dotState(maxNinstance))
|
||||||
|
allocate(deltaState(maxNinstance))
|
||||||
|
|
||||||
|
|
||||||
|
initializeInstances: do phase = 1_pInt, size(phase_plasticity) ! loop through all phases in material.config
|
||||||
|
myPhase2: if (phase_plasticity(phase) == PLASTICITY_KINEHARDENING_ID) then ! only consider my phase
|
||||||
|
NipcMyPhase = count(material_phase == phase) ! number of IPCs containing my phase
|
||||||
|
instance = phase_plasticityInstance(phase) ! which instance of my phase
|
||||||
|
plastic_kinehardening_Nslip(1:lattice_maxNslipFamily,instance) = &
|
||||||
|
min(lattice_NslipSystem(1:lattice_maxNslipFamily,phase),& ! limit active slip systems per family to min of available and requested
|
||||||
|
plastic_kinehardening_Nslip(1:lattice_maxNslipFamily,instance))
|
||||||
|
|
||||||
|
plastic_kinehardening_totalNslip(instance) = sum(plastic_kinehardening_Nslip(:,instance)) ! how many slip systems altogether
|
||||||
|
nSlipFamilies = count(plastic_kinehardening_Nslip(:,instance) > 0_pInt)
|
||||||
|
nSlip = plastic_kinehardening_totalNslip(instance) ! total number of active slip systems
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! sanity checks
|
||||||
|
|
||||||
|
if (any(plastic_kinehardening_Nslip(1:nSlipFamilies,instance) > 0_pInt &
|
||||||
|
.and. param(instance)%crss0(1:nSlipFamilies) < 0.0_pReal)) extmsg = trim(extmsg)//' crss0'
|
||||||
|
if (any(plastic_kinehardening_Nslip(1:nSlipFamilies,instance) > 0_pInt &
|
||||||
|
.and. param(instance)%tau1(1:nSlipFamilies) <= 0.0_pReal)) extmsg = trim(extmsg)//' tau1'
|
||||||
|
if (any(plastic_kinehardening_Nslip(1:nSlipFamilies,instance) > 0_pInt &
|
||||||
|
.and. param(instance)%tau1_b(1:nSlipFamilies) < 0.0_pReal)) extmsg = trim(extmsg)//' tau1_b'
|
||||||
|
if (param(instance)%gdot0 <= 0.0_pReal) extmsg = trim(extmsg)//' gdot0'
|
||||||
|
if (param(instance)%n_slip <= 0.0_pReal) extmsg = trim(extmsg)//' n_slip'
|
||||||
|
if (param(instance)%aTolResistance <= 0.0_pReal) param(instance)%aTolResistance = 1.0_pReal ! default absolute tolerance 1 Pa
|
||||||
|
if (param(instance)%aTolShear <= 0.0_pReal) param(instance)%aTolShear = 1.0e-6_pReal ! default absolute tolerance 1e-6
|
||||||
|
if (extmsg /= '') then
|
||||||
|
extmsg = trim(extmsg)//' ('//PLASTICITY_KINEHARDENING_label//')' ! prepare error message identifier
|
||||||
|
call IO_error(211_pInt,ip=instance,ext_msg=extmsg)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! Determine size of postResults array
|
||||||
|
|
||||||
|
outputsLoop: do o = 1_pInt,plastic_kinehardening_Noutput(instance)
|
||||||
|
select case(param(instance)%outputID(o))
|
||||||
|
case(crss_ID, & !< critical resolved stress
|
||||||
|
crss_back_ID, & !< critical resolved back stress
|
||||||
|
sense_ID, & !< sense of acting shear stress (-1 or +1)
|
||||||
|
chi0_ID, & !< backstress at last switch of stress sense
|
||||||
|
gamma0_ID, & !< accumulated shear at last switch of stress sense
|
||||||
|
accshear_ID, &
|
||||||
|
shearrate_ID, &
|
||||||
|
resolvedstress_ID)
|
||||||
|
mySize = nSlip
|
||||||
|
case(sumGamma_ID)
|
||||||
|
mySize = 1_pInt
|
||||||
|
case default
|
||||||
|
end select
|
||||||
|
|
||||||
|
outputFound: if (mySize > 0_pInt) then
|
||||||
|
plastic_kinehardening_sizePostResult(o,instance) = mySize
|
||||||
|
plastic_kinehardening_sizePostResults(instance) = plastic_kinehardening_sizePostResults(instance) + mySize
|
||||||
|
endif outputFound
|
||||||
|
enddo outputsLoop
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! allocate state arrays
|
||||||
|
sizeDotState = nSlip & !< crss
|
||||||
|
+ nSlip & !< crss_back
|
||||||
|
+ nSlip & !< accumulated (absolute) shear
|
||||||
|
+ 1_pInt !< sum(gamma)
|
||||||
|
|
||||||
|
sizeDeltaState = nSlip & !< sense of acting shear stress (-1 or +1)
|
||||||
|
+ nSlip & !< backstress at last switch of stress sense
|
||||||
|
+ nSlip !< accumulated shear at last switch of stress sense
|
||||||
|
|
||||||
|
sizeState = sizeDotState + sizeDeltaState
|
||||||
|
plasticState(phase)%sizeState = sizeState
|
||||||
|
plasticState(phase)%sizeDotState = sizeDotState
|
||||||
|
plasticState(phase)%sizeDeltaState = sizeDeltaState
|
||||||
|
plasticState(phase)%offsetDeltaState = sizeDotState
|
||||||
|
plasticState(phase)%sizePostResults = plastic_kinehardening_sizePostResults(instance)
|
||||||
|
plasticState(phase)%nSlip = nSlip
|
||||||
|
|
||||||
|
allocate(plasticState(phase)%state0 ( sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
allocate(plasticState(phase)%partionedState0 ( sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
allocate(plasticState(phase)%subState0 ( sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
allocate(plasticState(phase)%state ( sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
allocate(plasticState(phase)%aTolState (sizeDotState), source=0.0_pReal)
|
||||||
|
allocate(plasticState(phase)%dotState (sizeDotState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
allocate(plasticState(phase)%deltaState (sizeDeltaState,NipcMyPhase), source=0.0_pReal) ! allocate space for deltaState
|
||||||
|
if (any(numerics_integrator == 1_pInt)) then
|
||||||
|
allocate(plasticState(phase)%previousDotState (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
|
allocate(plasticState(phase)%previousDotState2(sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
|
endif
|
||||||
|
if (any(numerics_integrator == 4_pInt)) &
|
||||||
|
allocate(plasticState(phase)%RK4dotState (sizeDotState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
if (any(numerics_integrator == 5_pInt)) &
|
||||||
|
allocate(plasticState(phase)%RKCK45dotState (6,sizeDotState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
|
||||||
|
offset_slip = plasticState(phase)%nSlip+plasticState(phase)%nTwin+2_pInt
|
||||||
|
plasticState(phase)%slipRate => &
|
||||||
|
plasticState(phase)%dotState(offset_slip+1:offset_slip+plasticState(phase)%nSlip,1:NipcMyPhase)
|
||||||
|
plasticState(phase)%accumulatedSlip => &
|
||||||
|
plasticState(phase)%state(offset_slip+1:offset_slip+plasticState(phase)%nSlip,1:NipcMyPhase)
|
||||||
|
|
||||||
|
allocate(param(instance)%hardeningMatrix_SlipSlip(nSlip,nSlip), source=0.0_pReal)
|
||||||
|
do f = 1_pInt,lattice_maxNslipFamily ! >>> interaction slip -- X
|
||||||
|
index_myFamily = sum(plastic_kinehardening_Nslip(1:f-1_pInt,instance))
|
||||||
|
do j = 1_pInt,plastic_kinehardening_Nslip(f,instance) ! loop over (active) systems in my family (slip)
|
||||||
|
do o = 1_pInt,lattice_maxNslipFamily
|
||||||
|
index_otherFamily = sum(plastic_kinehardening_Nslip(1:o-1_pInt,instance))
|
||||||
|
do k = 1_pInt,plastic_kinehardening_Nslip(o,instance) ! loop over (active) systems in other family (slip)
|
||||||
|
param(instance)%hardeningMatrix_SlipSlip(index_myFamily+j,index_otherFamily+k) = &
|
||||||
|
param(instance)%interaction_SlipSlip(lattice_interactionSlipSlip( &
|
||||||
|
sum(lattice_NslipSystem(1:f-1,phase))+j, &
|
||||||
|
sum(lattice_NslipSystem(1:o-1,phase))+k, &
|
||||||
|
phase))
|
||||||
|
enddo; enddo
|
||||||
|
enddo; enddo
|
||||||
|
|
||||||
|
!----------------------------------------------------------------------------------------------
|
||||||
|
!locally define dotState alias
|
||||||
|
|
||||||
|
endindex = 0_pInt
|
||||||
|
o = endIndex ! offset of dotstate index relative to state index
|
||||||
|
|
||||||
|
startIndex = endIndex + 1_pInt
|
||||||
|
endIndex = endIndex + nSlip
|
||||||
|
state (instance)%crss => plasticState(phase)%state (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
state0 (instance)%crss => plasticState(phase)%state0 (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
dotState(instance)%crss => plasticState(phase)%dotState (startIndex-o:endIndex-o,1:NipcMyPhase)
|
||||||
|
|
||||||
|
state0(instance)%crss = spread(math_expand(param(instance)%crss0,&
|
||||||
|
plastic_kinehardening_Nslip(:,instance)), &
|
||||||
|
2, NipcMyPhase)
|
||||||
|
plasticState(phase)%aTolState(startIndex-o:endIndex-o) = param(instance)%aTolResistance
|
||||||
|
|
||||||
|
! .............................................
|
||||||
|
startIndex = endIndex + 1_pInt
|
||||||
|
endIndex = endIndex + nSlip
|
||||||
|
state (instance)%crss_back => plasticState(phase)%state (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
state0 (instance)%crss_back => plasticState(phase)%state0 (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
dotState(instance)%crss_back => plasticState(phase)%dotState (startIndex-o:endIndex-o,1:NipcMyPhase)
|
||||||
|
|
||||||
|
state0(instance)%crss_back = 0.0_pReal
|
||||||
|
plasticState(phase)%aTolState(startIndex-o:endIndex-o) = param(instance)%aTolResistance
|
||||||
|
|
||||||
|
! .............................................
|
||||||
|
startIndex = endIndex + 1_pInt
|
||||||
|
endIndex = endIndex + nSlip
|
||||||
|
state (instance)%accshear => plasticState(phase)%state (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
state0 (instance)%accshear => plasticState(phase)%state0 (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
dotState(instance)%accshear => plasticState(phase)%dotState (startIndex-o:endIndex-o,1:NipcMyPhase)
|
||||||
|
|
||||||
|
state0(instance)%accshear = 0.0_pReal
|
||||||
|
plasticState(phase)%aTolState(startIndex-o:endIndex-o) = param(instance)%aTolShear
|
||||||
|
|
||||||
|
! .............................................
|
||||||
|
startIndex = endIndex + 1_pInt
|
||||||
|
endIndex = endIndex + 1_pInt
|
||||||
|
state (instance)%sumGamma => plasticState(phase)%state (startIndex ,1:NipcMyPhase)
|
||||||
|
state0 (instance)%sumGamma => plasticState(phase)%state0 (startIndex ,1:NipcMyPhase)
|
||||||
|
dotState(instance)%sumGamma => plasticState(phase)%dotState (startIndex-o ,1:NipcMyPhase)
|
||||||
|
|
||||||
|
state0(instance)%sumGamma = 0.0_pReal
|
||||||
|
plasticState(phase)%aTolState(startIndex-o:endIndex-o) = param(instance)%aTolShear
|
||||||
|
|
||||||
|
!----------------------------------------------------------------------------------------------
|
||||||
|
!locally define deltaState alias
|
||||||
|
o = endIndex
|
||||||
|
|
||||||
|
! .............................................
|
||||||
|
startIndex = endIndex + 1_pInt
|
||||||
|
endIndex = endIndex + nSlip
|
||||||
|
state (instance)%sense => plasticState(phase)%state (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
state0 (instance)%sense => plasticState(phase)%state0 (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
deltaState(instance)%sense => plasticState(phase)%deltaState(startIndex-o:endIndex-o,1:NipcMyPhase)
|
||||||
|
|
||||||
|
state0(instance)%sense = 0.0_pReal
|
||||||
|
|
||||||
|
! .............................................
|
||||||
|
startIndex = endIndex + 1_pInt
|
||||||
|
endIndex = endIndex + nSlip
|
||||||
|
state (instance)%chi0 => plasticState(phase)%state (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
state0 (instance)%chi0 => plasticState(phase)%state0 (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
deltaState(instance)%chi0 => plasticState(phase)%deltaState(startIndex-o:endIndex-o,1:NipcMyPhase)
|
||||||
|
|
||||||
|
state0(instance)%chi0 = 0.0_pReal
|
||||||
|
|
||||||
|
! .............................................
|
||||||
|
startIndex = endIndex + 1_pInt
|
||||||
|
endIndex = endIndex + nSlip
|
||||||
|
state (instance)%gamma0 => plasticState(phase)%state (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
state0 (instance)%gamma0 => plasticState(phase)%state0 (startIndex :endIndex ,1:NipcMyPhase)
|
||||||
|
deltaState(instance)%gamma0 => plasticState(phase)%deltaState(startIndex-o:endIndex-o,1:NipcMyPhase)
|
||||||
|
|
||||||
|
state0(instance)%gamma0 = 0.0_pReal
|
||||||
|
|
||||||
|
endif myPhase2
|
||||||
|
enddo initializeInstances
|
||||||
|
|
||||||
|
end subroutine plastic_kinehardening_init
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief calculation of shear rates (\dot \gamma)
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine plastic_kinehardening_shearRates(gdot_pos,gdot_neg,tau_pos,tau_neg, &
|
||||||
|
Tstar_v,ph,instance,of)
|
||||||
|
|
||||||
|
use lattice, only: &
|
||||||
|
lattice_NslipSystem, &
|
||||||
|
lattice_Sslip_v, &
|
||||||
|
lattice_maxNslipFamily, &
|
||||||
|
lattice_NnonSchmid
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
real(pReal), dimension(6), intent(in) :: &
|
||||||
|
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
|
integer(pInt), intent(in) :: &
|
||||||
|
ph, & !< phase ID
|
||||||
|
instance, & !< instance of that phase
|
||||||
|
of !< index of phaseMember
|
||||||
|
real(pReal), dimension(plastic_kinehardening_totalNslip(instance)), intent(out) :: &
|
||||||
|
gdot_pos, & !< shear rates from positive line segments
|
||||||
|
gdot_neg, & !< shear rates from negative line segments
|
||||||
|
tau_pos, & !< shear stress on positive line segments
|
||||||
|
tau_neg !< shear stress on negative line segments
|
||||||
|
|
||||||
|
integer(pInt) :: &
|
||||||
|
index_myFamily, &
|
||||||
|
f,i,j,k
|
||||||
|
|
||||||
|
|
||||||
|
j = 0_pInt
|
||||||
|
slipFamilies: do f = 1_pInt,lattice_maxNslipFamily
|
||||||
|
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
|
slipSystems: do i = 1_pInt,plastic_kinehardening_Nslip(f,instance)
|
||||||
|
j = j + 1_pInt
|
||||||
|
tau_pos(j) = dot_product(Tstar_v,lattice_Sslip_v(1:6,1,index_myFamily+i,ph))
|
||||||
|
tau_neg(j) = tau_pos(j)
|
||||||
|
nonSchmidSystems: do k = 1,lattice_NnonSchmid(ph)
|
||||||
|
tau_pos(j) = tau_pos(j) + param(instance)%nonSchmidCoeff(k)* &
|
||||||
|
dot_product(Tstar_v,lattice_Sslip_v(1:6,2*k+0,index_myFamily+i,ph))
|
||||||
|
tau_neg(j) = tau_neg(j) + param(instance)%nonSchmidCoeff(k)* &
|
||||||
|
dot_product(Tstar_v,lattice_Sslip_v(1:6,2*k+1,index_myFamily+i,ph))
|
||||||
|
enddo nonSchmidSystems
|
||||||
|
enddo slipSystems
|
||||||
|
enddo slipFamilies
|
||||||
|
|
||||||
|
gdot_pos = 0.5_pReal * param(instance)%gdot0 * &
|
||||||
|
(abs(tau_pos-state(instance)%crss_back(:,of))/ &
|
||||||
|
state(instance)%crss(:,of))**param(instance)%n_slip &
|
||||||
|
*sign(1.0_pReal,tau_pos-state(instance)%crss_back(:,of))
|
||||||
|
gdot_neg = 0.5_pReal * param(instance)%gdot0 * &
|
||||||
|
(abs(tau_neg-state(instance)%crss_back(:,of))/ &
|
||||||
|
state(instance)%crss(:,of))**param(instance)%n_slip &
|
||||||
|
*sign(1.0_pReal,tau_neg-state(instance)%crss_back(:,of))
|
||||||
|
|
||||||
|
|
||||||
|
end subroutine plastic_kinehardening_shearRates
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief calculates plastic velocity gradient and its tangent
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine plastic_kinehardening_LpAndItsTangent(Lp,dLp_dTstar99, &
|
||||||
|
Tstar_v,ipc,ip,el)
|
||||||
|
use prec, only: &
|
||||||
|
dNeq0
|
||||||
|
use debug, only: &
|
||||||
|
debug_level, &
|
||||||
|
debug_constitutive, &
|
||||||
|
debug_levelExtensive, &
|
||||||
|
debug_levelSelective, &
|
||||||
|
debug_e, &
|
||||||
|
debug_i, &
|
||||||
|
debug_g
|
||||||
|
use math, only: &
|
||||||
|
math_Plain3333to99, &
|
||||||
|
math_Mandel6to33, &
|
||||||
|
math_transpose33
|
||||||
|
use lattice, only: &
|
||||||
|
lattice_Sslip, & !< schmid matrix
|
||||||
|
lattice_Sslip_v, &
|
||||||
|
lattice_maxNslipFamily, &
|
||||||
|
lattice_NslipSystem, &
|
||||||
|
lattice_NnonSchmid
|
||||||
|
use material, only: &
|
||||||
|
phaseAt, phasememberAt, &
|
||||||
|
phase_plasticityInstance
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
|
Lp !< plastic velocity gradient
|
||||||
|
real(pReal), dimension(9,9), intent(out) :: &
|
||||||
|
dLp_dTstar99 !< derivative of Lp with respect to 2nd Piola Kirchhoff stress
|
||||||
|
|
||||||
|
integer(pInt), intent(in) :: &
|
||||||
|
ipc, & !< component-ID of integration point
|
||||||
|
ip, & !< integration point
|
||||||
|
el !< element
|
||||||
|
real(pReal), dimension(6), intent(in) :: &
|
||||||
|
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
|
|
||||||
|
integer(pInt) :: &
|
||||||
|
instance, &
|
||||||
|
index_myFamily, &
|
||||||
|
f,i,j,k,l,m,n, &
|
||||||
|
of, &
|
||||||
|
ph
|
||||||
|
|
||||||
|
real(pReal), dimension(plastic_kinehardening_totalNslip(phase_plasticityInstance(phaseAt(ipc,ip,el)))) :: &
|
||||||
|
gdot_pos,gdot_neg, &
|
||||||
|
tau_pos,tau_neg
|
||||||
|
real(pReal) :: &
|
||||||
|
dgdot_dtau_pos,dgdot_dtau_neg
|
||||||
|
real(pReal), dimension(3,3,3,3) :: &
|
||||||
|
dLp_dTstar3333 !< derivative of Lp with respect to Tstar as 4th order tensor
|
||||||
|
real(pReal), dimension(3,3,2) :: &
|
||||||
|
nonSchmid_tensor
|
||||||
|
|
||||||
|
ph = phaseAt(ipc,ip,el) !< figures phase for each material point
|
||||||
|
of = phasememberAt(ipc,ip,el) !< index of the positions of each constituent of material point, phasememberAt is a function in material that helps figure them out
|
||||||
|
instance = phase_plasticityInstance(ph)
|
||||||
|
|
||||||
|
Lp = 0.0_pReal
|
||||||
|
dLp_dTstar3333 = 0.0_pReal
|
||||||
|
dLp_dTstar99 = 0.0_pReal
|
||||||
|
|
||||||
|
call plastic_kinehardening_shearRates(gdot_pos,gdot_neg,tau_pos,tau_neg, &
|
||||||
|
Tstar_v,ph,instance,of)
|
||||||
|
|
||||||
|
|
||||||
|
j = 0_pInt ! reading and marking the starting index for each slip family
|
||||||
|
slipFamilies: do f = 1_pInt,lattice_maxNslipFamily
|
||||||
|
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
|
slipSystems: do i = 1_pInt,plastic_kinehardening_Nslip(f,instance)
|
||||||
|
j = j + 1_pInt
|
||||||
|
|
||||||
|
! build nonSchmid tensor
|
||||||
|
nonSchmid_tensor(1:3,1:3,1) = lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph)
|
||||||
|
nonSchmid_tensor(1:3,1:3,2) = nonSchmid_tensor(1:3,1:3,1)
|
||||||
|
do k = 1,lattice_NnonSchmid(ph)
|
||||||
|
nonSchmid_tensor(1:3,1:3,1) = &
|
||||||
|
nonSchmid_tensor(1:3,1:3,1) + param(instance)%nonSchmidCoeff(k) * &
|
||||||
|
lattice_Sslip(1:3,1:3,2*k,index_myFamily+i,ph)
|
||||||
|
nonSchmid_tensor(1:3,1:3,2) = &
|
||||||
|
nonSchmid_tensor(1:3,1:3,2) + param(instance)%nonSchmidCoeff(k) * &
|
||||||
|
lattice_Sslip(1:3,1:3,2*k+1,index_myFamily+i,ph)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
Lp = Lp + (gdot_pos(j)+gdot_neg(j))*lattice_Sslip(1:3,1:3,1,index_myFamily+i,ph) ! sum of all gdot*SchmidTensor gives Lp
|
||||||
|
|
||||||
|
! Calculation of the tangent of Lp ! sensitivity of Lp
|
||||||
|
if (dNeq0(gdot_pos(j))) then
|
||||||
|
dgdot_dtau_pos = gdot_pos(j)*param(instance)%n_slip/(tau_pos(j)-state(instance)%crss_back(j,of))
|
||||||
|
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) + dgdot_dtau_pos*lattice_Sslip(k,l,1,index_myFamily+i,ph)* &
|
||||||
|
nonSchmid_tensor(m,n,1)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (dNeq0(gdot_neg(j))) then
|
||||||
|
dgdot_dtau_neg = gdot_neg(j)*param(instance)%n_slip/(tau_neg(j)-state(instance)%crss_back(j,of))
|
||||||
|
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) + dgdot_dtau_neg*lattice_Sslip(k,l,1,index_myFamily+i,ph)* &
|
||||||
|
nonSchmid_tensor(m,n,2)
|
||||||
|
endif
|
||||||
|
enddo slipSystems
|
||||||
|
enddo slipFamilies
|
||||||
|
|
||||||
|
dLp_dTstar99 = math_Plain3333to99(dLp_dTstar3333)
|
||||||
|
|
||||||
|
end subroutine plastic_kinehardening_LpAndItsTangent
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief calculates (instantaneous) incremental change of microstructure
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine plastic_kinehardening_deltaState(Tstar_v,ipc,ip,el)
|
||||||
|
use prec, only: &
|
||||||
|
dNeq, &
|
||||||
|
dEq0
|
||||||
|
use debug, only: &
|
||||||
|
debug_level, &
|
||||||
|
debug_constitutive, &
|
||||||
|
debug_levelExtensive, &
|
||||||
|
debug_levelSelective, &
|
||||||
|
debug_e, &
|
||||||
|
debug_i, &
|
||||||
|
debug_g
|
||||||
|
use material, only: &
|
||||||
|
phaseAt, &
|
||||||
|
phasememberAt, &
|
||||||
|
phase_plasticityInstance
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
real(pReal), dimension(6), intent(in):: &
|
||||||
|
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
|
integer(pInt), intent(in) :: &
|
||||||
|
ipc, & !< component-ID of integration point
|
||||||
|
ip, & !< integration point
|
||||||
|
el !< element
|
||||||
|
real(pReal), dimension(6) :: &
|
||||||
|
Tstar_dev_v !< deviatoric 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
|
real(pReal), dimension(plastic_kinehardening_totalNslip(phase_plasticityInstance(phaseAt(ipc,ip,el)))) :: &
|
||||||
|
gdot_pos,gdot_neg, &
|
||||||
|
tau_pos,tau_neg, &
|
||||||
|
sense
|
||||||
|
integer(pInt) :: &
|
||||||
|
ph, &
|
||||||
|
instance, & !< instance of my instance (unique number of my constitutive model)
|
||||||
|
of, &
|
||||||
|
j !< shortcut notation for offset position in state array
|
||||||
|
|
||||||
|
ph = phaseAt(ipc,ip,el)
|
||||||
|
of = phasememberAt(ipc,ip,el) ! phasememberAt should be tackled by material and be renamed to material_phasemember
|
||||||
|
instance = phase_plasticityInstance(ph)
|
||||||
|
|
||||||
|
call plastic_kinehardening_shearRates(gdot_pos,gdot_neg,tau_pos,tau_neg, &
|
||||||
|
Tstar_v,ph,instance,of)
|
||||||
|
sense = merge(state(instance)%sense(:,of), & ! keep existing...
|
||||||
|
sign(1.0_pReal,gdot_pos+gdot_neg), & ! ...or have a defined
|
||||||
|
dEq0(gdot_pos+gdot_neg,1e-10_pReal)) ! current sense of shear direction
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (iand(debug_level(debug_constitutive), debug_levelExtensive) /= 0_pInt &
|
||||||
|
.and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) &
|
||||||
|
.or. .not. iand(debug_level(debug_constitutive),debug_levelSelective) /= 0_pInt)) then
|
||||||
|
write(6,'(a)') '======= kinehardening delta state ======='
|
||||||
|
endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! switch in sense of shear?
|
||||||
|
do j = 1,plastic_kinehardening_totalNslip(instance)
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (iand(debug_level(debug_constitutive), debug_levelExtensive) /= 0_pInt &
|
||||||
|
.and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) &
|
||||||
|
.or. .not. iand(debug_level(debug_constitutive),debug_levelSelective) /= 0_pInt)) then
|
||||||
|
write(6,'(i2,1x,f7.4,1x,f7.4)') j,sense(j),state(instance)%sense(j,of)
|
||||||
|
endif
|
||||||
|
#endif
|
||||||
|
if (dNeq(sense(j),state(instance)%sense(j,of),0.1_pReal)) then
|
||||||
|
deltaState(instance)%sense (j,of) = sense(j) - state(instance)%sense(j,of) ! switch sense
|
||||||
|
deltaState(instance)%chi0 (j,of) = abs(state(instance)%crss_back(j,of)) - state(instance)%chi0(j,of) ! remember current backstress magnitude
|
||||||
|
deltaState(instance)%gamma0(j,of) = state(instance)%accshear(j,of) - state(instance)%gamma0(j,of) ! remember current accumulated shear
|
||||||
|
else
|
||||||
|
deltaState(instance)%sense (j,of) = 0.0_pReal ! no change
|
||||||
|
deltaState(instance)%chi0 (j,of) = 0.0_pReal
|
||||||
|
deltaState(instance)%gamma0(j,of) = 0.0_pReal
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
|
||||||
|
end subroutine plastic_kinehardening_deltaState
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief calculates the rate of change of microstructure
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine plastic_kinehardening_dotState(Tstar_v,ipc,ip,el)
|
||||||
|
use lattice, only: &
|
||||||
|
lattice_Sslip_v, &
|
||||||
|
lattice_maxNslipFamily, &
|
||||||
|
lattice_NslipSystem, &
|
||||||
|
lattice_NnonSchmid
|
||||||
|
use material, only: &
|
||||||
|
material_phase, &
|
||||||
|
phaseAt, phasememberAt, &
|
||||||
|
plasticState, &
|
||||||
|
phase_plasticityInstance
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
real(pReal), dimension(6), intent(in) :: &
|
||||||
|
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation, vector form
|
||||||
|
integer(pInt), intent(in) :: &
|
||||||
|
ipc, & !< component-ID of integration point
|
||||||
|
ip, & !< integration point
|
||||||
|
el !< element !< microstructure state
|
||||||
|
|
||||||
|
integer(pInt) :: &
|
||||||
|
instance,ph, &
|
||||||
|
f,i,j,k, &
|
||||||
|
index_myFamily,index_otherFamily, &
|
||||||
|
nSlip, &
|
||||||
|
offset_accshear, &
|
||||||
|
of
|
||||||
|
|
||||||
|
real(pReal), dimension(plastic_kinehardening_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))) :: &
|
||||||
|
gdot_pos,gdot_neg, &
|
||||||
|
tau_pos,tau_neg
|
||||||
|
|
||||||
|
of = phasememberAt(ipc,ip,el)
|
||||||
|
ph = phaseAt(ipc,ip,el)
|
||||||
|
instance = phase_plasticityInstance(ph)
|
||||||
|
nSlip = plastic_kinehardening_totalNslip(instance)
|
||||||
|
|
||||||
|
dotState(instance)%sumGamma(of) = 0.0_pReal
|
||||||
|
|
||||||
|
call plastic_kinehardening_shearRates(gdot_pos,gdot_neg,tau_pos,tau_neg, &
|
||||||
|
Tstar_v,ph,instance,of)
|
||||||
|
|
||||||
|
j = 0_pInt
|
||||||
|
slipFamilies: do f = 1_pInt,lattice_maxNslipFamily
|
||||||
|
slipSystems: do i = 1_pInt,plastic_kinehardening_Nslip(f,instance)
|
||||||
|
j = j+1_pInt
|
||||||
|
dotState(instance)%crss(j,of) = & ! evolution of slip resistance j
|
||||||
|
dot_product(param(instance)%hardeningMatrix_SlipSlip(j,1:nSlip),abs(gdot_pos+gdot_neg)) * &
|
||||||
|
( param(instance)%theta1(f) + &
|
||||||
|
(param(instance)%theta0(f) - param(instance)%theta1(f) &
|
||||||
|
+ param(instance)%theta0(f)*param(instance)%theta1(f)*state(instance)%sumGamma(of)/param(instance)%tau1(f)) &
|
||||||
|
*exp(-state(instance)%sumGamma(of)*param(instance)%theta0(f)/param(instance)%tau1(f)) & ! V term depending on the harding law
|
||||||
|
)
|
||||||
|
dotState(instance)%crss_back(j,of) = & ! evolution of back stress resistance j
|
||||||
|
state(instance)%sense(j,of)*abs(gdot_pos(j)+gdot_neg(j)) * &
|
||||||
|
( param(instance)%theta1_b(f) + &
|
||||||
|
(param(instance)%theta0_b(f) - param(instance)%theta1_b(f) &
|
||||||
|
+ param(instance)%theta0_b(f)*param(instance)%theta1_b(f)/(param(instance)%tau1_b(f)+state(instance)%chi0(j,of)) &
|
||||||
|
*(state(instance)%accshear(j,of)-state(instance)%gamma0(j,of))) &
|
||||||
|
*exp(-(state(instance)%accshear(j,of)-state(instance)%gamma0(j,of)) &
|
||||||
|
*param(instance)%theta0_b(f)/(param(instance)%tau1_b(f)+state(instance)%chi0(j,of))) &
|
||||||
|
) ! V term depending on the harding law for back stress
|
||||||
|
|
||||||
|
dotState(instance)%accshear(j,of) = abs(gdot_pos(j)+gdot_neg(j))
|
||||||
|
dotState(instance)%sumGamma(of) = dotState(instance)%sumGamma(of) + dotState(instance)%accshear(j,of)
|
||||||
|
enddo slipSystems
|
||||||
|
enddo slipFamilies
|
||||||
|
|
||||||
|
end subroutine plastic_kinehardening_dotState
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief return array of constitutive results
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
function plastic_kinehardening_postResults(Tstar_v,ipc,ip,el)
|
||||||
|
use material, only: &
|
||||||
|
material_phase, &
|
||||||
|
plasticState, &
|
||||||
|
phaseAt, phasememberAt, &
|
||||||
|
phase_plasticityInstance
|
||||||
|
use lattice, only: &
|
||||||
|
lattice_Sslip_v, &
|
||||||
|
lattice_maxNslipFamily, &
|
||||||
|
lattice_NslipSystem, &
|
||||||
|
lattice_NnonSchmid
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
real(pReal), dimension(6), intent(in) :: &
|
||||||
|
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
|
integer(pInt), intent(in) :: &
|
||||||
|
ipc, & !< component-ID of integration point
|
||||||
|
ip, & !< integration point
|
||||||
|
el !< element !< microstructure state
|
||||||
|
|
||||||
|
real(pReal), dimension(plastic_kinehardening_sizePostResults(phase_plasticityInstance(material_phase(ipc,ip,el)))) :: &
|
||||||
|
plastic_kinehardening_postResults
|
||||||
|
|
||||||
|
integer(pInt) :: &
|
||||||
|
instance,ph, of, &
|
||||||
|
nSlip,&
|
||||||
|
o,f,i,c,j,k, &
|
||||||
|
index_myFamily
|
||||||
|
|
||||||
|
real(pReal), dimension(plastic_kinehardening_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))) :: &
|
||||||
|
gdot_pos,gdot_neg, &
|
||||||
|
tau_pos,tau_neg
|
||||||
|
|
||||||
|
of = phasememberAt(ipc,ip,el)
|
||||||
|
ph = phaseAt(ipc,ip,el)
|
||||||
|
instance = phase_plasticityInstance(ph)
|
||||||
|
|
||||||
|
nSlip = plastic_kinehardening_totalNslip(instance)
|
||||||
|
|
||||||
|
plastic_kinehardening_postResults = 0.0_pReal
|
||||||
|
c = 0_pInt
|
||||||
|
|
||||||
|
call plastic_kinehardening_shearRates(gdot_pos,gdot_neg,tau_pos,tau_neg, &
|
||||||
|
Tstar_v,ph,instance,of)
|
||||||
|
|
||||||
|
outputsLoop: do o = 1_pInt,plastic_kinehardening_Noutput(instance)
|
||||||
|
select case(param(instance)%outputID(o))
|
||||||
|
case (crss_ID)
|
||||||
|
plastic_kinehardening_postResults(c+1_pInt:c+nSlip) = state(instance)%crss(:,of)
|
||||||
|
c = c + nSlip
|
||||||
|
|
||||||
|
case(crss_back_ID)
|
||||||
|
plastic_kinehardening_postResults(c+1_pInt:c+nSlip) = state(instance)%crss_back(:,of)
|
||||||
|
c = c + nSlip
|
||||||
|
|
||||||
|
case (sense_ID)
|
||||||
|
plastic_kinehardening_postResults(c+1_pInt:c+nSlip) = state(instance)%sense(:,of)
|
||||||
|
c = c + nSlip
|
||||||
|
|
||||||
|
case (chi0_ID)
|
||||||
|
plastic_kinehardening_postResults(c+1_pInt:c+nSlip) = state(instance)%chi0(:,of)
|
||||||
|
c = c + nSlip
|
||||||
|
|
||||||
|
case (gamma0_ID)
|
||||||
|
plastic_kinehardening_postResults(c+1_pInt:c+nSlip) = state(instance)%gamma0(:,of)
|
||||||
|
c = c + nSlip
|
||||||
|
|
||||||
|
case (accshear_ID)
|
||||||
|
plastic_kinehardening_postResults(c+1_pInt:c+nSlip) = state(instance)%accshear(:,of)
|
||||||
|
c = c + nSlip
|
||||||
|
|
||||||
|
case (sumGamma_ID)
|
||||||
|
plastic_kinehardening_postResults(c+1_pInt) = state(instance)%sumGamma(of)
|
||||||
|
c = c + 1_pInt
|
||||||
|
|
||||||
|
case (shearrate_ID)
|
||||||
|
plastic_kinehardening_postResults(c+1_pInt:c+nSlip) = gdot_pos+gdot_neg
|
||||||
|
c = c + nSlip
|
||||||
|
|
||||||
|
case (resolvedstress_ID)
|
||||||
|
j = 0_pInt
|
||||||
|
slipFamilies: do f = 1_pInt,lattice_maxNslipFamily
|
||||||
|
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
|
slipSystems: do i = 1_pInt,plastic_kinehardening_Nslip(f,instance)
|
||||||
|
j = j + 1_pInt
|
||||||
|
plastic_kinehardening_postResults(c+j) = &
|
||||||
|
dot_product(Tstar_v,lattice_Sslip_v(1:6,1,index_myFamily+i,ph))
|
||||||
|
enddo slipSystems
|
||||||
|
enddo slipFamilies
|
||||||
|
c = c + nSlip
|
||||||
|
|
||||||
|
end select
|
||||||
|
enddo outputsLoop
|
||||||
|
|
||||||
|
end function plastic_kinehardening_postResults
|
||||||
|
|
||||||
|
end module plastic_kinehardening
|
|
@ -68,7 +68,7 @@ module prec
|
||||||
nTrans = 0_pInt
|
nTrans = 0_pInt
|
||||||
logical :: &
|
logical :: &
|
||||||
nonlocal = .false.
|
nonlocal = .false.
|
||||||
real(pReal), pointer, dimension(:,:), contiguous :: &
|
real(pReal), pointer, dimension(:,:) :: &
|
||||||
slipRate, & !< slip rate
|
slipRate, & !< slip rate
|
||||||
accumulatedSlip !< accumulated plastic slip
|
accumulatedSlip !< accumulated plastic slip
|
||||||
end type
|
end type
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
!> @brief Spectral solver for nonlocal damage
|
!> @brief Spectral solver for nonlocal damage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module spectral_damage
|
module spectral_damage
|
||||||
|
#include <petsc/finclude/petscsnes.h>
|
||||||
|
#include <petsc/finclude/petscdmda.h>
|
||||||
|
use PETScdmda
|
||||||
|
use PETScsnes
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pInt, &
|
pInt, &
|
||||||
pReal
|
pReal
|
||||||
|
@ -18,7 +22,6 @@ module spectral_damage
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
#include <petsc/finclude/petsc.h90>
|
|
||||||
|
|
||||||
character (len=*), parameter, public :: &
|
character (len=*), parameter, public :: &
|
||||||
spectral_damage_label = 'spectraldamage'
|
spectral_damage_label = 'spectraldamage'
|
||||||
|
@ -46,13 +49,9 @@ module spectral_damage
|
||||||
public :: &
|
public :: &
|
||||||
spectral_damage_init, &
|
spectral_damage_init, &
|
||||||
spectral_damage_solution, &
|
spectral_damage_solution, &
|
||||||
spectral_damage_forward, &
|
spectral_damage_forward
|
||||||
spectral_damage_destroy
|
|
||||||
external :: &
|
external :: &
|
||||||
PETScFinalize, &
|
PETScErrorF ! is called in the CHKERRQ macro
|
||||||
MPI_Abort, &
|
|
||||||
MPI_Bcast, &
|
|
||||||
MPI_Allreduce
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -79,32 +78,22 @@ subroutine spectral_damage_init()
|
||||||
damage_nonlocal_getMobility
|
damage_nonlocal_getMobility
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), dimension(:), allocatable :: localK
|
PetscInt, dimension(:), allocatable :: localK
|
||||||
integer(pInt) :: proc
|
integer(pInt) :: proc
|
||||||
integer(pInt) :: i, j, k, cell
|
integer(pInt) :: i, j, k, cell
|
||||||
DM :: damage_grid
|
DM :: damage_grid
|
||||||
Vec :: uBound, lBound
|
Vec :: uBound, lBound
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
character(len=100) :: snes_type
|
character(len=100) :: snes_type
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
SNESCreate, &
|
|
||||||
SNESSetOptionsPrefix, &
|
SNESSetOptionsPrefix, &
|
||||||
DMDACreate3D, &
|
|
||||||
SNESSetDM, &
|
|
||||||
DMDAGetCorners, &
|
|
||||||
DMCreateGlobalVector, &
|
|
||||||
DMDASNESSetFunctionLocal, &
|
|
||||||
SNESSetFromOptions, &
|
|
||||||
SNESGetType, &
|
SNESGetType, &
|
||||||
VecSet, &
|
DMDAGetCorners, &
|
||||||
DMGetGlobalVector, &
|
DMDASNESSetFunctionLocal
|
||||||
DMRestoreGlobalVector, &
|
|
||||||
SNESVISetVariableBounds
|
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- spectral_damage init -+>>>'
|
write(6,'(/,a)') ' <<<+- spectral_damage init -+>>>'
|
||||||
write(6,'(/,a)') ' Shanthraj et al., Handbook of Mechanics of Materials, volume in press, '
|
write(6,'(/,a)') ' Shanthraj et al., Handbook of Mechanics of Materials, volume in press, '
|
||||||
write(6,'(/,a)') ' chapter Spectral Solvers for Crystal Plasticity and Multi-Physics Simulations. Springer, 2018 '
|
write(6,'(a,/)') ' chapter Spectral Solvers for Crystal Plasticity and Multi-Physics Simulations. Springer, 2018 '
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
|
|
||||||
|
@ -116,21 +105,23 @@ subroutine spectral_damage_init()
|
||||||
do proc = 1, worldsize
|
do proc = 1, worldsize
|
||||||
call MPI_Bcast(localK(proc),1,MPI_INTEGER,proc-1,PETSC_COMM_WORLD,ierr)
|
call MPI_Bcast(localK(proc),1,MPI_INTEGER,proc-1,PETSC_COMM_WORLD,ierr)
|
||||||
enddo
|
enddo
|
||||||
call DMDACreate3d(PETSC_COMM_WORLD, &
|
call DMDACreate3D(PETSC_COMM_WORLD, &
|
||||||
DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, & !< cut off stencil at boundary
|
DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, & !< cut off stencil at boundary
|
||||||
DMDA_STENCIL_BOX, & !< Moore (26) neighborhood around central point
|
DMDA_STENCIL_BOX, & !< Moore (26) neighborhood around central point
|
||||||
grid(1),grid(2),grid(3), & !< global grid
|
grid(1),grid(2),grid(3), & !< global grid
|
||||||
1, 1, worldsize, &
|
1, 1, worldsize, &
|
||||||
1, 0, & !< #dof (damage phase field), ghost boundary width (domain overlap)
|
1, 0, & !< #dof (damage phase field), ghost boundary width (domain overlap)
|
||||||
grid(1),grid(2),localK, & !< local grid
|
[grid(1)],[grid(2)],localK, & !< local grid
|
||||||
damage_grid,ierr) !< handle, error
|
damage_grid,ierr) !< handle, error
|
||||||
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 DMsetFromOptions(damage_grid,ierr); CHKERRQ(ierr)
|
||||||
|
call DMsetUp(damage_grid,ierr); CHKERRQ(ierr)
|
||||||
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,&
|
call DMDASNESSetFunctionLocal(damage_grid,INSERT_VALUES,spectral_damage_formResidual,&
|
||||||
PETSC_NULL_OBJECT,ierr) !< residual vector of same shape as solution vector
|
PETSC_NULL_SNES,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)
|
||||||
if (trim(snes_type) == 'vinewtonrsls' .or. &
|
if (trim(snes_type) == 'vinewtonrsls' .or. &
|
||||||
trim(snes_type) == 'vinewtonssls') then
|
trim(snes_type) == 'vinewtonssls') then
|
||||||
|
@ -138,7 +129,7 @@ subroutine spectral_damage_init()
|
||||||
call DMGetGlobalVector(damage_grid,uBound,ierr); CHKERRQ(ierr)
|
call DMGetGlobalVector(damage_grid,uBound,ierr); CHKERRQ(ierr)
|
||||||
call VecSet(lBound,0.0,ierr); CHKERRQ(ierr)
|
call VecSet(lBound,0.0,ierr); CHKERRQ(ierr)
|
||||||
call VecSet(uBound,1.0,ierr); CHKERRQ(ierr)
|
call VecSet(uBound,1.0,ierr); CHKERRQ(ierr)
|
||||||
call SNESVISetVariableBounds(damage_snes,lBound,uBound,ierr) !< variable bounds for variational inequalities like contact mechanics, damage etc.
|
call SNESVISetVariableBounds(damage_snes,lBound,uBound,ierr) !< variable bounds for variational inequalities like contact mechanics, damage etc.
|
||||||
call DMRestoreGlobalVector(damage_grid,lBound,ierr); CHKERRQ(ierr)
|
call DMRestoreGlobalVector(damage_grid,lBound,ierr); CHKERRQ(ierr)
|
||||||
call DMRestoreGlobalVector(damage_grid,uBound,ierr); CHKERRQ(ierr)
|
call DMRestoreGlobalVector(damage_grid,uBound,ierr); CHKERRQ(ierr)
|
||||||
endif
|
endif
|
||||||
|
@ -206,8 +197,7 @@ type(tSolutionState) function spectral_damage_solution(timeinc,timeinc_old,loadC
|
||||||
external :: &
|
external :: &
|
||||||
VecMin, &
|
VecMin, &
|
||||||
VecMax, &
|
VecMax, &
|
||||||
SNESSolve, &
|
SNESSolve
|
||||||
SNESGetConvergedReason
|
|
||||||
|
|
||||||
spectral_damage_solution%converged =.false.
|
spectral_damage_solution%converged =.false.
|
||||||
|
|
||||||
|
@ -216,7 +206,7 @@ type(tSolutionState) function spectral_damage_solution(timeinc,timeinc_old,loadC
|
||||||
params%timeinc = timeinc
|
params%timeinc = timeinc
|
||||||
params%timeincOld = timeinc_old
|
params%timeincOld = timeinc_old
|
||||||
|
|
||||||
call SNESSolve(damage_snes,PETSC_NULL_OBJECT,solution,ierr); CHKERRQ(ierr)
|
call SNESSolve(damage_snes,PETSC_NULL_VEC,solution,ierr); CHKERRQ(ierr)
|
||||||
call SNESGetConvergedReason(damage_snes,reason,ierr); CHKERRQ(ierr)
|
call SNESGetConvergedReason(damage_snes,reason,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
if (reason < 1) then
|
if (reason < 1) then
|
||||||
|
@ -244,14 +234,12 @@ type(tSolutionState) function spectral_damage_solution(timeinc,timeinc_old,loadC
|
||||||
|
|
||||||
call VecMin(solution,position,minDamage,ierr); CHKERRQ(ierr)
|
call VecMin(solution,position,minDamage,ierr); CHKERRQ(ierr)
|
||||||
call VecMax(solution,position,maxDamage,ierr); CHKERRQ(ierr)
|
call VecMax(solution,position,maxDamage,ierr); CHKERRQ(ierr)
|
||||||
if (worldrank == 0) then
|
if (spectral_damage_solution%converged) &
|
||||||
if (spectral_damage_solution%converged) &
|
write(6,'(/,a)') ' ... nonlocal damage converged .....................................'
|
||||||
write(6,'(/,a)') ' ... nonlocal damage converged .....................................'
|
write(6,'(/,a,f8.6,2x,f8.6,2x,f8.6,/)',advance='no') ' Minimum|Maximum|Delta Damage = ',&
|
||||||
write(6,'(/,a,f8.6,2x,f8.6,2x,f8.6,/)',advance='no') ' Minimum|Maximum|Delta Damage = ',&
|
|
||||||
minDamage, maxDamage, stagNorm
|
minDamage, maxDamage, stagNorm
|
||||||
write(6,'(/,a)') ' ==========================================================================='
|
write(6,'(/,a)') ' ==========================================================================='
|
||||||
flush(6)
|
flush(6)
|
||||||
endif
|
|
||||||
|
|
||||||
end function spectral_damage_solution
|
end function spectral_damage_solution
|
||||||
|
|
||||||
|
@ -361,9 +349,6 @@ subroutine spectral_damage_forward()
|
||||||
DM :: dm_local
|
DM :: dm_local
|
||||||
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
|
|
||||||
external :: &
|
|
||||||
SNESGetDM
|
|
||||||
|
|
||||||
if (cutBack) then
|
if (cutBack) then
|
||||||
damage_current = damage_lastInc
|
damage_current = damage_lastInc
|
||||||
|
@ -397,23 +382,6 @@ subroutine spectral_damage_forward()
|
||||||
call MPI_Allreduce(MPI_IN_PLACE,mobility_ref,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr)
|
call MPI_Allreduce(MPI_IN_PLACE,mobility_ref,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
end subroutine spectral_damage_forward
|
end subroutine spectral_damage_forward
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief destroy routine
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
subroutine spectral_damage_destroy()
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
PetscErrorCode :: ierr
|
|
||||||
|
|
||||||
external :: &
|
|
||||||
VecDestroy, &
|
|
||||||
SNESDestroy
|
|
||||||
|
|
||||||
call VecDestroy(solution,ierr); CHKERRQ(ierr)
|
|
||||||
call SNESDestroy(damage_snes,ierr); CHKERRQ(ierr)
|
|
||||||
|
|
||||||
end subroutine spectral_damage_destroy
|
|
||||||
|
|
||||||
end module spectral_damage
|
end module spectral_damage
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
module DAMASK_interface
|
module DAMASK_interface
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pInt
|
pInt
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
#include <petsc/finclude/petscsys.h>
|
|
||||||
logical, public, protected :: appendToOutFile = .false. !< Append to existing spectralOut file (in case of restart, not in case of regridding)
|
logical, public, protected :: appendToOutFile = .false. !< Append to existing spectralOut file (in case of restart, not in case of regridding)
|
||||||
integer(pInt), public, protected :: spectralRestartInc = 0_pInt !< Increment at which calculation starts
|
integer(pInt), public, protected :: spectralRestartInc = 0_pInt !< Increment at which calculation starts
|
||||||
character(len=1024), public, protected :: &
|
character(len=1024), public, protected :: &
|
||||||
|
@ -44,7 +44,13 @@ contains
|
||||||
subroutine DAMASK_interface_init()
|
subroutine DAMASK_interface_init()
|
||||||
use, intrinsic :: &
|
use, intrinsic :: &
|
||||||
iso_fortran_env
|
iso_fortran_env
|
||||||
|
#include <petsc/finclude/petscsys.h>
|
||||||
|
#if PETSC_VERSION_MAJOR!=3 || PETSC_VERSION_MINOR!=9
|
||||||
|
===================================================================================================
|
||||||
|
========================= THIS VERSION OF DAMASK REQUIRES PETSc 3.9.x =========================
|
||||||
|
===================================================================================================
|
||||||
|
#endif
|
||||||
|
use PETScSys
|
||||||
use system_routines, only: &
|
use system_routines, only: &
|
||||||
getHostName
|
getHostName
|
||||||
|
|
||||||
|
@ -72,11 +78,8 @@ subroutine DAMASK_interface_init()
|
||||||
logical :: error
|
logical :: error
|
||||||
external :: &
|
external :: &
|
||||||
quit,&
|
quit,&
|
||||||
MPI_Comm_rank,&
|
PETScErrorF, & ! is called in the CHKERRQ macro
|
||||||
MPI_Comm_size,&
|
PETScInitialize
|
||||||
PETScInitialize, &
|
|
||||||
MPI_Init_Thread, &
|
|
||||||
MPI_abort
|
|
||||||
|
|
||||||
open(6, encoding='UTF-8') ! for special characters in output
|
open(6, encoding='UTF-8') ! for special characters in output
|
||||||
|
|
||||||
|
@ -91,7 +94,7 @@ subroutine DAMASK_interface_init()
|
||||||
call quit(1_pInt)
|
call quit(1_pInt)
|
||||||
endif
|
endif
|
||||||
#endif
|
#endif
|
||||||
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(PETSC_COMM_WORLD,worldsize,ierr);CHKERRQ(ierr)
|
call MPI_Comm_size(PETSC_COMM_WORLD,worldsize,ierr);CHKERRQ(ierr)
|
||||||
|
@ -104,10 +107,6 @@ subroutine DAMASK_interface_init()
|
||||||
write(output_unit,'(a)') ' STDERR != 0'
|
write(output_unit,'(a)') ' STDERR != 0'
|
||||||
call quit(1_pInt)
|
call quit(1_pInt)
|
||||||
endif
|
endif
|
||||||
if (PETSC_VERSION_MAJOR /= 3 .or. PETSC_VERSION_MINOR /= 7) then
|
|
||||||
write(6,'(a,2(i1.1,a))') 'PETSc ',PETSC_VERSION_MAJOR,'.',PETSC_VERSION_MINOR,'.x not supported'
|
|
||||||
call quit(1_pInt)
|
|
||||||
endif
|
|
||||||
else mainProcess
|
else mainProcess
|
||||||
close(6) ! disable output for non-master processes (open 6 to rank specific file for debug)
|
close(6) ! disable output for non-master processes (open 6 to rank specific file for debug)
|
||||||
open(6,file='/dev/null',status='replace') ! close(6) alone will leave some temp files in cwd
|
open(6,file='/dev/null',status='replace') ! close(6) alone will leave some temp files in cwd
|
||||||
|
@ -525,5 +524,4 @@ pure function IIO_stringPos(string)
|
||||||
|
|
||||||
end function IIO_stringPos
|
end function IIO_stringPos
|
||||||
|
|
||||||
|
|
||||||
end module
|
end module
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
!> @brief Basic scheme PETSc solver
|
!> @brief Basic scheme PETSc solver
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module spectral_mech_basic
|
module spectral_mech_basic
|
||||||
|
#include <petsc/finclude/petscsnes.h>
|
||||||
|
#include <petsc/finclude/petscdmda.h>
|
||||||
|
use PETScdmda
|
||||||
|
use PETScsnes
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pInt, &
|
pInt, &
|
||||||
pReal
|
pReal
|
||||||
|
@ -16,7 +20,6 @@ module spectral_mech_basic
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
#include <petsc/finclude/petsc.h90>
|
|
||||||
|
|
||||||
character (len=*), parameter, public :: &
|
character (len=*), parameter, public :: &
|
||||||
DAMASK_spectral_SolverBasicPETSC_label = 'basicpetsc'
|
DAMASK_spectral_SolverBasicPETSC_label = 'basicpetsc'
|
||||||
|
@ -64,13 +67,9 @@ module spectral_mech_basic
|
||||||
public :: &
|
public :: &
|
||||||
basicPETSc_init, &
|
basicPETSc_init, &
|
||||||
basicPETSc_solution, &
|
basicPETSc_solution, &
|
||||||
BasicPETSc_forward, &
|
BasicPETSc_forward
|
||||||
basicPETSc_destroy
|
|
||||||
external :: &
|
external :: &
|
||||||
PETScFinalize, &
|
PETScErrorF ! is called in the CHKERRQ macro
|
||||||
MPI_Abort, &
|
|
||||||
MPI_Bcast, &
|
|
||||||
MPI_Allreduce
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -118,25 +117,18 @@ subroutine basicPETSc_init
|
||||||
|
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
PetscScalar, pointer, dimension(:,:,:,:) :: F
|
PetscScalar, pointer, dimension(:,:,:,:) :: F
|
||||||
|
PetscInt, dimension(:), allocatable :: localK
|
||||||
integer(pInt), dimension(:), allocatable :: localK
|
|
||||||
integer(pInt) :: proc
|
integer(pInt) :: proc
|
||||||
character(len=1024) :: rankStr
|
character(len=1024) :: rankStr
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
SNESCreate, &
|
|
||||||
SNESSetOptionsPrefix, &
|
SNESSetOptionsPrefix, &
|
||||||
DMDACreate3D, &
|
|
||||||
SNESSetDM, &
|
|
||||||
DMCreateGlobalVector, &
|
|
||||||
DMDASNESSetFunctionLocal, &
|
|
||||||
SNESGetConvergedReason, &
|
|
||||||
SNESSetConvergenceTest, &
|
SNESSetConvergenceTest, &
|
||||||
SNESSetFromOptions
|
DMDASNESsetFunctionLocal
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverBasicPETSc init -+>>>'
|
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverBasicPETSc init -+>>>'
|
||||||
write(6,'(/,a)') ' Shanthraj et al., International Journal of Plasticity, 66:31–45, 2015'
|
write(6,'(/,a)') ' Shanthraj et al., International Journal of Plasticity, 66:31–45, 2015'
|
||||||
write(6,'(/,a)') ' https://doi.org/10.1016/j.ijplas.2014.02.006'
|
write(6,'(a,/)') ' https://doi.org/10.1016/j.ijplas.2014.02.006'
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
|
|
||||||
|
@ -159,16 +151,18 @@ subroutine basicPETSc_init
|
||||||
grid(1),grid(2),grid(3), & ! global grid
|
grid(1),grid(2),grid(3), & ! global grid
|
||||||
1 , 1, worldsize, &
|
1 , 1, worldsize, &
|
||||||
9, 0, & ! #dof (F tensor), ghost boundary width (domain overlap)
|
9, 0, & ! #dof (F tensor), ghost boundary width (domain overlap)
|
||||||
grid(1),grid(2),localK, & ! local grid
|
[grid(1)],[grid(2)],localK, & ! local grid
|
||||||
da,ierr) ! handle, error
|
da,ierr) ! handle, error
|
||||||
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 DMCreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr) ! global solution vector (grid x 9, i.e. every def grad tensor)
|
call DMsetFromOptions(da,ierr); CHKERRQ(ierr)
|
||||||
call DMDASNESSetFunctionLocal(da,INSERT_VALUES,BasicPETSC_formResidual,PETSC_NULL_OBJECT,ierr) ! residual vector of same shape as solution vector
|
call DMsetUp(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 DMDASNESsetFunctionLocal(da,INSERT_VALUES,BasicPETSC_formResidual,PETSC_NULL_SNES,ierr) ! residual vector of same shape as solution vector
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetConvergenceTest(snes,BasicPETSC_converged,PETSC_NULL_OBJECT,PETSC_NULL_FUNCTION,ierr) ! specify custom convergence check function "_converged"
|
call SNESsetConvergenceTest(snes,BasicPETSC_converged,PETSC_NULL_SNES,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
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! init fields
|
! init fields
|
||||||
|
@ -255,8 +249,7 @@ type(tSolutionState) function basicPETSc_solution(incInfoIn,timeinc,timeinc_old,
|
||||||
SNESConvergedReason :: reason
|
SNESConvergedReason :: reason
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
SNESSolve, &
|
SNESsolve
|
||||||
SNESGetConvergedReason
|
|
||||||
|
|
||||||
incInfo = incInfoIn
|
incInfo = incInfoIn
|
||||||
|
|
||||||
|
@ -276,7 +269,7 @@ type(tSolutionState) function basicPETSc_solution(incInfoIn,timeinc,timeinc_old,
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! solve BVP
|
! solve BVP
|
||||||
call SNESSolve(snes,PETSC_NULL_OBJECT,solution_vec,ierr); CHKERRQ(ierr)
|
call SNESsolve(snes,PETSC_NULL_VEC,solution_vec,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! check convergence
|
! check convergence
|
||||||
|
@ -334,10 +327,6 @@ subroutine BasicPETSC_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
real(pReal), dimension(3,3) :: &
|
real(pReal), dimension(3,3) :: &
|
||||||
deltaF_aim
|
deltaF_aim
|
||||||
|
|
||||||
external :: &
|
|
||||||
SNESGetNumberFunctionEvals, &
|
|
||||||
SNESGetIterationNumber
|
|
||||||
|
|
||||||
call SNESGetNumberFunctionEvals(snes,nfuncs,ierr); CHKERRQ(ierr)
|
call SNESGetNumberFunctionEvals(snes,nfuncs,ierr); CHKERRQ(ierr)
|
||||||
call SNESGetIterationNumber(snes,PETScIter,ierr); CHKERRQ(ierr)
|
call SNESGetIterationNumber(snes,PETScIter,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
|
@ -551,25 +540,4 @@ subroutine BasicPETSc_forward(guess,timeinc,timeinc_old,loadCaseTime,deformation
|
||||||
|
|
||||||
end subroutine BasicPETSc_forward
|
end subroutine BasicPETSc_forward
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief destroy routine
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
subroutine BasicPETSc_destroy()
|
|
||||||
use spectral_utilities, only: &
|
|
||||||
Utilities_destroy
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
PetscErrorCode :: ierr
|
|
||||||
|
|
||||||
external :: &
|
|
||||||
VecDestroy, &
|
|
||||||
SNESDestroy, &
|
|
||||||
DMDestroy
|
|
||||||
|
|
||||||
call VecDestroy(solution_vec,ierr); CHKERRQ(ierr)
|
|
||||||
call SNESDestroy(snes,ierr); CHKERRQ(ierr)
|
|
||||||
call DMDestroy(da,ierr); CHKERRQ(ierr)
|
|
||||||
|
|
||||||
end subroutine BasicPETSc_destroy
|
|
||||||
|
|
||||||
end module spectral_mech_basic
|
end module spectral_mech_basic
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
!> @brief Polarisation scheme solver
|
!> @brief Polarisation scheme solver
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module spectral_mech_Polarisation
|
module spectral_mech_Polarisation
|
||||||
|
#include <petsc/finclude/petscsnes.h>
|
||||||
|
#include <petsc/finclude/petscdmda.h>
|
||||||
|
use PETScdmda
|
||||||
|
use PETScsnes
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pInt, &
|
pInt, &
|
||||||
pReal
|
pReal
|
||||||
|
@ -16,7 +20,6 @@ module spectral_mech_Polarisation
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
#include <petsc/finclude/petsc.h90>
|
|
||||||
|
|
||||||
character (len=*), parameter, public :: &
|
character (len=*), parameter, public :: &
|
||||||
DAMASK_spectral_solverPolarisation_label = 'polarisation'
|
DAMASK_spectral_solverPolarisation_label = 'polarisation'
|
||||||
|
@ -70,13 +73,9 @@ module spectral_mech_Polarisation
|
||||||
public :: &
|
public :: &
|
||||||
Polarisation_init, &
|
Polarisation_init, &
|
||||||
Polarisation_solution, &
|
Polarisation_solution, &
|
||||||
Polarisation_forward, &
|
Polarisation_forward
|
||||||
Polarisation_destroy
|
|
||||||
external :: &
|
external :: &
|
||||||
PETScFinalize, &
|
PETScErrorF ! is called in the CHKERRQ macro
|
||||||
MPI_Abort, &
|
|
||||||
MPI_Bcast, &
|
|
||||||
MPI_Allreduce
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -125,28 +124,21 @@ subroutine Polarisation_init
|
||||||
|
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
PetscScalar, pointer, dimension(:,:,:,:) :: &
|
PetscScalar, pointer, dimension(:,:,:,:) :: &
|
||||||
FandF_tau, & ! overall pointer to solution data
|
FandF_tau, & ! overall pointer to solution data
|
||||||
F, & ! specific (sub)pointer
|
F, & ! specific (sub)pointer
|
||||||
F_tau ! specific (sub)pointer
|
F_tau ! specific (sub)pointer
|
||||||
|
PetscInt, dimension(:), allocatable :: localK
|
||||||
integer(pInt), dimension(:), allocatable :: localK
|
|
||||||
integer(pInt) :: proc
|
integer(pInt) :: proc
|
||||||
character(len=1024) :: rankStr
|
character(len=1024) :: rankStr
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
SNESCreate, &
|
|
||||||
SNESSetOptionsPrefix, &
|
SNESSetOptionsPrefix, &
|
||||||
DMDACreate3D, &
|
|
||||||
SNESSetDM, &
|
|
||||||
DMCreateGlobalVector, &
|
|
||||||
DMDASNESSetFunctionLocal, &
|
|
||||||
SNESGetConvergedReason, &
|
|
||||||
SNESSetConvergenceTest, &
|
SNESSetConvergenceTest, &
|
||||||
SNESSetFromOptions
|
DMDASNESsetFunctionLocal
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverPolarisation init -+>>>'
|
write(6,'(/,a)') ' <<<+- DAMASK_spectral_solverPolarisation init -+>>>'
|
||||||
write(6,'(/,a)') ' Shanthraj et al., International Journal of Plasticity, 66:31–45, 2015'
|
write(6,'(/,a)') ' Shanthraj et al., International Journal of Plasticity, 66:31–45, 2015'
|
||||||
write(6,'(/,a)') ' https://doi.org/10.1016/j.ijplas.2014.02.006'
|
write(6,'(a,/)') ' https://doi.org/10.1016/j.ijplas.2014.02.006'
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
|
|
||||||
|
@ -171,16 +163,18 @@ subroutine Polarisation_init
|
||||||
grid(1),grid(2),grid(3), & ! global grid
|
grid(1),grid(2),grid(3), & ! global grid
|
||||||
1 , 1, worldsize, &
|
1 , 1, worldsize, &
|
||||||
18, 0, & ! #dof (F tensor), ghost boundary width (domain overlap)
|
18, 0, & ! #dof (F tensor), ghost boundary width (domain overlap)
|
||||||
grid(1),grid(2),localK, & ! local grid
|
[grid(1)],[grid(2)],localK, & ! local grid
|
||||||
da,ierr) ! handle, error
|
da,ierr) ! handle, error
|
||||||
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 DMCreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr) ! global solution vector (grid x 9, i.e. every def grad tensor)
|
call DMsetFromOptions(da,ierr); CHKERRQ(ierr)
|
||||||
call DMDASNESSetFunctionLocal(da,INSERT_VALUES,Polarisation_formResidual,PETSC_NULL_OBJECT,ierr) ! residual vector of same shape as solution vector
|
call DMsetUp(da,ierr); CHKERRQ(ierr)
|
||||||
|
call DMcreateGlobalVector(da,solution_vec,ierr); CHKERRQ(ierr) ! global solution vector (grid x 18, i.e. every def grad tensor)
|
||||||
|
call DMDASNESsetFunctionLocal(da,INSERT_VALUES,Polarisation_formResidual,PETSC_NULL_SNES,ierr) ! residual vector of same shape as solution vector
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call SNESSetConvergenceTest(snes,Polarisation_converged,PETSC_NULL_OBJECT,PETSC_NULL_FUNCTION,ierr) ! specify custom convergence check function "_converged"
|
call SNESsetConvergenceTest(snes,Polarisation_converged,PETSC_NULL_SNES,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
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! init fields
|
! init fields
|
||||||
|
@ -280,8 +274,7 @@ type(tSolutionState) function Polarisation_solution(incInfoIn,timeinc,timeinc_ol
|
||||||
SNESConvergedReason :: reason
|
SNESConvergedReason :: reason
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
SNESSolve, &
|
SNESSolve
|
||||||
SNESGetConvergedReason
|
|
||||||
|
|
||||||
incInfo = incInfoIn
|
incInfo = incInfoIn
|
||||||
|
|
||||||
|
@ -304,7 +297,7 @@ type(tSolutionState) function Polarisation_solution(incInfoIn,timeinc,timeinc_ol
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! solve BVP
|
! solve BVP
|
||||||
call SNESSolve(snes,PETSC_NULL_OBJECT,solution_vec,ierr); CHKERRQ(ierr)
|
call SNESsolve(snes,PETSC_NULL_VEC,solution_vec,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! check convergence
|
! check convergence
|
||||||
|
@ -375,10 +368,6 @@ subroutine Polarisation_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
i, j, k, e
|
i, j, k, e
|
||||||
|
|
||||||
external :: &
|
|
||||||
SNESGetNumberFunctionEvals, &
|
|
||||||
SNESGetIterationNumber
|
|
||||||
|
|
||||||
F => x_scal(1:3,1:3,1,&
|
F => x_scal(1:3,1:3,1,&
|
||||||
XG_RANGE,YG_RANGE,ZG_RANGE)
|
XG_RANGE,YG_RANGE,ZG_RANGE)
|
||||||
F_tau => x_scal(1:3,1:3,2,&
|
F_tau => x_scal(1:3,1:3,2,&
|
||||||
|
@ -685,25 +674,4 @@ subroutine Polarisation_forward(guess,timeinc,timeinc_old,loadCaseTime,deformati
|
||||||
|
|
||||||
end subroutine Polarisation_forward
|
end subroutine Polarisation_forward
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief destroy routine
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
subroutine Polarisation_destroy()
|
|
||||||
use spectral_utilities, only: &
|
|
||||||
Utilities_destroy
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
PetscErrorCode :: ierr
|
|
||||||
|
|
||||||
external :: &
|
|
||||||
VecDestroy, &
|
|
||||||
SNESDestroy, &
|
|
||||||
DMDestroy
|
|
||||||
|
|
||||||
call VecDestroy(solution_vec,ierr); CHKERRQ(ierr)
|
|
||||||
call SNESDestroy(snes,ierr); CHKERRQ(ierr)
|
|
||||||
call DMDestroy(da,ierr); CHKERRQ(ierr)
|
|
||||||
|
|
||||||
end subroutine Polarisation_destroy
|
|
||||||
|
|
||||||
end module spectral_mech_Polarisation
|
end module spectral_mech_Polarisation
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
!> @brief Spectral solver for thermal conduction
|
!> @brief Spectral solver for thermal conduction
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module spectral_thermal
|
module spectral_thermal
|
||||||
|
#include <petsc/finclude/petscsnes.h>
|
||||||
|
#include <petsc/finclude/petscdmda.h>
|
||||||
|
use PETScdmda
|
||||||
|
use PETScsnes
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pInt, &
|
pInt, &
|
||||||
pReal
|
pReal
|
||||||
|
@ -18,7 +22,6 @@ module spectral_thermal
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
#include <petsc/finclude/petsc.h90>
|
|
||||||
|
|
||||||
character (len=*), parameter, public :: &
|
character (len=*), parameter, public :: &
|
||||||
spectral_thermal_label = 'spectralthermal'
|
spectral_thermal_label = 'spectralthermal'
|
||||||
|
@ -46,13 +49,9 @@ module spectral_thermal
|
||||||
public :: &
|
public :: &
|
||||||
spectral_thermal_init, &
|
spectral_thermal_init, &
|
||||||
spectral_thermal_solution, &
|
spectral_thermal_solution, &
|
||||||
spectral_thermal_forward, &
|
spectral_thermal_forward
|
||||||
spectral_thermal_destroy
|
|
||||||
external :: &
|
external :: &
|
||||||
PETScFinalize, &
|
PETScErrorF ! is called in the CHKERRQ macro
|
||||||
MPI_Abort, &
|
|
||||||
MPI_Bcast, &
|
|
||||||
MPI_Allreduce
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -92,22 +91,15 @@ subroutine spectral_thermal_init
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
|
|
||||||
external :: &
|
external :: &
|
||||||
SNESCreate, &
|
SNESsetOptionsPrefix, &
|
||||||
SNESSetOptionsPrefix, &
|
DMDAgetCorners, &
|
||||||
DMDACreate3D, &
|
DMDASNESsetFunctionLocal
|
||||||
SNESSetDM, &
|
|
||||||
DMDAGetCorners, &
|
|
||||||
DMCreateGlobalVector, &
|
|
||||||
DMDASNESSetFunctionLocal, &
|
|
||||||
SNESSetFromOptions
|
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0_pInt) then
|
write(6,'(/,a)') ' <<<+- spectral_thermal init -+>>>'
|
||||||
write(6,'(/,a)') ' <<<+- spectral_thermal init -+>>>'
|
write(6,'(/,a)') ' Shanthraj et al., Handbook of Mechanics of Materials, volume in press,'
|
||||||
write(6,'(/,a)') ' Shanthraj et al., Handbook of Mechanics of Materials, volume in press,'
|
write(6,'(/,a)') ' chapter Spectral Solvers for Crystal Plasticity and Multi-Physics Simulations. Springer, 2018'
|
||||||
write(6,'(/,a)') ' chapter Spectral Solvers for Crystal Plasticity and Multi-Physics Simulations. Springer, 2018'
|
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
|
||||||
|
@ -117,21 +109,23 @@ subroutine spectral_thermal_init
|
||||||
do proc = 1, worldsize
|
do proc = 1, worldsize
|
||||||
call MPI_Bcast(localK(proc),1,MPI_INTEGER,proc-1,PETSC_COMM_WORLD,ierr)
|
call MPI_Bcast(localK(proc),1,MPI_INTEGER,proc-1,PETSC_COMM_WORLD,ierr)
|
||||||
enddo
|
enddo
|
||||||
call DMDACreate3d(PETSC_COMM_WORLD, &
|
call DMDACreate3D(PETSC_COMM_WORLD, &
|
||||||
DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, & ! cut off stencil at boundary
|
DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, & ! cut off stencil at boundary
|
||||||
DMDA_STENCIL_BOX, & ! Moore (26) neighborhood around central point
|
DMDA_STENCIL_BOX, & ! Moore (26) neighborhood around central point
|
||||||
grid(1),grid(2),grid(3), & ! global grid
|
grid(1),grid(2),grid(3), & ! global grid
|
||||||
1, 1, worldsize, &
|
1, 1, worldsize, &
|
||||||
1, 0, & ! #dof (temperature field), ghost boundary width (domain overlap)
|
1, 0, & !< #dof (thermal phase field), ghost boundary width (domain overlap)
|
||||||
grid (1),grid(2),localK, & ! local grid
|
[grid(1)],[grid(2)],localK, & !< local grid
|
||||||
thermal_grid,ierr) ! handle, error
|
thermal_grid,ierr) !< handle, error
|
||||||
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 DMsetFromOptions(thermal_grid,ierr); CHKERRQ(ierr)
|
||||||
|
call DMsetUp(thermal_grid,ierr); CHKERRQ(ierr)
|
||||||
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,&
|
call DMDASNESSetFunctionLocal(thermal_grid,INSERT_VALUES,spectral_thermal_formResidual,&
|
||||||
PETSC_NULL_OBJECT,ierr) ! residual vector of same shape as solution vector
|
PETSC_NULL_SNES,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
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! init fields
|
! init fields
|
||||||
|
@ -207,8 +201,7 @@ type(tSolutionState) function spectral_thermal_solution(timeinc,timeinc_old,load
|
||||||
external :: &
|
external :: &
|
||||||
VecMin, &
|
VecMin, &
|
||||||
VecMax, &
|
VecMax, &
|
||||||
SNESSolve, &
|
SNESSolve
|
||||||
SNESGetConvergedReason
|
|
||||||
|
|
||||||
spectral_thermal_solution%converged =.false.
|
spectral_thermal_solution%converged =.false.
|
||||||
|
|
||||||
|
@ -217,7 +210,7 @@ type(tSolutionState) function spectral_thermal_solution(timeinc,timeinc_old,load
|
||||||
params%timeinc = timeinc
|
params%timeinc = timeinc
|
||||||
params%timeincOld = timeinc_old
|
params%timeincOld = timeinc_old
|
||||||
|
|
||||||
call SNESSolve(thermal_snes,PETSC_NULL_OBJECT,solution,ierr); CHKERRQ(ierr)
|
call SNESSolve(thermal_snes,PETSC_NULL_VEC,solution,ierr); CHKERRQ(ierr)
|
||||||
call SNESGetConvergedReason(thermal_snes,reason,ierr); CHKERRQ(ierr)
|
call SNESGetConvergedReason(thermal_snes,reason,ierr); CHKERRQ(ierr)
|
||||||
|
|
||||||
if (reason < 1) then
|
if (reason < 1) then
|
||||||
|
@ -246,15 +239,13 @@ type(tSolutionState) function spectral_thermal_solution(timeinc,timeinc_old,load
|
||||||
enddo; enddo; enddo
|
enddo; enddo; enddo
|
||||||
|
|
||||||
call VecMin(solution,position,minTemperature,ierr); CHKERRQ(ierr)
|
call VecMin(solution,position,minTemperature,ierr); CHKERRQ(ierr)
|
||||||
call VecMax(solution,position,maxTemperature,ierr); CHKERRQ(ierr)
|
call VecMax(solution,position,maxTemperature,ierr); CHKERRQ(ierr)
|
||||||
if (worldrank == 0) then
|
if (spectral_thermal_solution%converged) &
|
||||||
if (spectral_thermal_solution%converged) &
|
write(6,'(/,a)') ' ... thermal conduction converged ..................................'
|
||||||
write(6,'(/,a)') ' ... thermal conduction converged ..................................'
|
write(6,'(/,a,f8.4,2x,f8.4,2x,f8.4,/)',advance='no') ' Minimum|Maximum|Delta Temperature / K = ',&
|
||||||
write(6,'(/,a,f8.4,2x,f8.4,2x,f8.4,/)',advance='no') ' Minimum|Maximum|Delta Temperature / K = ',&
|
|
||||||
minTemperature, maxTemperature, stagNorm
|
minTemperature, maxTemperature, stagNorm
|
||||||
write(6,'(/,a)') ' ==========================================================================='
|
write(6,'(/,a)') ' ==========================================================================='
|
||||||
flush(6)
|
flush(6)
|
||||||
endif
|
|
||||||
|
|
||||||
end function spectral_thermal_solution
|
end function spectral_thermal_solution
|
||||||
|
|
||||||
|
@ -361,9 +352,6 @@ subroutine spectral_thermal_forward()
|
||||||
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
PetscScalar, dimension(:,:,:), pointer :: x_scal
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
|
|
||||||
external :: &
|
|
||||||
SNESGetDM
|
|
||||||
|
|
||||||
if (cutBack) then
|
if (cutBack) then
|
||||||
temperature_current = temperature_lastInc
|
temperature_current = temperature_lastInc
|
||||||
temperature_stagInc = temperature_lastInc
|
temperature_stagInc = temperature_lastInc
|
||||||
|
@ -401,23 +389,6 @@ subroutine spectral_thermal_forward()
|
||||||
call MPI_Allreduce(MPI_IN_PLACE,mobility_ref,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr)
|
call MPI_Allreduce(MPI_IN_PLACE,mobility_ref,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
end subroutine spectral_thermal_forward
|
end subroutine spectral_thermal_forward
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief destroy routine
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
subroutine spectral_thermal_destroy()
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
PetscErrorCode :: ierr
|
|
||||||
|
|
||||||
external :: &
|
|
||||||
VecDestroy, &
|
|
||||||
SNESDestroy
|
|
||||||
|
|
||||||
call VecDestroy(solution,ierr); CHKERRQ(ierr)
|
|
||||||
call SNESDestroy(thermal_snes,ierr); CHKERRQ(ierr)
|
|
||||||
|
|
||||||
end subroutine spectral_thermal_destroy
|
|
||||||
|
|
||||||
end module spectral_thermal
|
end module spectral_thermal
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module spectral_utilities
|
module spectral_utilities
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
|
#include <petsc/finclude/petscsys.h>
|
||||||
|
use PETScSys
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal, &
|
pReal, &
|
||||||
pInt
|
pInt
|
||||||
|
@ -13,7 +15,6 @@ module spectral_utilities
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
#include <petsc/finclude/petscsys.h>
|
|
||||||
include 'fftw3-mpi.f03'
|
include 'fftw3-mpi.f03'
|
||||||
|
|
||||||
logical, public :: cutBack = .false. !< cut back of BVP solver in case convergence is not achieved or a material point is terminally ill
|
logical, public :: cutBack = .false. !< cut back of BVP solver in case convergence is not achieved or a material point is terminally ill
|
||||||
|
@ -139,7 +140,6 @@ module spectral_utilities
|
||||||
utilities_constitutiveResponse, &
|
utilities_constitutiveResponse, &
|
||||||
utilities_calculateRate, &
|
utilities_calculateRate, &
|
||||||
utilities_forwardField, &
|
utilities_forwardField, &
|
||||||
utilities_destroy, &
|
|
||||||
utilities_updateIPcoords, &
|
utilities_updateIPcoords, &
|
||||||
FIELD_UNDEFINED_ID, &
|
FIELD_UNDEFINED_ID, &
|
||||||
FIELD_MECH_ID, &
|
FIELD_MECH_ID, &
|
||||||
|
@ -147,6 +147,8 @@ module spectral_utilities
|
||||||
FIELD_DAMAGE_ID
|
FIELD_DAMAGE_ID
|
||||||
private :: &
|
private :: &
|
||||||
utilities_getFreqDerivative
|
utilities_getFreqDerivative
|
||||||
|
external :: &
|
||||||
|
PETScErrorF ! is called in the CHKERRQ macro
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -195,12 +197,6 @@ subroutine utilities_init()
|
||||||
geomSize
|
geomSize
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
external :: &
|
|
||||||
PETScOptionsClear, &
|
|
||||||
PETScOptionsInsertString, &
|
|
||||||
MPI_Abort
|
|
||||||
|
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
integer(pInt) :: i, j, k
|
integer(pInt) :: i, j, k
|
||||||
integer(pInt), dimension(3) :: k_s
|
integer(pInt), dimension(3) :: k_s
|
||||||
|
@ -214,10 +210,12 @@ subroutine utilities_init()
|
||||||
scalarSize = 1_C_INTPTR_T, &
|
scalarSize = 1_C_INTPTR_T, &
|
||||||
vecSize = 3_C_INTPTR_T, &
|
vecSize = 3_C_INTPTR_T, &
|
||||||
tensorSize = 9_C_INTPTR_T
|
tensorSize = 9_C_INTPTR_T
|
||||||
|
external :: &
|
||||||
|
PetscOptionsInsertString
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- spectral_utilities init -+>>>'
|
write(6,'(/,a)') ' <<<+- spectral_utilities init -+>>>'
|
||||||
write(6,'(/,a)') ' Eisenlohr et al., International Journal of Plasticity, 46:37–53, 2013'
|
write(6,'(/,a)') ' Eisenlohr et al., International Journal of Plasticity, 46:37–53, 2013'
|
||||||
write(6,'(/,a)') ' https://doi.org/10.1016/j.ijplas.2012.09.012'
|
write(6,'(a,/)') ' https://doi.org/10.1016/j.ijplas.2012.09.012'
|
||||||
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
write(6,'(a15,a)') ' Current time: ',IO_timeStamp()
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
|
|
||||||
|
@ -232,13 +230,13 @@ subroutine utilities_init()
|
||||||
trim(PETScDebug), &
|
trim(PETScDebug), &
|
||||||
' 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(PETSC_NULL_OBJECT,ierr)
|
call PETScOptionsClear(PETSC_NULL_OPTIONS,ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
if(debugPETSc) call PetscOptionsInsertString(PETSC_NULL_OBJECT,trim(PETSCDEBUG),ierr)
|
if(debugPETSc) call PETScOptionsInsertString(PETSC_NULL_OPTIONS,trim(PETSCDEBUG),ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call PetscOptionsInsertString(PETSC_NULL_OBJECT,trim(petsc_defaultOptions),ierr)
|
call PETScOptionsInsertString(PETSC_NULL_OPTIONS,trim(petsc_defaultOptions),ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call PetscOptionsInsertString(PETSC_NULL_OBJECT,trim(petsc_options),ierr)
|
call PETScOptionsInsertString(PETSC_NULL_OPTIONS,trim(petsc_options),ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
|
|
||||||
grid1Red = grid(1)/2_pInt + 1_pInt
|
grid1Red = grid(1)/2_pInt + 1_pInt
|
||||||
|
@ -632,9 +630,6 @@ real(pReal) function utilities_divergenceRMS()
|
||||||
integer(pInt) :: i, j, k, ierr
|
integer(pInt) :: i, j, k, ierr
|
||||||
complex(pReal), dimension(3) :: rescaledGeom
|
complex(pReal), dimension(3) :: rescaledGeom
|
||||||
|
|
||||||
external :: &
|
|
||||||
MPI_Allreduce
|
|
||||||
|
|
||||||
write(6,'(/,a)') ' ... calculating divergence ................................................'
|
write(6,'(/,a)') ' ... calculating divergence ................................................'
|
||||||
flush(6)
|
flush(6)
|
||||||
|
|
||||||
|
@ -686,9 +681,6 @@ real(pReal) function utilities_curlRMS()
|
||||||
complex(pReal), dimension(3,3) :: curl_fourier
|
complex(pReal), dimension(3,3) :: curl_fourier
|
||||||
complex(pReal), dimension(3) :: rescaledGeom
|
complex(pReal), dimension(3) :: rescaledGeom
|
||||||
|
|
||||||
external :: &
|
|
||||||
MPI_Allreduce
|
|
||||||
|
|
||||||
write(6,'(/,a)') ' ... calculating curl ......................................................'
|
write(6,'(/,a)') ' ... calculating curl ......................................................'
|
||||||
flush(6)
|
flush(6)
|
||||||
|
|
||||||
|
@ -962,9 +954,6 @@ subroutine utilities_constitutiveResponse(P,P_av,C_volAvg,C_minmaxAvg,&
|
||||||
real(pReal), dimension(3,3,3,3) :: max_dPdF, min_dPdF
|
real(pReal), dimension(3,3,3,3) :: max_dPdF, min_dPdF
|
||||||
real(pReal) :: max_dPdF_norm, min_dPdF_norm, defgradDetMin, defgradDetMax, defgradDet
|
real(pReal) :: max_dPdF_norm, min_dPdF_norm, defgradDetMin, defgradDetMax, defgradDet
|
||||||
|
|
||||||
external :: &
|
|
||||||
MPI_Allreduce
|
|
||||||
|
|
||||||
write(6,'(/,a)') ' ... evaluating constitutive response ......................................'
|
write(6,'(/,a)') ' ... evaluating constitutive response ......................................'
|
||||||
flush(6)
|
flush(6)
|
||||||
|
|
||||||
|
@ -1081,9 +1070,6 @@ function utilities_forwardField(timeinc,field_lastInc,rate,aim)
|
||||||
real(pReal), dimension(3,3) :: fieldDiff !< <a + adot*t> - aim
|
real(pReal), dimension(3,3) :: fieldDiff !< <a + adot*t> - aim
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
|
|
||||||
external :: &
|
|
||||||
MPI_Allreduce
|
|
||||||
|
|
||||||
utilities_forwardField = field_lastInc + rate*timeinc
|
utilities_forwardField = field_lastInc + rate*timeinc
|
||||||
if (present(aim)) then !< correct to match average
|
if (present(aim)) then !< correct to match average
|
||||||
fieldDiff = sum(sum(sum(utilities_forwardField,dim=5),dim=4),dim=3)*wgt
|
fieldDiff = sum(sum(sum(utilities_forwardField,dim=5),dim=4),dim=3)*wgt
|
||||||
|
@ -1175,8 +1161,6 @@ subroutine utilities_updateIPcoords(F)
|
||||||
integer(pInt) :: i, j, k, m, ierr
|
integer(pInt) :: i, j, k, m, ierr
|
||||||
real(pReal), dimension(3) :: step, offset_coords
|
real(pReal), dimension(3) :: step, offset_coords
|
||||||
real(pReal), dimension(3,3) :: Favg
|
real(pReal), dimension(3,3) :: Favg
|
||||||
external &
|
|
||||||
MPI_Bcast
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! integration in Fourier space
|
! integration in Fourier space
|
||||||
|
@ -1215,21 +1199,4 @@ subroutine utilities_updateIPcoords(F)
|
||||||
|
|
||||||
end subroutine utilities_updateIPcoords
|
end subroutine utilities_updateIPcoords
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief cleans up
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
subroutine utilities_destroy()
|
|
||||||
implicit none
|
|
||||||
|
|
||||||
call fftw_destroy_plan(planTensorForth)
|
|
||||||
call fftw_destroy_plan(planTensorBack)
|
|
||||||
call fftw_destroy_plan(planVectorForth)
|
|
||||||
call fftw_destroy_plan(planVectorBack)
|
|
||||||
call fftw_destroy_plan(planScalarForth)
|
|
||||||
call fftw_destroy_plan(planScalarBack)
|
|
||||||
|
|
||||||
end subroutine utilities_destroy
|
|
||||||
|
|
||||||
|
|
||||||
end module spectral_utilities
|
end module spectral_utilities
|
||||||
|
|
Loading…
Reference in New Issue