Merge branch 'modernize-testing' into 'development'
Modernize testing See merge request damask/DAMASK!280
This commit is contained in:
commit
c16ad845bc
|
@ -187,8 +187,6 @@ grid_mech_compile_Intel:
|
|||
stage: compilePETSc
|
||||
script:
|
||||
- module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel
|
||||
- cp -r grid_mech_compile grid_mech_compile_Intel
|
||||
- grid_mech_compile_Intel/test.py
|
||||
- cd pytest
|
||||
- pytest -k 'compile and grid' --basetemp=${TESTROOT}/compile_grid_Intel
|
||||
except:
|
||||
|
@ -199,8 +197,6 @@ Compile_FEM_Intel:
|
|||
stage: compilePETSc
|
||||
script:
|
||||
- module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel
|
||||
- cp -r FEM_compile FEM_compile_Intel
|
||||
- FEM_compile_Intel/test.py
|
||||
- cd pytest
|
||||
- pytest -k 'compile and mesh' --basetemp=${TESTROOT}/compile_mesh_Intel
|
||||
except:
|
||||
|
@ -211,8 +207,6 @@ grid_mech_compile_GNU:
|
|||
stage: compilePETSc
|
||||
script:
|
||||
- module load $GNUCompiler $MPICH_GNU $PETSc_MPICH_GNU
|
||||
- cp -r grid_mech_compile grid_mech_compile_GNU
|
||||
- grid_mech_compile_GNU/test.py
|
||||
- cd pytest
|
||||
- pytest -k 'compile and grid' --basetemp=${TESTROOT}/compile_grid_GNU
|
||||
except:
|
||||
|
@ -223,8 +217,6 @@ Compile_FEM_GNU:
|
|||
stage: compilePETSc
|
||||
script:
|
||||
- module load $GNUCompiler $MPICH_GNU $PETSc_MPICH_GNU
|
||||
- cp -r FEM_compile FEM_compile_GNU
|
||||
- FEM_compile_GNU/test.py
|
||||
- cd pytest
|
||||
- pytest -k 'compile and mesh' --basetemp=${TESTROOT}/compile_mesh_GNU
|
||||
except:
|
||||
|
@ -274,22 +266,6 @@ Nonlocal_Damage_DetectChanges:
|
|||
- master
|
||||
- release
|
||||
|
||||
grid_all_restart:
|
||||
stage: grid
|
||||
script: grid_all_restart/test.py
|
||||
except:
|
||||
- master
|
||||
- release
|
||||
|
||||
grid_all_restartMPI:
|
||||
stage: grid
|
||||
script:
|
||||
- module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel
|
||||
- grid_all_restartMPI/test.py
|
||||
except:
|
||||
- master
|
||||
- release
|
||||
|
||||
Plasticity_DetectChanges:
|
||||
stage: grid
|
||||
script: Plasticity_DetectChanges/test.py
|
||||
|
|
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
|||
Subproject commit 281e7eb84f76a2974a50eb54faf35ea25ec89b20
|
||||
Subproject commit 2105ed1c6e4800050010ca4d73b1882022f81551
|
|
@ -1,69 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
from optparse import OptionParser
|
||||
|
||||
import damask
|
||||
|
||||
|
||||
scriptName = os.path.splitext(os.path.basename(__file__))[0]
|
||||
scriptID = ' '.join([scriptName,damask.version])
|
||||
|
||||
|
||||
minimal_surfaces = list(damask.Geom._minimal_surface.keys())
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# MAIN
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
parser = OptionParser(option_class=damask.extendableOption, usage='%prog options [geomfile]', description = """
|
||||
Generate a bicontinuous structure of given type.
|
||||
|
||||
""", version = scriptID)
|
||||
|
||||
|
||||
parser.add_option('-t','--type',
|
||||
dest = 'type',
|
||||
choices = minimal_surfaces, metavar = 'string',
|
||||
help = 'type of minimal surface [primitive] {%s}' %(','.join(minimal_surfaces)))
|
||||
parser.add_option('-f','--threshold',
|
||||
dest = 'threshold',
|
||||
type = 'float', metavar = 'float',
|
||||
help = 'threshold value defining minimal surface [%default]')
|
||||
parser.add_option('-g', '--grid',
|
||||
dest = 'grid',
|
||||
type = 'int', nargs = 3, metavar = 'int int int',
|
||||
help = 'a,b,c grid of hexahedral box [%default]')
|
||||
parser.add_option('-s', '--size',
|
||||
dest = 'size',
|
||||
type = 'float', nargs = 3, metavar = 'float float float',
|
||||
help = 'x,y,z size of hexahedral box [%default]')
|
||||
parser.add_option('-p', '--periods',
|
||||
dest = 'periods',
|
||||
type = 'int', metavar = 'int',
|
||||
help = 'number of repetitions of unit cell [%default]')
|
||||
parser.add_option('--m',
|
||||
dest = 'microstructure',
|
||||
type = 'int', nargs = 2, metavar = 'int int',
|
||||
help = 'two microstructure indices to be used [%default]')
|
||||
|
||||
parser.set_defaults(type = minimal_surfaces[0],
|
||||
threshold = 0.0,
|
||||
periods = 1,
|
||||
grid = (16,16,16),
|
||||
size = (1.0,1.0,1.0),
|
||||
microstructure = (1,2),
|
||||
)
|
||||
|
||||
(options,filename) = parser.parse_args()
|
||||
|
||||
|
||||
name = None if filename == [] else filename[0]
|
||||
damask.util.report(scriptName,name)
|
||||
|
||||
geom=damask.Geom.from_minimal_surface(options.grid,options.size,options.type,options.threshold,
|
||||
options.periods,options.microstructure)
|
||||
damask.util.croak(geom)
|
||||
|
||||
geom.save_ASCII(sys.stdout if name is None else name)
|
|
@ -3,10 +3,6 @@ from pathlib import Path
|
|||
|
||||
class Environment:
|
||||
|
||||
def __init__(self):
|
||||
"""Do Nothing."""
|
||||
pass
|
||||
|
||||
@property
|
||||
def screen_size(self):
|
||||
width = 1024
|
||||
|
@ -43,8 +39,3 @@ class Environment:
|
|||
def root_dir(self):
|
||||
"""Return DAMASK root path."""
|
||||
return Path(__file__).parents[2]
|
||||
|
||||
|
||||
# for compatibility
|
||||
def rootDir(self):
|
||||
return str(self.root_dir)
|
||||
|
|
|
@ -31,7 +31,7 @@ class Table:
|
|||
|
||||
def __repr__(self):
|
||||
"""Brief overview."""
|
||||
return util.srepr(self.comments)+'\n'+self.data.__repr__()
|
||||
return '\n'.join(['# '+c for c in self.comments])+'\n'+self.data.__repr__()
|
||||
|
||||
def __len__(self):
|
||||
"""Number of rows."""
|
||||
|
@ -159,7 +159,7 @@ class Table:
|
|||
comments = [util.execution_stamp('Table','from_ang')]
|
||||
for line in content:
|
||||
if line.startswith('#'):
|
||||
comments.append(line.strip())
|
||||
comments.append(line.split('#',1)[1].strip())
|
||||
else:
|
||||
break
|
||||
|
||||
|
@ -222,6 +222,7 @@ class Table:
|
|||
dup.data[label] = data.reshape(dup.data[label].shape)
|
||||
return dup
|
||||
|
||||
|
||||
def add(self,label,data,info=None):
|
||||
"""
|
||||
Add column data.
|
||||
|
|
|
@ -127,9 +127,9 @@ subroutine DAMASK_interface_init
|
|||
if (err /= 0) call quit(1)
|
||||
select case(trim(arg)) ! extract key
|
||||
case ('-h','--help')
|
||||
print'(a)', ' #######################################################################'
|
||||
print'(/,a)',' #######################################################################'
|
||||
print'(a)', ' DAMASK Command Line Interface:'
|
||||
print'(a)', ' For PETSc-based solvers for the Düsseldorf Advanced Material Simulation Kit'
|
||||
print'(a)', ' Düsseldorf Advanced Material Simulation Kit with PETSc-based solvers'
|
||||
print'(a,/)',' #######################################################################'
|
||||
print'(a,/)',' Valid command line switches:'
|
||||
print'(a)', ' --geom (-g, --geometry)'
|
||||
|
|
|
@ -498,7 +498,7 @@ subroutine converged(snes_local,PETScIter,devNull1,devNull2,devNull3,reason,dumm
|
|||
err_div/divTol, ' (',err_div, ' / m, tol = ',divTol,')'
|
||||
print '(a,f12.2,a,es8.2,a,es9.2,a)', ' error curl = ', &
|
||||
err_curl/curlTol,' (',err_curl,' -, tol = ',curlTol,')'
|
||||
print '(a,f12.2,a,es8.2,a,es9.2,a)', ' error stress BC = ', &
|
||||
print '(a,f12.2,a,es8.2,a,es9.2,a)', ' error stress BC = ', &
|
||||
err_BC/BCTol, ' (',err_BC, ' Pa, tol = ',BCTol,')'
|
||||
print'(/,a)', ' ==========================================================================='
|
||||
flush(IO_STDOUT)
|
||||
|
|
|
@ -20,7 +20,7 @@ program DAMASK_mesh
|
|||
use discretization_mesh
|
||||
use FEM_Utilities
|
||||
use mesh_mech_FEM
|
||||
|
||||
|
||||
implicit none
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
|
@ -56,7 +56,7 @@ program DAMASK_mesh
|
|||
totalIncsCounter = 0, & !< total # of increments
|
||||
statUnit = 0, & !< file unit for statistics output
|
||||
stagIter, &
|
||||
component
|
||||
component
|
||||
class(tNode), pointer :: &
|
||||
num_mesh
|
||||
character(len=pStringLen), dimension(:), allocatable :: fileContent
|
||||
|
@ -80,7 +80,7 @@ program DAMASK_mesh
|
|||
call CPFEM_initAll
|
||||
print'(/,a)', ' <<<+- DAMASK_mesh init -+>>>'; flush(IO_STDOUT)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
! reading field information from numerics file and do sanity checks
|
||||
num_mesh => config_numerics%get('mesh', defaultVal=emptyDict)
|
||||
stagItMax = num_mesh%get_asInt('maxStaggeredIter',defaultVal=10)
|
||||
|
@ -100,7 +100,7 @@ program DAMASK_mesh
|
|||
do l = 1, size(fileContent)
|
||||
line = fileContent(l)
|
||||
if (IO_isBlank(line)) cycle ! skip empty lines
|
||||
|
||||
|
||||
chunkPos = IO_stringPos(line)
|
||||
do i = 1, chunkPos(1) ! reading compulsory parameters for loadcase
|
||||
select case (IO_lc(IO_stringValue(line,chunkPos,i)))
|
||||
|
@ -109,15 +109,16 @@ program DAMASK_mesh
|
|||
end select
|
||||
enddo ! count all identifiers to allocate memory and do sanity check
|
||||
enddo
|
||||
|
||||
allocate (loadCases(N_def))
|
||||
|
||||
|
||||
if(N_def < 1) call IO_error(error_ID = 837)
|
||||
allocate(loadCases(N_def))
|
||||
|
||||
do i = 1, size(loadCases)
|
||||
allocate(loadCases(i)%fieldBC(nActiveFields))
|
||||
field = 1
|
||||
loadCases(i)%fieldBC(field)%ID = FIELD_MECH_ID
|
||||
enddo
|
||||
|
||||
|
||||
do i = 1, size(loadCases)
|
||||
do field = 1, nActiveFields
|
||||
select case (loadCases(i)%fieldBC(field)%ID)
|
||||
|
@ -133,21 +134,21 @@ program DAMASK_mesh
|
|||
case (3)
|
||||
loadCases(i)%fieldBC(field)%componentBC(component)%ID = COMPONENT_MECH_Z_ID
|
||||
end select
|
||||
enddo
|
||||
enddo
|
||||
end select
|
||||
do component = 1, loadCases(i)%fieldBC(field)%nComponents
|
||||
allocate(loadCases(i)%fieldBC(field)%componentBC(component)%Value(mesh_Nboundaries), source = 0.0_pReal)
|
||||
allocate(loadCases(i)%fieldBC(field)%componentBC(component)%Mask (mesh_Nboundaries), source = .false.)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! reading the load case and assign values to the allocated data structure
|
||||
do l = 1, size(fileContent)
|
||||
line = fileContent(l)
|
||||
if (IO_isBlank(line)) cycle ! skip empty lines
|
||||
|
||||
|
||||
chunkPos = IO_stringPos(line)
|
||||
do i = 1, chunkPos(1)
|
||||
select case (IO_lc(IO_stringValue(line,chunkPos,i)))
|
||||
|
@ -161,7 +162,7 @@ program DAMASK_mesh
|
|||
do faceSet = 1, mesh_Nboundaries
|
||||
if (mesh_boundaries(faceSet) == currentFace) currentFaceSet = faceSet
|
||||
enddo
|
||||
if (currentFaceSet < 0) call IO_error(error_ID = errorID, ext_msg = 'invalid BC')
|
||||
if (currentFaceSet < 0) call IO_error(error_ID = 837, ext_msg = 'invalid BC')
|
||||
case('t','time','delta') ! increment time
|
||||
loadCases(currentLoadCase)%time = IO_floatValue(line,chunkPos,i+1)
|
||||
case('n','incs','increments','steps') ! number of increments
|
||||
|
@ -170,7 +171,7 @@ program DAMASK_mesh
|
|||
loadCases(currentLoadCase)%incs = IO_intValue(line,chunkPos,i+1)
|
||||
loadCases(currentLoadCase)%logscale = 1
|
||||
case('freq','frequency','outputfreq') ! frequency of result writings
|
||||
loadCases(currentLoadCase)%outputfrequency = IO_intValue(line,chunkPos,i+1)
|
||||
loadCases(currentLoadCase)%outputfrequency = IO_intValue(line,chunkPos,i+1)
|
||||
case('guessreset','dropguessing')
|
||||
loadCases(currentLoadCase)%followFormerTrajectory = .false. ! do not continue to predict deformation along former trajectory
|
||||
|
||||
|
@ -185,7 +186,7 @@ program DAMASK_mesh
|
|||
case('z')
|
||||
ID = COMPONENT_MECH_Z_ID
|
||||
end select
|
||||
|
||||
|
||||
do field = 1, nActiveFields
|
||||
if (loadCases(currentLoadCase)%fieldBC(field)%ID == FIELD_MECH_ID) then
|
||||
do component = 1, loadcases(currentLoadCase)%fieldBC(field)%nComponents
|
||||
|
@ -197,11 +198,11 @@ program DAMASK_mesh
|
|||
endif
|
||||
enddo
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
end select
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! consistency checks and output of load case
|
||||
loadCases(1)%followFormerTrajectory = .false. ! cannot guess along trajectory for first inc of first currentLoadCase
|
||||
|
@ -215,17 +216,17 @@ program DAMASK_mesh
|
|||
select case (loadCases(currentLoadCase)%fieldBC(field)%ID)
|
||||
case(FIELD_MECH_ID)
|
||||
print'(a)', ' Field '//trim(FIELD_MECH_label)
|
||||
|
||||
|
||||
end select
|
||||
do faceSet = 1, mesh_Nboundaries
|
||||
do component = 1, loadCases(currentLoadCase)%fieldBC(field)%nComponents
|
||||
if (loadCases(currentLoadCase)%fieldBC(field)%componentBC(component)%Mask(faceSet)) &
|
||||
print'(a,i2,a,i2,a,f12.7)', ' Face ', mesh_boundaries(faceSet), &
|
||||
' Component ', component, &
|
||||
' Component ', component, &
|
||||
' Value ', loadCases(currentLoadCase)%fieldBC(field)% &
|
||||
componentBC(component)%Value(faceSet)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
print'(a,f12.6)', ' time: ', loadCases(currentLoadCase)%time
|
||||
if (loadCases(currentLoadCase)%incs < 1) errorID = 835 ! non-positive incs count
|
||||
|
@ -244,7 +245,7 @@ program DAMASK_mesh
|
|||
case(FIELD_MECH_ID)
|
||||
call FEM_mech_init(loadCases(1)%fieldBC(field))
|
||||
end select
|
||||
enddo
|
||||
enddo
|
||||
|
||||
if (worldrank == 0) then
|
||||
open(newunit=statUnit,file=trim(getSolverJobName())//'.sta',form='FORMATTED',status='REPLACE')
|
||||
|
@ -254,9 +255,9 @@ program DAMASK_mesh
|
|||
loadCaseLooping: do currentLoadCase = 1, size(loadCases)
|
||||
time0 = time ! load case start time
|
||||
guess = loadCases(currentLoadCase)%followFormerTrajectory ! change of load case? homogeneous guess for the first inc
|
||||
|
||||
|
||||
incLooping: do inc = 1, loadCases(currentLoadCase)%incs
|
||||
totalIncsCounter = totalIncsCounter + 1
|
||||
totalIncsCounter = totalIncsCounter + 1
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! forwarding time
|
||||
|
@ -266,7 +267,7 @@ program DAMASK_mesh
|
|||
else
|
||||
if (currentLoadCase == 1) then ! 1st load case of logarithmic scale
|
||||
if (inc == 1) then ! 1st inc of 1st load case of logarithmic scale
|
||||
timeinc = loadCases(1)%time*(2.0_pReal**real( 1-loadCases(1)%incs ,pReal)) ! assume 1st inc is equal to 2nd
|
||||
timeinc = loadCases(1)%time*(2.0_pReal**real( 1-loadCases(1)%incs ,pReal)) ! assume 1st inc is equal to 2nd
|
||||
else ! not-1st inc of 1st load case of logarithmic scale
|
||||
timeinc = loadCases(1)%time*(2.0_pReal**real(inc-1-loadCases(1)%incs ,pReal))
|
||||
endif
|
||||
|
@ -287,7 +288,7 @@ program DAMASK_mesh
|
|||
remainingLoadCaseTime = loadCases(currentLoadCase)%time+time0 - time
|
||||
time = time + timeinc ! forward target time
|
||||
stepFraction = stepFraction + 1 ! count step
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! report begin of new step
|
||||
print'(/,a)', ' ###########################################################################'
|
||||
|
@ -310,8 +311,8 @@ program DAMASK_mesh
|
|||
guess,timeinc,timeIncOld,loadCases(currentLoadCase)%fieldBC(field))
|
||||
|
||||
end select
|
||||
enddo
|
||||
|
||||
enddo
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! solve fields
|
||||
stagIter = 0
|
||||
|
@ -332,10 +333,10 @@ program DAMASK_mesh
|
|||
stagIterate = stagIter < stagItMax &
|
||||
.and. all(solres(:)%converged) &
|
||||
.and. .not. all(solres(:)%stagConverged) ! stationary with respect to staggered iteration
|
||||
enddo
|
||||
|
||||
! check solution
|
||||
cutBack = .False.
|
||||
enddo
|
||||
|
||||
! check solution
|
||||
cutBack = .False.
|
||||
if(.not. all(solres(:)%converged .and. solres(:)%stagConverged)) then ! no solution found
|
||||
if (cutBackLevel < maxCutBack) then ! do cut back
|
||||
print'(/,a)', ' cut back detected'
|
||||
|
@ -344,7 +345,7 @@ program DAMASK_mesh
|
|||
cutBackLevel = cutBackLevel + 1
|
||||
time = time - timeinc ! rewind time
|
||||
timeinc = timeinc/2.0_pReal
|
||||
else ! default behavior, exit if spectral solver does not converge
|
||||
else ! default behavior, exit if spectral solver does not converge
|
||||
call IO_warning(850)
|
||||
call quit(1) ! quit
|
||||
endif
|
||||
|
@ -374,8 +375,8 @@ program DAMASK_mesh
|
|||
enddo incLooping
|
||||
|
||||
enddo loadCaseLooping
|
||||
|
||||
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! report summary of whole calculation
|
||||
print'(/,a)', ' ###########################################################################'
|
||||
|
|
|
@ -17,6 +17,7 @@ module discretization_mesh
|
|||
use IO
|
||||
use config
|
||||
use discretization
|
||||
use results
|
||||
use FEsolving
|
||||
use FEM_quadrature
|
||||
use YAML_types
|
||||
|
@ -182,6 +183,10 @@ subroutine discretization_mesh_init(restart)
|
|||
reshape(mesh_ipCoordinates,[3,mesh_maxNips*mesh_NcpElems]), &
|
||||
mesh_node0)
|
||||
|
||||
call results_openJobFile
|
||||
call results_closeGroup(results_addGroup('geometry'))
|
||||
call results_closeJobFile
|
||||
|
||||
end subroutine discretization_mesh_init
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue