- axisThe axis used (x, y, or z) if this is to be a function of position
C++ Type:MooseEnum
Description:The axis used (x, y, or z) if this is to be a function of position
- data_fileFile holding CSV data for use with Piecewise
C++ Type:FileName
Description:File holding CSV data for use with Piecewise
- directionleftDirection to look to find value: left right
Default:left
C++ Type:MooseEnum
Description:Direction to look to find value: left right
- formatrowsFormat of csv data file that is in either in columns or rows
Default:rows
C++ Type:MooseEnum
Description:Format of csv data file that is in either in columns or rows
- scale_factor1Scale factor to be applied to the ordinate values
Default:1
C++ Type:double
Description:Scale factor to be applied to the ordinate values
- xThe abscissa values
C++ Type:std::vector
Description:The abscissa values
- x_index_in_file0The abscissa index in the data file
Default:0
C++ Type:unsigned int
Description:The abscissa index in the data file
- xy_dataAll function data, supplied in abscissa, ordinate pairs
C++ Type:std::vector
Description:All function data, supplied in abscissa, ordinate pairs
- xy_in_file_onlyTrueIf the data file only contains abscissa and ordinate data
Default:True
C++ Type:bool
Description:If the data file only contains abscissa and ordinate data
- yThe ordinate values
C++ Type:std::vector
Description:The ordinate values
- y_index_in_file1The ordinate index in the data file
Default:1
C++ Type:unsigned int
Description:The ordinate index in the data file
PiecewiseConstant
Defines data using a set of x-y data pairs
Description
The PiecewiseConstant
function defines the data using a set of x-y data pairs. Instead of linearly interpolating between the values, however, the PiecewiseConstant
function is constant when the abscissa is between the values provided by the user. The direction
parameter controls whether the function takes the value of the abscissa of the user-provided point to the right or left of the value at which the function is evaluated.
Example Input Syntax
[Functions]
[./a]
type = PiecewiseConstant
xy_data = '0.5 0.1
1.0 0.2
1.5 0.1'
direction = left
[../]
[./b]
type = PiecewiseConstant
x = '0.5 1.0 1.5'
y = '0.1 0.2 0.1'
direction = right
[../]
[./c]
type = PiecewiseConstant
data_file = pc.csv
direction = left
format = columns
[../]
[./d]
type = PiecewiseConstant
data_file = pc.csv
direction = right
format = columns
[../]
[]
(test/tests/functions/piecewise_constant/piecewise_constant.i)/opt/civet/build_0/moose/test/tests/functions/piecewise_constant/piecewise_constant.i
# This tests the PiecewiseConstant function.
# There are four variables and four functions: a,b,c, and d. The diffusion equation is "solved"
# for each of these variables with a boundary condition of type FunctionDirchletBC applied to a boundary
# (i.e. node set) that includes every node in the element, so the solution is the boundary condition defined by the function.
# Each boundary condition uses a function of type PiecewiseConstant.
#
# The value of the variables should correspond to the function.
[Mesh]
file = cube.e
# This problem only has 1 element, so using DistributedMesh in parallel
# isn't really an option, and we don't care that much about DistributedMesh
# in serial.
parallel_type = replicated
[]
[Variables]
[./aVar]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[./bVar]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[./cVar]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[./dVar]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[]
[Functions]
[./a]
type = PiecewiseConstant
xy_data = '0.5 0.1
1.0 0.2
1.5 0.1'
direction = left
[../]
[./b]
type = PiecewiseConstant
x = '0.5 1.0 1.5'
y = '0.1 0.2 0.1'
direction = right
[../]
[./c]
type = PiecewiseConstant
data_file = pc.csv
direction = left
format = columns
[../]
[./d]
type = PiecewiseConstant
data_file = pc.csv
direction = right
format = columns
[../]
[]
[Kernels]
[./diffa]
type = Diffusion
variable = aVar
[../]
[./diffb]
type = Diffusion
variable = bVar
[../]
[./diffc]
type = Diffusion
variable = cVar
[../]
[./diffd]
type = Diffusion
variable = dVar
[../]
[]
[BCs]
[./a]
type = FunctionDirichletBC
variable = aVar
boundary = '1'
function = a
[../]
[./b]
type = FunctionDirichletBC
variable = bVar
boundary = '1'
function = b
[../]
[./c]
type = FunctionDirichletBC
variable = cVar
boundary = '1'
function = c
[../]
[./d]
type = FunctionDirichletBC
variable = dVar
boundary = '1'
function = d
[../]
[]
[Executioner]
type = Transient
dt = 0.2
end_time = 3
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[]
Input Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
Advanced Parameters
Input Files
- modules/porous_flow/examples/flow_through_fractured_media/fine_thick_fracture_transient.i
- modules/rdg/test/tests/advection_1d/block_restrictable.i
- test/tests/functions/piecewise_constant/piecewise_constant.i
- test/tests/dgkernels/1d_advection_dg/1d_advection_dg.i
- test/tests/time_steppers/iteration_adaptive/adapt_tstep_reject_large_dt.i
- modules/rdg/test/tests/advection_1d/1d_aefv_square_wave.i
- modules/tensor_mechanics/test/tests/rom_stress_update/verification.i
- modules/porous_flow/examples/flow_through_fractured_media/fine_transient.i
- test/tests/time_steppers/function_dt/function_dt_no_interpolation.i
- test/tests/multiapps/sub_cycling_failure/sub_gold.i
modules/porous_flow/examples/flow_through_fractured_media/fine_thick_fracture_transient.i
# Using a single-dimensional mesh
# Transient flow and solute transport along a fracture in a porous matrix
# advective dominated flow in the fracture and diffusion into the porous matrix
#
# Note that fine_thick_fracture_steady.i must be run to initialise the porepressure properly
[Mesh]
file = 'gold/fine_thick_fracture_steady_out.e'
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[./pp]
initial_from_file_var = pp
initial_from_file_timestep = 1
[../]
[./massfrac0]
[../]
[]
[AuxVariables]
[./velocity_x]
family = MONOMIAL
order = CONSTANT
block = fracture
[../]
[./velocity_y]
family = MONOMIAL
order = CONSTANT
block = fracture
[../]
[]
[AuxKernels]
[./velocity_x]
type = PorousFlowDarcyVelocityComponent
variable = velocity_x
component = x
[../]
[./velocity_y]
type = PorousFlowDarcyVelocityComponent
variable = velocity_y
component = y
[../]
[]
[ICs]
[./massfrac0]
type = ConstantIC
variable = massfrac0
value = 0
[../]
[]
[BCs]
[./top]
type = DirichletBC
value = 0
variable = massfrac0
boundary = top
[../]
[./bottom]
type = DirichletBC
value = 1
variable = massfrac0
boundary = bottom
[../]
[./ptop]
type = DirichletBC
variable = pp
boundary = top
value = 1e6
[../]
[./pbottom]
type = DirichletBC
variable = pp
boundary = bottom
value = 1.002e6
[../]
[]
[Kernels]
[./mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[../]
[./adv0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pp
[../]
[./diff0]
type = PorousFlowDispersiveFlux
fluid_component = 0
variable = pp
disp_trans = 0
disp_long = 0
[../]
[./mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = massfrac0
[../]
[./adv1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = massfrac0
[../]
[./diff1]
type = PorousFlowDispersiveFlux
fluid_component = 1
variable = massfrac0
disp_trans = 0
disp_long = 0
[../]
[]
[UserObjects]
[./dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp massfrac0'
number_fluid_phases = 1
number_fluid_components = 2
[../]
[]
[Modules]
[./FluidProperties]
[./simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
[../]
[../]
[]
[Materials]
[./temperature]
type = PorousFlowTemperature
[../]
[./ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = pp
[../]
[./massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = massfrac0
[../]
[./simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[../]
[./poro_fracture]
type = PorousFlowPorosityConst
porosity = 1.0 # this is the true porosity of the fracture
block = 'fracture'
[../]
[./poro_matrix]
type = PorousFlowPorosityConst
porosity = 0.1
block = 'matrix1 matrix2'
[../]
[./diff1]
type = PorousFlowDiffusivityConst
diffusion_coeff = '1e-9 1e-9'
tortuosity = 1.0
block = 'fracture'
[../]
[./diff2]
type = PorousFlowDiffusivityConst
diffusion_coeff = '1e-9 1e-9'
tortuosity = 0.1
block = 'matrix1 matrix2'
[../]
[./relp]
type = PorousFlowRelativePermeabilityConst
phase = 0
[../]
[./permeability1]
type = PorousFlowPermeabilityConst
permeability = '3e-8 0 0 0 3e-8 0 0 0 3e-8' # this is the true permeability of the fracture
block = 'fracture'
[../]
[./permeability2]
type = PorousFlowPermeabilityConst
permeability = '1e-20 0 0 0 1e-20 0 0 0 1e-20'
block = 'matrix1 matrix2'
[../]
[]
[Functions]
[./dt_controller]
type = PiecewiseConstant
x = '0 30 40 100 200 83200'
y = '0.01 0.1 1 10 100 32'
[../]
[]
[Preconditioning]
active = basic
[./mumps_is_best_for_parallel_jobs]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[../]
[./basic]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = 'gmres asm lu NONZERO 2 '
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 86400
#dt = 0.01
[./TimeStepper]
type = FunctionDT
function = dt_controller
[../]
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-9
[]
[VectorPostprocessors]
[./xmass]
type = LineValueSampler
start_point = '0.4 0 0'
end_point = '0.5 0 0'
sort_by = x
num_points = 167
variable = massfrac0
[../]
[]
[Outputs]
perf_graph = true
console = true
csv = true
exodus = true
[]
modules/rdg/test/tests/advection_1d/block_restrictable.i
############################################################
[GlobalParams]
order = CONSTANT
family = MONOMIAL
u = u
slope_limiting = lslope
implicit = false
[]
############################################################
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
xmin = 0
xmax = 1
nx = 100
[]
[./subdomain1]
type = SubdomainBoundingBoxGenerator
bottom_left = '0.5 0 0'
block_id = 1
top_right = '1.0 1.0 0'
input = gen
[../]
[./interface]
type = SideSetsBetweenSubdomainsGenerator
master_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = subdomain1
[../]
[./interface_again]
type = SideSetsBetweenSubdomainsGenerator
master_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[../]
[]
############################################################
[Functions]
[./ic_u]
type = PiecewiseConstant
axis = x
direction = right
xy_data = '0.1 0.5
0.4 1.0
0.5 0.5'
[../]
[]
############################################################
[UserObjects]
[./lslope]
type = AEFVSlopeLimitingOneD
execute_on = 'linear'
scheme = 'superbee' #none | minmod | mc | superbee
block = 0
[../]
[./internal_side_flux]
type = AEFVUpwindInternalSideFlux
execute_on = 'linear'
[../]
[./free_outflow_bc]
type = AEFVFreeOutflowBoundaryFlux
execute_on = 'linear'
[../]
[]
############################################################
[Variables]
[./u]
block = 0
[../]
[./v]
block = 1
family = LAGRANGE
order = FIRST
[../]
[]
############################################################
[ICs]
[./u_ic]
type = FunctionIC
variable = 'u'
function = ic_u
[../]
[]
############################################################
[Kernels]
[./time_u]
implicit = true
type = TimeDerivative
variable = u
block = 0
[../]
[./diff_v]
implicit = true
type = Diffusion
variable = v
block = 1
[../]
[./time_v]
implicit = true
type = TimeDerivative
variable = v
block = 1
[../]
[]
############################################################
[DGKernels]
[./concentration]
type = AEFVKernel
variable = u
component = 'concentration'
flux = internal_side_flux
block = 0
[../]
[]
############################################################
[BCs]
[./concentration]
type = AEFVBC
boundary = 'left master0_interface'
variable = u
component = 'concentration'
flux = free_outflow_bc
[../]
[./v_left]
type = DirichletBC
boundary = 'master1_interface'
variable = v
value = 1
[../]
[./v_right]
type = DirichletBC
boundary = 'right'
variable = v
value = 0
[../]
[]
############################################################
[Materials]
[./aefv]
type = AEFVMaterial
block = 0
[../]
[./dummy_1]
type = GenericConstantMaterial
block = 1
prop_names = ''
prop_values = ''
[../]
[]
############################################################
[Executioner]
type = Transient
[./TimeIntegrator]
type = ExplicitMidpoint
[../]
solve_type = 'LINEAR'
l_tol = 1e-4
nl_rel_tol = 1e-20
nl_abs_tol = 1e-8
nl_max_its = 60
start_time = 0.0
num_steps = 4 # 4 | 400 for complete run
dt = 5e-4
dtmin = 1e-6
[]
[Outputs]
[./out]
type = Exodus
interval = 2
[../]
perf_graph = true
[]
test/tests/functions/piecewise_constant/piecewise_constant.i
# This tests the PiecewiseConstant function.
# There are four variables and four functions: a,b,c, and d. The diffusion equation is "solved"
# for each of these variables with a boundary condition of type FunctionDirchletBC applied to a boundary
# (i.e. node set) that includes every node in the element, so the solution is the boundary condition defined by the function.
# Each boundary condition uses a function of type PiecewiseConstant.
#
# The value of the variables should correspond to the function.
[Mesh]
file = cube.e
# This problem only has 1 element, so using DistributedMesh in parallel
# isn't really an option, and we don't care that much about DistributedMesh
# in serial.
parallel_type = replicated
[]
[Variables]
[./aVar]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[./bVar]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[./cVar]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[./dVar]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[]
[Functions]
[./a]
type = PiecewiseConstant
xy_data = '0.5 0.1
1.0 0.2
1.5 0.1'
direction = left
[../]
[./b]
type = PiecewiseConstant
x = '0.5 1.0 1.5'
y = '0.1 0.2 0.1'
direction = right
[../]
[./c]
type = PiecewiseConstant
data_file = pc.csv
direction = left
format = columns
[../]
[./d]
type = PiecewiseConstant
data_file = pc.csv
direction = right
format = columns
[../]
[]
[Kernels]
[./diffa]
type = Diffusion
variable = aVar
[../]
[./diffb]
type = Diffusion
variable = bVar
[../]
[./diffc]
type = Diffusion
variable = cVar
[../]
[./diffd]
type = Diffusion
variable = dVar
[../]
[]
[BCs]
[./a]
type = FunctionDirichletBC
variable = aVar
boundary = '1'
function = a
[../]
[./b]
type = FunctionDirichletBC
variable = bVar
boundary = '1'
function = b
[../]
[./c]
type = FunctionDirichletBC
variable = cVar
boundary = '1'
function = c
[../]
[./d]
type = FunctionDirichletBC
variable = dVar
boundary = '1'
function = d
[../]
[]
[Executioner]
type = Transient
dt = 0.2
end_time = 3
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[]
test/tests/dgkernels/1d_advection_dg/1d_advection_dg.i
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[Functions]
[./ic_u]
type = PiecewiseConstant
axis = x
direction = right
xy_data = '0.1 0.0
0.6 1.0
1.0 0.0'
[../]
[]
[Variables]
[./u]
order = FIRST
family = MONOMIAL
[../]
[]
[Kernels]
[./time_u]
type = TimeDerivative
variable = u
[../]
[./adv_u]
implicit = false
type = ConservativeAdvection
variable = u
velocity = '1 0 0'
[../]
[]
[DGKernels]
[./dg_advection_u]
implicit = false
type = DGConvection
variable = u
velocity = '1 0 0'
[../]
[]
[ICs]
[./u_ic]
type = FunctionIC
variable = u
function = ic_u
[../]
[]
[Executioner]
type = Transient
[./TimeIntegrator]
type = ExplicitMidpoint
[../]
solve_type = 'LINEAR'
num_steps = 4
dt = 2e-4
[]
[Outputs]
exodus = true
[]
test/tests/time_steppers/iteration_adaptive/adapt_tstep_reject_large_dt.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmax = 5
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Functions]
[./timestep_fn]
type = PiecewiseConstant
x = '0. 10.0'
y = '10.0 1.0'
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./dt]
type = TimeDerivative
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 10
[../]
[./right]
type = NeumannBC
variable = u
boundary = right
value = -1
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
start_time = 0.0
end_time = 12.0
dtmax = 10.0
dtmin = 0.1
[./TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = timestep_pp
reject_large_step = true
reject_large_step_threshold = 0.5
dt = 3.0
growth_factor = 1.0
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
# Just use a simple postprocessor to test capability to limit the time step length to the postprocessor value
[./timestep_pp]
type = FunctionValuePostprocessor
function = timestep_fn
[../]
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
checkpoint = true
[]
modules/rdg/test/tests/advection_1d/1d_aefv_square_wave.i
############################################################
[GlobalParams]
order = CONSTANT
family = MONOMIAL
u = u
slope_limiting = lslope
implicit = false
[]
############################################################
[Mesh]
type = GeneratedMesh
dim = 1
xmin = 0
xmax = 1
nx = 100
[]
############################################################
[Functions]
[./ic_u]
type = PiecewiseConstant
axis = x
direction = right
xy_data = '0.1 0.5
0.6 1.0
1.0 0.5'
[../]
[]
############################################################
[UserObjects]
[./lslope]
type = AEFVSlopeLimitingOneD
execute_on = 'linear'
scheme = 'none' #none | minmod | mc | superbee
[../]
[./internal_side_flux]
type = AEFVUpwindInternalSideFlux
execute_on = 'linear'
[../]
[./free_outflow_bc]
type = AEFVFreeOutflowBoundaryFlux
execute_on = 'linear'
[../]
[]
############################################################
[Variables]
[./u]
[../]
[]
############################################################
[ICs]
[./u_ic]
type = FunctionIC
variable = 'u'
function = ic_u
[../]
[]
############################################################
[Kernels]
[./time_u]
implicit = true
type = TimeDerivative
variable = u
[../]
[]
############################################################
[DGKernels]
[./concentration]
type = AEFVKernel
variable = u
component = 'concentration'
flux = internal_side_flux
[../]
[]
############################################################
[BCs]
[./concentration]
type = AEFVBC
boundary = 'left right'
variable = u
component = 'concentration'
flux = free_outflow_bc
[../]
[]
############################################################
[Materials]
[./aefv]
type = AEFVMaterial
block = 0
[../]
[]
############################################################
[Executioner]
type = Transient
[./TimeIntegrator]
type = ExplicitMidpoint
[../]
solve_type = 'LINEAR'
l_tol = 1e-4
nl_rel_tol = 1e-20
nl_abs_tol = 1e-8
nl_max_its = 60
start_time = 0.0
num_steps = 4 # 4 | 400 for complete run
dt = 5e-4
dtmin = 1e-6
[]
[Outputs]
[./Exodus]
type = Exodus
file_base = 1d_aefv_square_wave_none_out
interval = 2
[../]
perf_graph = true
[]
modules/tensor_mechanics/test/tests/rom_stress_update/verification.i
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temperature]
[../]
[]
[AuxKernels]
[./temp_aux]
type = FunctionAux
variable = temperature
function = temp_fcn
execute_on = 'initial timestep_begin'
[../]
[]
[Functions]
[./rhom_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 1
format = columns
xy_in_file_only = false
direction = right
[../]
[./rhoi_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 2
format = columns
xy_in_file_only = false
direction = right
[../]
[./vmJ2_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 3
format = columns
xy_in_file_only = false
direction = right
[../]
[./evm_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 4
format = columns
xy_in_file_only = false
direction = right
[../]
[./temp_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 5
format = columns
xy_in_file_only = false
direction = right
[../]
[./rhom_soln_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 7
format = columns
xy_in_file_only = false
direction = right
[../]
[./rhoi_soln_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 8
format = columns
xy_in_file_only = false
direction = right
[../]
[./creep_rate_soln_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 10
format = columns
xy_in_file_only = false
direction = right
[../]
[./rhom_diff_fcn]
type = ParsedFunction
vars = 'rhom_soln rhom'
vals = 'rhom_soln rhom'
value = 'abs(rhom_soln - rhom) / rhom_soln'
[../]
[./rhoi_diff_fcn]
type = ParsedFunction
vars = 'rhoi_soln rhoi'
vals = 'rhoi_soln rhoi'
value = 'abs(rhoi_soln - rhoi) / rhoi_soln'
[../]
[./creep_rate_diff_fcn]
type = ParsedFunction
vars = 'creep_rate_soln creep_rate'
vals = 'creep_rate_soln creep_rate'
value = 'abs(creep_rate_soln - creep_rate) / creep_rate_soln'
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'vonmises_stress'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./symmx]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmy]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmz]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./pressure_x]
type = ADPressure
variable = disp_x
component = 0
boundary = right
function = vmJ2_fcn
constant = 0.5e6
[../]
[./pressure_y]
type = ADPressure
variable = disp_y
component = 1
boundary = top
function = vmJ2_fcn
constant = -0.5e6
[../]
[./pressure_z]
type = ADPressure
variable = disp_z
component = 2
boundary = front
function = vmJ2_fcn
constant = -0.5e6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e11
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeMultipleInelasticStress
inelastic_models = rom_stress_prediction
[../]
[./rom_stress_prediction]
type = SS316HLAROMANCEStressUpdateTest
temperature = temperature
effective_inelastic_strain_name = effective_creep_strain
internal_solve_full_iteration_history = true
apply_strain = false
outputs = all
immobile_dislocation_density_forcing_function = rhoi_fcn
mobile_dislocation_density_forcing_function = rhom_fcn
old_creep_strain_forcing_function = evm_fcn
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason'# -ksp_error_if_not_converged -snes_error_if_not_converged'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
automatic_scaling = true
compute_scaling_once = false
nl_abs_tol = 1e-10
dt = 1e-3
end_time = 1e-2
[]
[Postprocessors]
[./effective_strain_avg]
type = ElementAverageValue
variable = effective_creep_strain
outputs = console
[../]
[./temperature]
type = ElementAverageValue
variable = temperature
outputs = console
[../]
[./rhom]
type = ElementAverageValue
variable = mobile_dislocations
[../]
[./rhoi]
type = ElementAverageValue
variable = immobile_dislocations
[../]
[./vonmises_stress]
type = ElementAverageValue
variable = vonmises_stress
outputs = console
[../]
[./creep_rate]
type = ElementAverageValue
variable = creep_rate
[../]
[./rhom_in]
type = FunctionValuePostprocessor
function = rhom_fcn
execute_on = 'TIMESTEP_END initial'
outputs = console
[../]
[./rhoi_in]
type = FunctionValuePostprocessor
function = rhoi_fcn
execute_on = 'TIMESTEP_END initial'
outputs = console
[../]
[./vmJ2_in]
type = FunctionValuePostprocessor
function = vmJ2_fcn
execute_on = 'TIMESTEP_END initial'
outputs = console
[../]
[./rhom_soln]
type = FunctionValuePostprocessor
function = rhom_soln_fcn
outputs = console
[../]
[./rhoi_soln]
type = FunctionValuePostprocessor
function = rhoi_soln_fcn
outputs = console
[../]
[./creep_rate_soln]
type = FunctionValuePostprocessor
function = creep_rate_soln_fcn
outputs = console
[../]
[./rhom_diff]
type = FunctionValuePostprocessor
function = rhom_diff_fcn
outputs = console
[../]
[./rhoi_diff]
type = FunctionValuePostprocessor
function = rhoi_diff_fcn
outputs = console
[../]
[./creep_rate_diff]
type = FunctionValuePostprocessor
function = creep_rate_diff_fcn
outputs = console
[../]
[./rhom_max_diff]
type = TimeExtremeValue
postprocessor = rhom_diff
outputs = console
[../]
[./rhoi_max_diff]
type = TimeExtremeValue
postprocessor = rhoi_diff
outputs = console
[../]
[./creep_rate_max_diff]
type = TimeExtremeValue
postprocessor = creep_rate_diff
outputs = console
[../]
[]
[Outputs]
csv = true
file_base = 'verification_1e-3_out'
[]
modules/porous_flow/examples/flow_through_fractured_media/fine_transient.i
# Using a mixed-dimensional mesh
# Transient flow and solute transport along a fracture in a porous matrix
# advective dominated flow in the fracture and diffusion into the porous matrix
#
# Note that fine_steady.i must be run to initialise the porepressure properly
[Mesh]
file = 'gold/fine_steady_out.e'
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[./pp]
initial_from_file_var = pp
initial_from_file_timestep = 1
[../]
[./massfrac0]
[../]
[]
[AuxVariables]
[./velocity_x]
family = MONOMIAL
order = CONSTANT
block = fracture
[../]
[./velocity_y]
family = MONOMIAL
order = CONSTANT
block = fracture
[../]
[]
[AuxKernels]
[./velocity_x]
type = PorousFlowDarcyVelocityComponentLowerDimensional
variable = velocity_x
component = x
aperture = 6E-4
[../]
[./velocity_y]
type = PorousFlowDarcyVelocityComponentLowerDimensional
variable = velocity_y
component = y
aperture = 6E-4
[../]
[]
[ICs]
[./massfrac0]
type = ConstantIC
variable = massfrac0
value = 0
[../]
[]
[BCs]
[./top]
type = DirichletBC
value = 0
variable = massfrac0
boundary = top
[../]
[./bottom]
type = DirichletBC
value = 1
variable = massfrac0
boundary = bottom
[../]
[./ptop]
type = DirichletBC
variable = pp
boundary = top
value = 1e6
[../]
[./pbottom]
type = DirichletBC
variable = pp
boundary = bottom
value = 1.002e6
[../]
[]
[Kernels]
[./mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[../]
[./adv0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pp
[../]
[./diff0]
type = PorousFlowDispersiveFlux
fluid_component = 0
variable = pp
disp_trans = 0
disp_long = 0
[../]
[./mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = massfrac0
[../]
[./adv1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = massfrac0
[../]
[./diff1]
type = PorousFlowDispersiveFlux
fluid_component = 1
variable = massfrac0
disp_trans = 0
disp_long = 0
[../]
[]
[UserObjects]
[./dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp massfrac0'
number_fluid_phases = 1
number_fluid_components = 2
[../]
[]
[Modules]
[./FluidProperties]
[./simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
[../]
[../]
[]
[Materials]
[./temperature]
type = PorousFlowTemperature
[../]
[./ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = pp
[../]
[./massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = massfrac0
[../]
[./simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[../]
[./poro_fracture]
type = PorousFlowPorosityConst
porosity = 6e-4 # = a * phif
block = 'fracture'
[../]
[./poro_matrix]
type = PorousFlowPorosityConst
porosity = 0.1
block = 'matrix1 matrix2'
[../]
[./diff1]
type = PorousFlowDiffusivityConst
diffusion_coeff = '1e-9 1e-9'
tortuosity = 1.0
block = 'fracture'
[../]
[./diff2]
type = PorousFlowDiffusivityConst
diffusion_coeff = '1e-9 1e-9'
tortuosity = 0.1
block = 'matrix1 matrix2'
[../]
[./relp]
type = PorousFlowRelativePermeabilityConst
phase = 0
[../]
[./permeability_fracture]
type = PorousFlowPermeabilityConst
permeability = '1.8e-11 0 0 0 1.8e-11 0 0 0 1.8e-11' # kf=3e-8, a=6e-4m. 1.8e-11 = kf * a
block = 'fracture'
[../]
[./permeability_matrix]
type = PorousFlowPermeabilityConst
permeability = '1e-20 0 0 0 1e-20 0 0 0 1e-20'
block = 'matrix1 matrix2'
[../]
[]
[Functions]
[./dt_controller]
type = PiecewiseConstant
x = '0 30 40 100 200 83200'
y = '0.01 0.1 1 10 100 32'
[../]
[]
[Preconditioning]
active = basic
[./mumps_is_best_for_parallel_jobs]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[../]
[./basic]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = 'gmres asm lu NONZERO 2 '
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 86400
[./TimeStepper]
type = FunctionDT
function = dt_controller
[../]
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-9
[]
[VectorPostprocessors]
[./xmass]
type = LineValueSampler
start_point = '0.4 0 0'
end_point = '0.5 0 0'
sort_by = x
num_points = 167
variable = massfrac0
[../]
[]
[Outputs]
perf_graph = true
console = true
csv = true
exodus = true
[]
test/tests/time_steppers/function_dt/function_dt_no_interpolation.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = -1
xmax = 1
ymin = -1
ymax = 1
nx = 2
ny = 2
elem_type = QUAD9
[]
[Functions]
[./exact_fn]
type = ParsedFunction
value = t*t*(x*x+y*y)
[../]
[./forcing_fn]
type = ParsedFunction
value = 2*t*(x*x+y*y)-4*t*t
[../]
[./dts]
type = PiecewiseConstant
x = '0 4 8 12 20'
y = '0 1 2 4 8'
direction = right
[../]
[]
[Variables]
[./u]
family = LAGRANGE
order = SECOND
[../]
[]
[ICs]
[./u_var]
type = FunctionIC
variable = u
function = exact_fn
[../]
[]
[Kernels]
[./td]
type = TimeDerivative
variable = u
[../]
[./diff]
type = Diffusion
variable = u
[../]
[./ffn]
type = BodyForce
variable = u
function = forcing_fn
[../]
[]
[BCs]
[./all]
type = FunctionDirichletBC
variable = u
boundary = 'left right top bottom'
function = exact_fn
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 20
[./TimeStepper]
type = FunctionDT
function = dts
[../]
[]
[Outputs]
exodus = true
[]
test/tests/multiapps/sub_cycling_failure/sub_gold.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Functions]
[./dts]
# These mimic the behavior of the failing solve
type = PiecewiseConstant
x = '0 0.1 0.105'
y = '0.01 0.005 0.01'
[../]
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./td]
type = TimeDerivative
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Executioner]
type = Transient
num_steps = 4
dt = 0.01
[./TimeStepper]
type = FunctionDT
function = dts
[../]
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]