Skip to content

Commit

Permalink
added another p91 test that runs a creep simulation reproducing resu…
Browse files Browse the repository at this point in the history
…lts from the milestone report
  • Loading branch information
lynnmunday committed Nov 24, 2020
1 parent 98f1c4b commit 2bbfb13
Show file tree
Hide file tree
Showing 3 changed files with 233 additions and 2 deletions.
200 changes: 200 additions & 0 deletions test/tests/p91_rom/creepRamp.i
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
# Test of creep response due to stress ramp
# see figure 3.6 of:
# Munday, Lynn Brendon, et al. Multiscale-Informed Modeling of High Temperature
# Component Response with Uncertainty Quantification. No. INL/EXT-20-59795-Rev000.
# Idaho National Lab.(INL), Idaho Falls, ID (United States), 2020.

[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]

[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]

[AuxVariables]
[temperature]
initial_condition = 889
[]
[effective_inelastic_strain]
order = FIRST
family = MONOMIAL
[]
[cell_dislocations]
order = FIRST
family = MONOMIAL
[]
[wall_dislocations]
order = FIRST
family = MONOMIAL
[]
[]


[AuxKernels]
[effective_inelastic_strain]
type = ADMaterialRealAux
variable = effective_inelastic_strain
property = effective_creep_strain
[]
[cell_dislocations]
type = ADMaterialRealAux
variable = cell_dislocations
property = cell_dislocations
[]
[wall_dislocations]
type = ADMaterialRealAux
variable = wall_dislocations
property = wall_dislocations
[]
[]

[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'vonmises_stress'
use_automatic_differentiation = true
[../]
[]

[BCs]
[./symmy]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./pressure_x]
type = ADPressure
variable = disp_x
component = 0
boundary = right
constant = -0.5
function = shear_function
[../]
[./pressure_y]
type = ADPressure
variable = disp_y
component = 1
boundary = top
constant = -0.5
function = shear_function
[../]
[./pressure_z]
type = ADPressure
variable = disp_z
component = 2
boundary = front
constant = 0.5
function = shear_function
[../]
[]

[Functions]
[shear_function]
type = ParsedFunction
value = 'timeToDoubleInHours := 10;
if(t<=28*60*60, 30.9e6, 30.9e6*(t-28*3600)/3600/timeToDoubleInHours+30.9e6)'
[]
[]

[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.68e11
poissons_ratio = 0.31
[../]
[./stress]
type = ADComputeMultipleInelasticStress
inelastic_models = rom_stress_prediction
[../]
[./mx_phase_fraction]
type = ADGenericConstantMaterial
prop_names = mx_phase_fraction
prop_values = 5.13e-2 #precipitation bounds: 6e-3, 1e-1
outputs = all
[../]
[./rom_stress_prediction]
type = P91LAROMANCEStressUpdate
temperature = temperature
stress_input_window_failure = WARN
cell_input_window_failure = ERROR
wall_input_window_failure = ERROR
temperature_input_window_failure = ERROR
environment_input_window_failure = ERROR #This is the phase fraction, below
environmental_factor = mx_phase_fraction
initial_cell_dislocation_density = 2.3e12 #bounds 1e12 to 6e12
initial_wall_dislocation_density = 1.41e13 # bounds 6e12 1.8e13
#verbose = true
[../]
[]


[Executioner]
type = Transient

solve_type = 'NEWTON'

nl_abs_tol = 1e-12
nl_rel_tol = 1e-4
automatic_scaling = true
compute_scaling_once = false

dtmin = 0.1
dtmax = 1e5
end_time = 136800
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.1 ## This model requires a tiny timestep at the onset for the first 10s
iteration_window = 4
optimal_iterations = 12
time_t = '100800'
time_dt = '1e5'
[]

[]

[Postprocessors]
[./effective_strain_avg]
type = ElementAverageValue
variable = effective_inelastic_strain
[../]
[./temperature]
type = ElementAverageValue
variable = temperature
[../]
[./cell_dislocations]
type = ElementAverageValue
variable = cell_dislocations
[../]
[./wall_disloactions]
type = ElementAverageValue
variable = wall_dislocations
[../]
[max_vonmises_stress]
type = ElementExtremeValue
variable = vonmises_stress
value_type = max
[]
[]

[Outputs]
csv = true
[]
23 changes: 23 additions & 0 deletions test/tests/p91_rom/gold/creepRamp_out.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
time,cell_dislocations,effective_strain_avg,max_vonmises_stress,temperature,wall_disloactions
0,0,0,0,0,0
0.1,2299999584843,2.8239863891297e-11,30900000.000087,889,14099999214991
0.3,2299998754529.6,8.4719573215337e-11,30900000.000001,889,14099997644973
0.7,2299997093904.3,1.9767891803058e-10,30900000.000001,889,14099994504938
1.5,2299993772660.6,4.2359731232991e-10,30899999.999987,889,14099988224875
3.1,2299987130200.2,8.7543291960792e-10,30899999.999987,889,14099975664775
6.3,2299973845388,1.7790994089062e-09,30899999.999984,889,14099950544676
12.7,2299947276197.5,3.5864134866768e-09,30900000.000012,889,14099900304889
25.5,2299894139552.5,7.2009660405009e-09,30900000.000003,889,14099799826954
51.1,2299787873205.9,1.4429768754124e-08,30900000.000006,889,14099598877637
102.3,2299575368281.2,2.8886164707891e-08,30899999.999992,889,14099197005212
204.7,2299150469470.8,5.7794119542198e-08,30899999.999868,889,14098393365172
409.5,2298301115720.7,1.1559068747558e-07,30899999.998206,889,14096786504058
819.1,2296604181425.7,2.3110650875955e-07,30899999.983682,889,14093574455607
1638.3,2293217387498.9,4.6182931017672e-07,30899999.862982,889,14087157037091
3276.7,2286471953970.1,9.2204285955241e-07,30899998.893109,889,14074348780905
6553.5,2273092564266.7,1.8376155234885e-06,30899991.332137,889,14048837546501
13107.1,2246770729761,3.6496387447944e-06,30899999.999991,889,13998227979493
26214.3,2195806539639.2,7.1997678850007e-06,30899999.99979,889,13898598469538
52428.7,2100095203093.8,1.402283739894e-05,30899999.983193,889,13705249684169
100800,1943300006255.3,2.5702365672341e-05,30899999.506939,889,13367558840006
136800,1641436845120.5,7.3371298990059e-05,61799814.982908,889,12936364077961
12 changes: 10 additions & 2 deletions test/tests/p91_rom/tests
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,21 @@
issues = '#141'
design = 'P91LAROMANCEStressUpdate.md'
requirement = 'The system shall compute a creep rate based on a reduced order model for P91'
[./creepRamp]
type = 'CSVDiff'
input = 'creepRamp.i'
csvdiff = 'creepRamp_out.csv'
detail = 'and reproduce figure 3.6 for a stress ramp in the high temp creep report INL/EXT-20-59795 Sept. 2020'
[../]
[./verification]
type = 'CSVDiff'
input = 'verification.i'
csvdiff = 'verification_out.csv'
cli_args = 'Executioner/dt=25 Executioner/num_steps=10'
petsc_version = '>=3.9.0'
max_parallel = 1
detail = 'in isolation (i.e. without a full displacement solve), and match with code-to-code comparison. Sometimes both codes will produce unrealistic values for the inputs.'
detail = 'in isolation (i.e. without a full displacement solve), and match with code-to-code comparison with the LANL FORTRAN surragate model of the P91 rom.'
' This implementation and the LANL code will both produce the same unrealistic output values for some of the inputs provided in the p91_verification_data.csv.'
[../]
[./verification_heavy]
type = 'CSVDiff'
Expand All @@ -22,7 +29,8 @@
cli_args = 'Executioner/dt=1 Outputs/file_base=verification_heavy_out'
max_parallel = 1
allow_test_objects = true
detail = 'in isolation (i.e. without a full displacement solve), and match with code-to-code comparison with a large set of input parameters. Sometimes both codes will produce unrealistic values for the inputs.'
detail = 'in isolation (i.e. without a full displacement solve), and match with code-to-code comparison with the LANL FORTRAN surragate model of the P91 rom for a large set of inputs.'
' This implementation and the LANL code will both produce the same unrealistic output values for some of the inputs provided in the p91_verification_data.csv.'
[../]
[../]
[]

0 comments on commit 2bbfb13

Please sign in to comment.