- end_pointThe ending of the line
C++ Type:libMesh::Point
Unit:(no unit assumed)
Controllable:No
Description:The ending of the line
- num_pointsThe number of points to sample along the line
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The number of points to sample along the line
- sort_byWhat to sort the samples by
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:What to sort the samples by
- start_pointThe beginning of the line
C++ Type:libMesh::Point
Unit:(no unit assumed)
Controllable:No
Description:The beginning of the line
- variableThe names of the variables that this VectorPostprocessor operates on
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The names of the variables that this VectorPostprocessor operates on
LineValueSampler
Samples variable(s) along a specified line
Description
LineValueSampler samples the given variables/auxvariables at equally spaced points between the start and end points of a user provided line segment. The sampled points and the values are written to a csv file at every time step. The sorting order of the points can be changed using the sort_by
parameter which takes x
, y
, z
or id
(increasing distance from start point) as input.
LineValueSampler could also be used as an UserObject with the MultiAppUserObjectTransfer to transfer values to AuxVariables in the master or sub application. When using the LineValueSampler with the MultiAppUserObjectTransfer, an error is generated if more than one variable is supplied as input to the LineValueSampler as the transfer currently works only with one variable. Also, when calculating the value of the UserObject (LineValueSampler in this case) at a given point, the point is first projected onto the user defined line segment and the interpolated value at the projected point is returned as output. If the projected point falls outside the line segment, infinity is returned as output.
If the variable to be plotted needs to be scaled, this can be done by supplying a postprocessor. Caution should be used to make sure that the postprocessor is being evaluated in such a way that its value will not be lagged when being called by LineValueSampler.
If the line value sampler is used with a discontinuous variable on the edge/face of a 2D/3D element, then the value from the element with the lowest ID will be returned.
LineValueSampler
declares a vector for each spatial coordinate, (x
, y
, z
), of the sampled points, the distance along the sampled line in a vector called id
, and a vector named after each value sampled, containing the variable values at each point.
Input Parameters
- _auto_broadcastFalse
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
- contains_complete_historyFalseSet this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Unit:(no unit assumed)
Options:XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- parallel_typeREPLICATEDSet how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is performed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function.
Default:REPLICATED
C++ Type:MooseEnum
Unit:(no unit assumed)
Options:DISTRIBUTED, REPLICATED
Controllable:No
Description:Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is performed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- scaling1The postprocessor that the variables are multiplied with
Default:1
C++ Type:PostprocessorName
Unit:(no unit assumed)
Controllable:No
Description:The postprocessor that the variables are multiplied with
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
- warn_discontinuous_face_valuesTrueWhether to return a warning if a discontinuous variable is sampled on a face
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether to return a warning if a discontinuous variable is sampled on a face
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Unit:(no unit assumed)
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
- outputsVector of output names where you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector<OutputName>
Unit:(no unit assumed)
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
Input Files
- (modules/solid_mechanics/test/tests/static_deformations/cosserat_glide_fake_plastic.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/bw02.i)
- (modules/porous_flow/examples/flow_through_fractured_media/coarse.i)
- (modules/porous_flow/examples/flow_through_fractured_media/fine_thick_fracture_transient.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_2D_blocks.i)
- (modules/porous_flow/test/tests/relperm/corey1.i)
- (modules/porous_flow/test/tests/fluidstate/theis_tabulated.i)
- (modules/combined/examples/publications/rapid_dev/fig3.i)
- (modules/porous_flow/test/tests/pressure_pulse/pressure_pulse_1d_2phasePSVG2.i)
- (modules/geochemistry/test/tests/spatial_reactor/spatial_1.i)
- (modules/geochemistry/test/tests/spatial_reactor/spatial_7.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_1D.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/solidification/pipe_solidification.i)
- (modules/heat_transfer/test/tests/truss_heat_conduction/block_w_line.i)
- (python/peacock/tests/common/time_data.i)
- (test/tests/vectorpostprocessors/least_squares_fit_history/least_squares_fit_history.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/wli02.i)
- (modules/porous_flow/test/tests/sinks/s09.i)
- (modules/porous_flow/test/tests/relperm/brooks_corey1.i)
- (modules/geochemistry/test/tests/spatial_reactor/spatial_8.i)
- (test/tests/auxkernels/diffusion_flux/diffusion_flux.i)
- (modules/porous_flow/test/tests/relperm/corey3.i)
- (modules/porous_flow/test/tests/relperm/corey4.i)
- (modules/porous_flow/test/tests/relperm/vangenuchten1.i)
- (modules/phase_field/test/tests/KKS_system/lagrange_multiplier.i)
- (modules/porous_flow/test/tests/fluidstate/theis_brineco2.i)
- (modules/porous_flow/test/tests/sinks/injection_production_eg_outflowBC.i)
- (tutorials/darcy_thermo_mech/step08_postprocessors/problems/step8.i)
- (modules/porous_flow/test/tests/numerical_diffusion/pffltvd.i)
- (modules/optimization/test/tests/optimizationreporter/point_loads/forward.i)
- (modules/phase_field/examples/kim-kim-suzuki/kks_example_noflux.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/wli01.i)
- (modules/porous_flow/test/tests/hysteresis/hys_sat_03.i)
- (modules/heat_transfer/test/tests/truss_heat_conduction/line.i)
- (modules/geochemistry/test/tests/kinetics/bio_zoning_conc.i)
- (modules/porous_flow/test/tests/hysteresis/hys_pc_2.i)
- (modules/porous_flow/examples/multiapp_fracture_flow/diffusion_multiapp/fracture_app.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/rsc02.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp1_uo_transfer.i)
- (modules/porous_flow/examples/groundwater/ex01.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/rd02.i)
- (modules/phase_field/examples/slkks/CrFe_sigma.i)
- (modules/porous_flow/test/tests/heat_advection/heat_advection_1d_KT.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_1D_adaptivity.i)
- (modules/geochemistry/test/tests/spatial_reactor/spatial_6.i)
- (modules/porous_flow/test/tests/hysteresis/hys_pc_02.i)
- (modules/stochastic_tools/test/tests/surrogates/multioutput_gp/sub.i)
- (modules/porous_flow/test/tests/capillary_pressure/brooks_corey2.i)
- (modules/heat_transfer/test/tests/semiconductor_linear_conductivity/steinhart-hart_linear.i)
- (modules/porous_flow/test/tests/heat_advection/heat_advection_1d_fully_saturated_action.i)
- (modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_02_apply_stress.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_2D.i)
- (modules/level_set/test/tests/kernels/advection/advection_mms.i)
- (modules/phase_field/examples/slkks/CrFe.i)
- (modules/level_set/test/tests/kernels/olsson_reinitialization/olsson_1d.i)
- (test/tests/indicators/gradient_jump_indicator/gradient_jump_indicator_fv_test.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_3.i)
- (modules/combined/examples/publications/rapid_dev/fig7b.i)
- (modules/geochemistry/test/tests/spatial_reactor/spatial_4.i)
- (modules/combined/examples/phase_field-mechanics/kks_mechanics_VTS.i)
- (modules/porous_flow/examples/multiapp_fracture_flow/diffusion_multiapp/single_var.i)
- (modules/porous_flow/test/tests/pressure_pulse/pressure_pulse_1d_2phasePSVG.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/rsc01.i)
- (modules/porous_flow/test/tests/heat_advection/heat_advection_1d.i)
- (test/tests/variables/linearfv/diffusion-1d-pp.i)
- (tutorials/tutorial03_verification/app/test/tests/step03_analytical/1d_analytical.i)
- (modules/porous_flow/test/tests/numerical_diffusion/fltvd_none.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_3D.i)
- (test/tests/outputs/csv_final_and_latest/latest.i)
- (modules/navier_stokes/test/tests/finite_volume/cns/stagnation_inlet/supersonic_nozzle_hllc.i)
- (modules/phase_field/test/tests/misc/equal_gradient_lagrange.i)
- (modules/porous_flow/test/tests/hysteresis/hys_pc_03.i)
- (modules/porous_flow/test/tests/relperm/vangenuchten2.i)
- (test/tests/vectorpostprocessors/least_squares_fit/least_squares_fit.i)
- (modules/porous_flow/test/tests/relperm/unity.i)
- (modules/navier_stokes/test/tests/finite_volume/cns/pressure_outlet/subsonic_nozzle_fixed_inflow_hllc.i)
- (test/tests/outputs/hide_vector_pp/hide_vector_pp.i)
- (modules/phase_field/examples/multiphase/GrandPotential3Phase_AD.i)
- (modules/porous_flow/test/tests/capillary_pressure/vangenuchten3.i)
- (modules/porous_flow/examples/flow_through_fractured_media/coarse_3D.i)
- (modules/geochemistry/test/tests/spatial_reactor/spatial_5.i)
- (test/tests/functormaterials/smoother/test.i)
- (modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_01_slippery.i)
- (modules/porous_flow/examples/multiapp_fracture_flow/diffusion_multiapp/fracture_app_heat.i)
- (modules/porous_flow/test/tests/capillary_pressure/vangenuchten1.i)
- (modules/porous_flow/test/tests/hysteresis/hys_pc_01.i)
- (modules/porous_flow/test/tests/capillary_pressure/brooks_corey1.i)
- (test/tests/bcs/vectorpostprocessor/vectorpostprocessor.i)
- (modules/porous_flow/test/tests/heat_advection/heat_advection_1d_fullsat.i)
- (modules/porous_flow/test/tests/newton_cooling/nc02.i)
- (modules/porous_flow/examples/thm_example/2D.i)
- (modules/phase_field/test/tests/KKS_system/two_phase.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_2D_trimesh.i)
- (modules/porous_flow/test/tests/numerical_diffusion/no_action.i)
- (test/tests/executioners/nullspace/singular.i)
- (modules/porous_flow/test/tests/sinks/s09_fully_saturated.i)
- (modules/porous_flow/test/tests/numerical_diffusion/fltvd_no_antidiffusion.i)
- (modules/combined/test/tests/optimization/invOpt_bc_convective/forward.i)
- (modules/porous_flow/examples/multiapp_fracture_flow/diffusion_multiapp/two_vars.i)
- (modules/porous_flow/test/tests/sinks/injection_production_eg.i)
- (modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZQuadratic.i)
- (modules/porous_flow/test/tests/newton_cooling/nc01.i)
- (modules/heat_transfer/tutorials/introduction/therm_step03.i)
- (test/tests/functions/piecewise_linear_from_vectorpostprocessor/vector_postprocessor_function.i)
- (modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_01.i)
- (modules/porous_flow/test/tests/numerical_diffusion/fully_saturated_action.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_2D.i)
- (modules/geochemistry/test/tests/spatial_reactor/spatial_2.i)
- (modules/porous_flow/test/tests/thm_rehbinder/fixed_outer_rz.i)
- (test/tests/vectorpostprocessors/time_data/time_data.i)
- (modules/porous_flow/examples/thm_example/2D_c.i)
- (modules/porous_flow/test/tests/hysteresis/hys_pc_1.i)
- (test/tests/executioners/nullspace/singular_contaminated.i)
- (modules/solid_mechanics/test/tests/static_deformations/cosserat_glide.i)
- (modules/combined/examples/publications/rapid_dev/fig7a.i)
- (test/tests/vectorpostprocessors/line_value_sampler/line_value_sampler.i)
- (python/peacock/tests/input_tab/InputTree/gold/simple_diffusion_vp.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/rd03.i)
- (modules/porous_flow/test/tests/hysteresis/hys_sat_01.i)
- (modules/porous_flow/test/tests/numerical_diffusion/pffltvd_action.i)
- (modules/optimization/test/tests/optimizationreporter/bc_load_linearFunction/forward.i)
- (modules/porous_flow/test/tests/numerical_diffusion/fltvd.i)
- (modules/heat_transfer/test/tests/truss_heat_conduction/strip.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_1D_adaptivity.i)
- (modules/porous_flow/test/tests/relperm/corey2.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/rd01.i)
- (modules/porous_flow/test/tests/pressure_pulse/pressure_pulse_1d_2phasePS_KT.i)
- (modules/solid_mechanics/test/tests/action/reduced_eigenstrain_action.i)
- (test/tests/auxkernels/copy_value_aux/copy_aux.i)
- (modules/combined/examples/stochastic/graphite_ring_thermomechanics.i)
- (modules/porous_flow/test/tests/hysteresis/hys_sat_02.i)
- (modules/phase_field/test/tests/KKS_system/auxkernel.i)
- (modules/porous_flow/test/tests/pressure_pulse/pressure_pulse_1d_2phasePS.i)
- (modules/porous_flow/test/tests/newton_cooling/nc06.i)
- (modules/porous_flow/test/tests/sinks/s13.i)
- (modules/heat_transfer/tutorials/introduction/therm_step02a.i)
- (modules/porous_flow/test/tests/capillary_pressure/vangenuchten2.i)
- (modules/heat_transfer/test/tests/truss_heat_conduction/rectangle_w_line.i)
- (modules/porous_flow/test/tests/infiltration_and_drainage/bw01.i)
- (test/tests/outputs/postprocessor_final/postprocessor_final.i)
- (modules/porous_flow/test/tests/numerical_diffusion/framework.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_3D.i)
- (modules/porous_flow/test/tests/relperm/brooks_corey2.i)
- (modules/porous_flow/test/tests/newton_cooling/nc04.i)
- (modules/combined/examples/publications/rapid_dev/fig6.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_2.i)
- (modules/porous_flow/test/tests/thm_rehbinder/fixed_outer.i)
- (modules/heat_transfer/tutorials/introduction/therm_step03a.i)
- (test/tests/vectorpostprocessors/line_value_sampler/csv_delimiter.i)
- (modules/phase_field/test/tests/KKS_system/nonlinear.i)
- (modules/phase_field/examples/multiphase/GrandPotential3Phase.i)
- (modules/porous_flow/test/tests/thm_rehbinder/free_outer.i)
- (modules/porous_flow/test/tests/dirackernels/bh07.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp2_uo_transfer.i)
- (modules/stochastic_tools/test/tests/surrogates/nearest_point/sub_vector.i)
- (modules/navier_stokes/test/tests/auxkernels/liquid-fraction-aux/liquid-fraction-fv-aux.i)
- (modules/stochastic_tools/test/tests/surrogates/polynomial_regression/sub_vector.i)
- (modules/rdg/test/tests/advection_1d/rdgP0.i)
- (modules/stochastic_tools/test/tests/surrogates/cross_validation/sub_vector.i)
- (modules/porous_flow/test/tests/buckley_leverett/bl01.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_1D.i)
- (modules/stochastic_tools/examples/parameter_study/diffusion_time.i)
- (modules/porous_flow/examples/flow_through_fractured_media/fine_transient.i)
- (modules/porous_flow/test/tests/newton_cooling/nc08.i)
- (modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_2D_trimesh.i)
- (modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZLinear.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_4.i)
- (test/tests/outputs/csv_final_and_latest/final.i)
- (test/tests/fvbcs/fv_functor_dirichlet/fv_other_side.i)
- (modules/heat_transfer/test/tests/truss_heat_conduction/rectangle_w_strip.i)
- (modules/porous_flow/test/tests/dirackernels/theis_rz.i)
- (modules/navier_stokes/test/tests/finite_volume/materials/mixture_material/mixture.i)
- (modules/porous_flow/test/tests/heat_advection/heat_advection_1d_fully_saturated.i)
- (modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/forward.i)
- (modules/porous_flow/test/tests/hysteresis/hys_pc_3.i)
- (test/tests/auxkernels/functor_elemental_gradient/functor_gradient.i)
- (modules/optimization/test/tests/optimizationreporter/bc_load_linearFunction/homogeneous_forward.i)
- (test/tests/outputs/debug/show_execution_userobjects.i)
- (modules/heat_transfer/test/tests/truss_heat_conduction/block_w_bar.i)
Child Objects
(modules/solid_mechanics/test/tests/static_deformations/cosserat_glide_fake_plastic.i)
# Example taken from Appendix A of
# S Forest "Mechanics of Cosserat media An introduction". Available from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.154.4476&rep=rep1&type=pdf
#
# This example uses plasticity, but with inifinitely large yield strength, so it is really elasticity
#
# Analytically, the displacements are
# wc_z = B sinh(w_e y)
# disp_x = (2 mu_c B / w_e / (mu + mu_c)) (1 - cosh(w_e y))
# with w_e^2 = 2 mu mu_c / be / (mu + mu_c)
# and B = arbitrary integration constant
#
# Also, the only nonzero stresses are
# m_zy = 2 B be w_e cosh(w_e y)
# si_yx = -4 mu mu_c/(mu + mu_c) B sinh(w_e y)
#
# MOOSE gives these stress components correctly.
# However, it also gives a seemingly non-zero si_xy
# component. Upon increasing the resolution of the
# mesh (ny=10000, for example), the stress components
# are seen to limit correctly to the above forumlae
#
# I use mu = 2, mu_c = 3, be = 0.6, so w_e = 2
# Also i use B = 1, so at y = 1
# wc_z = 3.626860407847
# disp_x = -1.65731741465
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 100
ymax = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./z_couple]
type = StressDivergenceTensors
variable = wc_z
displacements = 'wc_x wc_y wc_z'
component = 2
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[./z_moment]
type = MomentBalancing
variable = wc_z
component = 2
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./disp_x_zero_at_y_zero]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0
[../]
[./disp_x_fixed_at_y_max]
type = DirichletBC
variable = disp_x
boundary = top
value = -1.65731741465
[../]
[./no_dispy]
type = DirichletBC
variable = disp_y
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_dispz]
type = DirichletBC
variable = disp_z
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'back front bottom top left right'
value = 0
[../]
[./wc_z_zero_at_y_zero]
type = DirichletBC
variable = wc_z
boundary = bottom
value = 0
[../]
[./wc_z_fixed_at_y_max]
type = DirichletBC
variable = wc_z
boundary = top
value = 3.626860407847
[../]
[]
[AuxVariables]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeCosseratElasticityTensor
B_ijkl = '1.1 0.6 0.6' # In Forest notation this is alpha=1.1 (this is unimportant), beta=gamma=0.6.
fill_method_bending = 'general_isotropic'
E_ijkl = '1 2 3' # In Forest notation this is lambda=1 (this is unimportant), mu=2, mu_c=3
fill_method = 'general_isotropic'
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
[../]
[./stress_fake_plasticity]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-12
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = y
variable = 'disp_x wc_z stress_yx couple_stress_zy'
start_point = '0 0 0'
end_point = '0 1 0'
num_points = 11
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = cosserat_glide_fake_plastic_out
exodus = false
csv = true
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/bw02.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 200
ny = 1
xmin = -10
xmax = 10
ymin = 0
ymax = 0.05
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Functions]
[dts]
type = PiecewiseLinear
y = '1E-1 5E-1 5E-1'
x = '0 1 10'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = pressure
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureBW
Sn = 0.0
Ss = 1.0
C = 1.5
las = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
viscosity = 4
density0 = 10
thermal_expansion = 0
[]
[]
[Materials]
[massfrac]
type = PorousFlowMassFraction
[]
[temperature]
type = PorousFlowTemperature
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[relperm]
type = PorousFlowRelativePermeabilityBW
Sn = 0.0
Ss = 1.0
Kn = 0
Ks = 1
C = 1.5
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.25
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1 0 0 0 1 0 0 0 1'
[]
[]
[Variables]
[pressure]
initial_condition = -9E2
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pressure
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pressure
gravity = '-0.1 0 0'
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[]
[BCs]
[recharge]
type = PorousFlowSink
variable = pressure
boundary = right
flux_function = -1.25 # corresponds to Rstar being 0.5 because i have to multiply by density*porosity
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 2
[TimeStepper]
type = FunctionDT
function = dts
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
variable = SWater
start_point = '-10 0 0'
end_point = '10 0 0'
sort_by = x
num_points = 80
execute_on = timestep_end
[]
[]
[Outputs]
file_base = bw02
sync_times = '0.5 2 8'
[exodus]
type = Exodus
sync_only = true
[]
[along_line]
type = CSV
sync_only = true
[]
[]
(modules/porous_flow/examples/flow_through_fractured_media/coarse.i)
# Flow and solute transport along a fracture embedded in a porous matrix
# The fracture is represented by lower dimensional elements
# fracture aperture = 6e-4m
# fracture porosity = 6e-4m = phi * a
# fracture permeability = 1.8e-11 which is based on k=3e-8 from a**2/12, and k*a = 3e-8*6e-4
# matrix porosity = 0.1
# matrix permeanility = 1e-20
[Mesh]
type = FileMesh
file = 'coarse.e'
block_id = '1 2 3'
block_name = 'fracture matrix1 matrix2'
boundary_id = '1 2'
boundary_name = 'bottom top'
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[pp]
[]
[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
[]
[pp_matrix]
type = ConstantIC
variable = pp
value = 1E6
[]
[]
[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 = 1
variable = pp
[]
[adv0]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = pp
[]
[diff0]
type = PorousFlowDispersiveFlux
fluid_component = 1
variable = pp
disp_trans = 0
disp_long = 0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = massfrac0
[]
[adv1]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = massfrac0
[]
[diff1]
type = PorousFlowDispersiveFlux
fluid_component = 0
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
[]
[]
[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'
[]
[permeability_fracture]
type = PorousFlowPermeabilityConst
permeability = '1.8e-11 0 0 0 1.8e-11 0 0 0 1.8e-11' # 1.8e-11 = a * kf
block = 'fracture'
[]
[permeability_matrix]
type = PorousFlowPermeabilityConst
permeability = '1e-20 0 0 0 1e-20 0 0 0 1e-20'
block = 'matrix1 matrix2'
[]
[relp]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[]
[Preconditioning]
[basic]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 10
dt = 1
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-12
[]
[VectorPostprocessors]
[xmass]
type = LineValueSampler
start_point = '-0.5 0 0'
end_point = '0.5 0 0'
sort_by = x
num_points = 41
variable = massfrac0
outputs = csv
[]
[]
[Outputs]
[csv]
type = CSV
execute_on = 'final'
[]
[]
(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
[]
[]
[Problem]
# massfrac0 has an initial condition despite the restart
allow_initial_conditions_with_restart = true
[]
[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
[]
[]
[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/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_2D_blocks.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek
# 2D version with blocks
# Top block: tracer is defined here, with velocity = (0.1, 0, 0)
# Central block: tracer is not defined here
# Bottom block: tracer is defined here, with velocity = (-0.1, 0, 0)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 10
xmin = 0
xmax = 1
ny = 5
ymin = 0
ymax = 1
[]
[top]
input = gen
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0.6 0'
top_right = '1 1 0'
block_id = 1
[]
[center]
input = bottom
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0.4 0'
top_right = '1 0.6 0'
block_id = 2
[]
[bottom]
input = top
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0 0'
top_right = '1 0.6 0'
block_id = 3
[]
[split_bdys]
type = BreakBoundaryOnSubdomainGenerator
input = center
boundaries = 'left right'
[]
[]
[GlobalParams]
block = '1 2 3'
[]
[Variables]
[tracer]
block = '1 3'
[]
[dummy]
[]
[]
[ICs]
[tracer_top]
type = FunctionIC
variable = tracer
function = 'if(x<0.1 | x>0.3, 0, 1)'
block = '1'
[]
[tracer_bot]
type = FunctionIC
variable = tracer
function = 'if(x<0.7 | x > 0.9, 0, 1)'
block = '3'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
block = '1 3'
[]
[flux_top]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo_top
block = '1'
[]
[flux_bot]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo_bot
block = '3'
[]
[.dummy]
type = TimeDerivative
variable = dummy
[]
[]
[UserObjects]
[fluo_top]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = superbee
u = tracer
velocity = '0.1 0 0'
block = '1'
[]
[fluo_bot]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = superbee
u = tracer
velocity = '-0.1 0 0'
block = '3'
[]
[]
[BCs]
[no_tracer_on_left_top]
type = DirichletBC
variable = tracer
value = 0
boundary = 'left_to_1'
[]
[remove_tracer_top]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = 'right_to_1'
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[no_tracer_on_left_bot]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = 'left_to_3'
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[remove_tracer_bot]
type = DirichletBC
variable = tracer
value = 0
boundary = 'right_to_3'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer_bot]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 11
sort_by = x
variable = tracer
[]
[tracer_top]
type = LineValueSampler
start_point = '0 1 0'
end_point = '1 1 0'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
timestep_tolerance = 1E-3
[]
[Outputs]
print_linear_residuals = false
[out]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/relperm/corey1.i)
# Test Corey relative permeability curve by varying saturation over the mesh
# Corey exponent n = 1 for both phases (linear residual saturation)
# No residual saturation in either phase
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityCorey
phase = 0
n = 1
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
phase = 1
n = 1
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-8
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/porous_flow/test/tests/fluidstate/theis_tabulated.i)
# Two phase Theis problem: Flow from single source using WaterNCG fluidstate.
# Constant rate injection 2 kg/s
# 1D cylindrical mesh
# Initially, system has only a liquid phase, until enough gas is injected
# to form a gas phase, in which case the system becomes two phase.
# Note: this test is the same as theis.i, but uses the tabulated version of the CO2FluidProperties
[Mesh]
type = GeneratedMesh
dim = 1
nx = 80
xmax = 200
bias_x = 1.05
coord_type = RZ
rz_coord_axis = Y
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[AuxVariables]
[saturation_gas]
order = CONSTANT
family = MONOMIAL
[]
[x1]
order = CONSTANT
family = MONOMIAL
[]
[y0]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[saturation_gas]
type = PorousFlowPropertyAux
variable = saturation_gas
property = saturation
phase = 1
execute_on = timestep_end
[]
[x1]
type = PorousFlowPropertyAux
variable = x1
property = mass_fraction
phase = 0
fluid_component = 1
execute_on = timestep_end
[]
[y0]
type = PorousFlowPropertyAux
variable = y0
property = mass_fraction
phase = 1
fluid_component = 0
execute_on = timestep_end
[]
[]
[Variables]
[pgas]
initial_condition = 20e6
[]
[zi]
initial_condition = 0
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pgas
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pgas
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = zi
[]
[flux1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = zi
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pgas zi'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[fs]
type = PorousFlowWaterNCG
water_fp = water
gas_fp = tabulated
capillary_pressure = pc
[]
[]
[FluidProperties]
[co2]
type = CO2FluidProperties
[]
[tabulated]
type = TabulatedBicubicFluidProperties
fp = co2
fluid_property_file = fluid_properties.csv
# We try to avoid using both, but some properties are not implemented in the tabulation
allow_fp_and_tabulation = true
# Test was design prior to bounds check
error_on_out_of_bounds = false
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = fluid_properties.csv
[]
[water]
type = Water97FluidProperties
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = 20
[]
[waterncg]
type = PorousFlowFluidState
gas_porepressure = pgas
z = zi
temperature_unit = Celsius
capillary_pressure = pc
fluid_state = fs
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1e-12 0 0 0 1e-12 0 0 0 1e-12'
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
s_res = 0.1
sum_s_res = 0.1
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 1
[]
[]
[BCs]
[rightwater]
type = DirichletBC
boundary = right
value = 20e6
variable = pgas
[]
[]
[DiracKernels]
[source]
type = PorousFlowSquarePulsePointSource
point = '0 0 0'
mass_flux = 2
variable = zi
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-8 1E-10 20'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 8e2
[TimeStepper]
type = IterationAdaptiveDT
dt = 2
growth_factor = 2
[]
[]
[VectorPostprocessors]
[line]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
start_point = '0 0 0'
end_point = '200 0 0'
num_points = 1000
variable = 'pgas zi x1 saturation_gas'
execute_on = 'timestep_end'
[]
[]
[Postprocessors]
[pgas]
type = PointValue
point = '1 0 0'
variable = pgas
[]
[sgas]
type = PointValue
point = '1 0 0'
variable = saturation_gas
[]
[zi]
type = PointValue
point = '1 0 0'
variable = zi
[]
[massgas]
type = PorousFlowFluidMass
fluid_component = 1
[]
[x1]
type = PointValue
point = '1 0 0'
variable = x1
[]
[y0]
type = PointValue
point = '1 0 0'
variable = y0
[]
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
[csvout]
type = CSV
file_base = theis_tabulated_csvout
execute_on = timestep_end
execute_vector_postprocessors_on = final
[]
[]
(modules/combined/examples/publications/rapid_dev/fig3.i)
#
# Fig. 3 input for 10.1016/j.commatsci.2017.02.017
# D. Schwen et al./Computational Materials Science 132 (2017) 36-45
# Comparison of an analytical (ca) and numerical (c) phase field interface
# profile. Supply the L parameter on the command line to gather the data for
# the inset plot.
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = ${L}
xmin = -30
xmax = 30
[]
[Functions]
[./solution]
type = ParsedFunction
expression = 0.5*(1+tanh(x/2^0.5))
[../]
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = solution
#type = FunctionIC
#function = if(x>0,1,0)
[../]
[../]
[./w]
[../]
[]
[AuxVariables]
[./diff]
[../]
[./ca]
[./InitialCondition]
type = FunctionIC
function = '0.5*(1+tanh(x/2^0.5))'
[../]
[../]
[]
[AuxKernels]
[./diff]
type = ParsedAux
variable = diff
expression = c-ca
coupled_variables = 'c ca'
[../]
[]
[Materials]
[./F]
type = DerivativeParsedMaterial
property_name = F
expression = 'c^2*(1-c)^2'
coupled_variables = c
[../]
[]
[Kernels]
# Split Cahn-Hilliard kernels
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
kappa_name = 1
w = w
[../]
[./wres]
type = SplitCHWRes
variable = w
mob_name = 1
[../]
[./time]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[]
[Postprocessors]
[./L2]
type = ElementL2Error
function = solution
variable = c
[../]
[]
[VectorPostprocessors]
[./c]
type = LineValueSampler
variable = 'c ca diff'
start_point = '-10 0 0'
end_point = '10 0 0'
num_points = 200
sort_by = x
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
end_time = 1e+6
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 5
iteration_window = 1
[../]
[]
[Outputs]
csv = true
execute_on = final
[]
(modules/porous_flow/test/tests/pressure_pulse/pressure_pulse_1d_2phasePSVG2.i)
# Pressure pulse in 1D with 2 phases, 2components - transient
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 100
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[ppwater]
initial_condition = 2e6
[]
[sgas]
initial_condition = 0.3
[]
[]
[AuxVariables]
[massfrac_ph0_sp0]
initial_condition = 1
[]
[massfrac_ph1_sp0]
initial_condition = 0
[]
[ppgas]
family = MONOMIAL
order = FIRST
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = ppwater
[]
[flux0]
type = PorousFlowAdvectiveFlux
variable = ppwater
fluid_component = 0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = sgas
[]
[flux1]
type = PorousFlowAdvectiveFlux
variable = sgas
fluid_component = 1
[]
[]
[AuxKernels]
[ppgas]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = ppgas
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'ppwater sgas'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1e-4
sat_lr = 0.3
pc_max = 1e9
log_extension = true
[]
[]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 2e7
density0 = 1
thermal_expansion = 0
viscosity = 1e-5
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = ppwater
phase1_saturation = sgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1e-15 0 0 0 1e-15 0 0 0 1e-15'
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 0
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 1
[]
[]
[BCs]
[leftwater]
type = DirichletBC
boundary = left
value = 3e6
variable = ppwater
[]
[rightwater]
type = DirichletBC
boundary = right
value = 2e6
variable = ppwater
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-20 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1e3
end_time = 1e4
[]
[VectorPostprocessors]
[pp]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'ppwater ppgas'
start_point = '0 0 0'
end_point = '100 0 0'
num_points = 11
[]
[]
[Outputs]
file_base = pressure_pulse_1d_2phasePSVG2
print_linear_residuals = false
[csv]
type = CSV
execute_on = final
[]
[]
(modules/geochemistry/test/tests/spatial_reactor/spatial_1.i)
# Example demonstrating that controlled-activity can be spatially-dependent
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O H+ Cl-"
[]
[]
[SpatialReactionSolver]
model_definition = definition
charge_balance_species = "Cl-"
constraint_species = "H2O H+ Cl-"
constraint_value = " 1 -5 1E-5"
constraint_meaning = "bulk_composition log10activity bulk_composition"
constraint_unit = " kg dimensionless moles"
controlled_activity_name = 'H+'
controlled_activity_value = 'act_H+'
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmax = 1
[]
[Executioner]
type = Transient
num_steps = 1
[]
[AuxVariables]
[act_H+]
[]
[]
[AuxKernels]
[act_H+]
type = FunctionAux
variable = 'act_H+'
function = '10^(-5 + x)'
execute_on = timestep_begin # so the Reactor gets the correct value
[]
[]
[VectorPostprocessors]
[pH]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
sort_by = x
num_points = 11
variable = pH
[]
[]
[Outputs]
csv = true
execute_on = final
[]
(modules/geochemistry/test/tests/spatial_reactor/spatial_7.i)
# temperature is x and t dependent. This simulation only converges if adaptive_timestepping = true
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O H+ Cl-"
[]
[]
[SpatialReactionSolver]
model_definition = definition
charge_balance_species = "Cl-"
constraint_species = "H2O H+ Cl-"
constraint_value = " 55.5 1E-1 1E-1"
constraint_meaning = "bulk_composition bulk_composition bulk_composition"
constraint_unit = "moles moles moles"
temperature = temp_controller
execute_console_output_on = 'timestep_end'
point = '10 0 0'
ramp_max_ionic_strength_initial = 0
max_iter = 4
adaptive_timestepping = true
[]
[VectorPostprocessors]
[temperature]
type = LineValueSampler
start_point = '0 0 0'
end_point = '10 0 0'
sort_by = x
num_points = 2
variable = 'solution_temperature'
[]
[]
[AuxVariables]
[temp_controller]
[]
[]
[AuxKernels]
[temp_controller]
type = FunctionAux
variable = temp_controller
function = 'if(t <= 1, 25, 25 + 18 * x)'
execute_on = timestep_begin # so the Reactor gets the correct value
[]
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
xmax = 10
[]
[Executioner]
type = Transient
dt = 1
end_time = 2
[]
[Outputs]
csv = true
[]
(modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_1D.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek, with antidiffusion from superbee flux limiting
# 1D version
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 1
[]
[Variables]
[tracer]
[]
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
[]
[flux]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo
[]
[]
[UserObjects]
[fluo]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = superbee
u = tracer
velocity = '0.1 0 0'
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
nl_max_its = 500
timestep_tolerance = 1E-3
[]
[Outputs]
print_linear_residuals = false
[out]
type = CSV
execute_on = final
[]
[]
(modules/navier_stokes/test/tests/finite_volume/ins/solidification/pipe_solidification.i)
mu = 8.8871e-4
rho_solid = 997.561
rho_liquid = 997.561
k_solid = 0.6203
k_liquid = 0.6203
cp_solid = 4181.72
cp_liquid = 4181.72
L = 3e5
T_liquidus = 285
T_solidus = 280
advected_interp_method = 'average'
velocity_interp_method = 'rc'
U_inlet = '${fparse 0.5 * mu / rho_liquid / 0.5}'
T_inlet = 300.0
T_cold = 200.0
Nx = 30
Ny = 5
[GlobalParams]
rhie_chow_user_object = 'rc'
[]
[UserObjects]
[rc]
type = INSFVRhieChowInterpolator
u = vel_x
v = vel_y
pressure = pressure
[]
[]
[Mesh]
coord_type = 'RZ'
rz_coord_axis = 'X'
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 10
ymin = 0
ymax = '${fparse 0.5 * 1.0}'
nx = ${Nx}
ny = ${Ny}
bias_y = '${fparse 1 / 1.2}'
[]
[rename1]
type = RenameBoundaryGenerator
input = gen
old_boundary = 'left'
new_boundary = 'inlet'
[]
[rename2]
type = RenameBoundaryGenerator
input = rename1
old_boundary = 'right'
new_boundary = 'outlet'
[]
[rename3]
type = RenameBoundaryGenerator
input = rename2
old_boundary = 'bottom'
new_boundary = 'symmetry'
[]
[rename4]
type = RenameBoundaryGenerator
input = rename3
old_boundary = 'top'
new_boundary = 'wall'
[]
[rename5]
type = ParsedGenerateSideset
input = rename4
normal = '0 1 0'
combinatorial_geometry = 'x>2.0 & x<8.0 & y>0.49999'
new_sideset_name = 'cooled_wall'
[]
[]
[AuxVariables]
[U]
type = MooseVariableFVReal
[]
[fl]
type = MooseVariableFVReal
initial_condition = 1.0
[]
[density]
type = MooseVariableFVReal
[]
[th_cond]
type = MooseVariableFVReal
[]
[cp_var]
type = MooseVariableFVReal
[]
[darcy_coef]
type = MooseVariableFVReal
[]
[fch_coef]
type = MooseVariableFVReal
[]
[]
[AuxKernels]
[mag]
type = VectorMagnitudeAux
variable = U
x = vel_x
y = vel_y
[]
[compute_fl]
type = NSLiquidFractionAux
variable = fl
temperature = T
T_liquidus = '${T_liquidus}'
T_solidus = '${T_solidus}'
execute_on = 'TIMESTEP_END'
[]
[rho_out]
type = FunctorAux
functor = 'rho_mixture'
variable = 'density'
[]
[th_cond_out]
type = FunctorAux
functor = 'k_mixture'
variable = 'th_cond'
[]
[cp_out]
type = FunctorAux
functor = 'cp_mixture'
variable = 'cp_var'
[]
[darcy_out]
type = FunctorAux
functor = 'Darcy_coefficient'
variable = 'darcy_coef'
[]
[fch_out]
type = FunctorAux
functor = 'Forchheimer_coefficient'
variable = 'fch_coef'
[]
[]
[Variables]
[vel_x]
type = INSFVVelocityVariable
initial_condition = 0.0
[]
[vel_y]
type = INSFVVelocityVariable
initial_condition = 0.0
[]
[pressure]
type = INSFVPressureVariable
[]
[T]
type = INSFVEnergyVariable
initial_condition = '${T_inlet}'
scaling = 1.0
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
rho = rho_mixture
[]
[u_time]
type = INSFVMomentumTimeDerivative
variable = vel_x
rho = rho_mixture
momentum_component = 'x'
[]
[u_advection]
type = INSFVMomentumAdvection
variable = vel_x
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
rho = rho_mixture
momentum_component = 'x'
[]
[u_viscosity]
type = INSFVMomentumDiffusion
variable = vel_x
mu = ${mu}
momentum_component = 'x'
[]
[u_pressure]
type = INSFVMomentumPressure
variable = vel_x
momentum_component = 'x'
pressure = pressure
[]
[u_friction]
type = PINSFVMomentumFriction
variable = vel_x
momentum_component = 'x'
u = vel_x
v = vel_y
Darcy_name = 'Darcy_coeff'
Forchheimer_name = 'Forchheimer_coeff'
rho = ${rho_liquid}
mu = ${mu}
standard_friction_formulation = false
[]
[v_time]
type = INSFVMomentumTimeDerivative
variable = vel_y
rho = rho_mixture
momentum_component = 'y'
[]
[v_advection]
type = INSFVMomentumAdvection
variable = vel_y
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
rho = rho_mixture
momentum_component = 'y'
[]
[v_viscosity]
type = INSFVMomentumDiffusion
variable = vel_y
mu = ${mu}
momentum_component = 'y'
[]
[v_pressure]
type = INSFVMomentumPressure
variable = vel_y
momentum_component = 'y'
pressure = pressure
[]
[v_friction]
type = PINSFVMomentumFriction
variable = vel_y
momentum_component = 'y'
u = vel_x
v = vel_y
Darcy_name = 'Darcy_coeff'
Forchheimer_name = 'Forchheimer_coeff'
rho = ${rho_liquid}
mu = ${mu}
standard_friction_formulation = false
[]
[T_time]
type = INSFVEnergyTimeDerivative
variable = T
rho = rho_mixture
dh_dt = dh_dt
[]
[energy_advection]
type = INSFVEnergyAdvection
variable = T
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
[]
[energy_diffusion]
type = FVDiffusion
coeff = k_mixture
variable = T
[]
[energy_source]
type = NSFVPhaseChangeSource
variable = T
L = ${L}
liquid_fraction = fl
T_liquidus = ${T_liquidus}
T_solidus = ${T_solidus}
rho = 'rho_mixture'
[]
[]
[FVBCs]
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'inlet'
variable = vel_x
function = '${U_inlet}'
[]
[sym_u]
type = INSFVSymmetryVelocityBC
boundary = 'symmetry'
variable = vel_x
u = vel_x
v = vel_y
mu = ${mu}
momentum_component = 'x'
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'inlet'
variable = vel_y
function = 0
[]
[walls-u]
type = INSFVNoSlipWallBC
boundary = 'wall'
variable = vel_x
function = 0
[]
[walls-v]
type = INSFVNoSlipWallBC
boundary = 'wall'
variable = vel_y
function = 0
[]
[sym_v]
type = INSFVSymmetryVelocityBC
boundary = 'symmetry'
variable = vel_y
u = vel_x
v = vel_y
mu = ${mu}
momentum_component = y
[]
[outlet_p]
type = INSFVOutletPressureBC
boundary = 'outlet'
variable = pressure
function = 0
[]
[sym_p]
type = INSFVSymmetryPressureBC
boundary = 'symmetry'
variable = pressure
[]
[sym_T]
type = INSFVSymmetryScalarBC
variable = T
boundary = 'symmetry'
[]
[cooled_wall]
type = FVFunctorDirichletBC
variable = T
functor = '${T_cold}'
boundary = 'cooled_wall'
[]
[]
[FunctorMaterials]
[ins_fv]
type = INSFVEnthalpyFunctorMaterial
rho = rho_mixture
cp = cp_mixture
temperature = 'T'
[]
[eff_cp]
type = NSFVMixtureFunctorMaterial
phase_2_names = '${cp_solid} ${k_solid} ${rho_solid}'
phase_1_names = '${cp_liquid} ${k_liquid} ${rho_liquid}'
prop_names = 'cp_mixture k_mixture rho_mixture'
phase_1_fraction = fl
[]
[mushy_zone_resistance]
type = INSFVMushyPorousFrictionFunctorMaterial
liquid_fraction = 'fl'
mu = '${mu}'
rho_l = '${rho_liquid}'
[]
[friction]
type = ADGenericVectorFunctorMaterial
prop_names = 'Darcy_coeff Forchheimer_coeff'
prop_values = 'darcy_coef darcy_coef darcy_coef fch_coef fch_coef fch_coef'
[]
[]
[Executioner]
type = Transient
dt = 5e3
end_time = 1e4
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu NONZERO'
nl_abs_tol = 1e-8
nl_max_its = 12
[]
[Postprocessors]
[average_T]
type = ElementAverageValue
variable = T
outputs = csv
execute_on = FINAL
[]
[]
[VectorPostprocessors]
[sat]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.0 0 0'
end_point = '10.0 0 0'
num_points = '${Nx}'
sort_by = x
variable = 'T'
execute_on = FINAL
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
execute_on = 'FINAL'
[]
[]
(modules/heat_transfer/test/tests/truss_heat_conduction/block_w_line.i)
[Mesh]
parallel_type = 'replicated'
[block]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 50
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -1.25
ymax = 1.25
zmin = -0.04
zmax = 0.04
boundary_name_prefix = block
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 1
[]
[line]
type = GeneratedMeshGenerator
dim = 1
xmin = -0.5
xmax = 0.5
nx = 10
boundary_name_prefix = line
boundary_id_offset = 10
[]
[line_id]
type = SubdomainIDGenerator
input = line
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'block_id line_id'
[]
[line_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'block line'
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[time_derivative]
type = HeatConductionTimeDerivative
variable = temperature
block = 'block'
[]
[heat_conduction]
type = HeatConduction
variable = temperature
block = 'block'
[]
[time_derivative_line]
type = TrussHeatConductionTimeDerivative
variable = temperature
area = area
block = 'line'
[]
[heat_conduction_line]
type = TrussHeatConduction
variable = temperature
area = area
block = 'line'
[]
[]
[AuxVariables]
[area]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[area]
type = ConstantAux
variable = area
value = 0.008
execute_on = 'initial timestep_begin'
[]
[]
[Constraints]
[equalvalue]
type = EqualValueEmbeddedConstraint
secondary = 'line'
primary = 'block'
penalty = 1e6
formulation = kinematic
primary_variable = temperature
variable = temperature
[]
[]
[Materials]
[block]
type = GenericConstantMaterial
block = 'block'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '1.0 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[line]
type = GenericConstantMaterial
block = 'line'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '10.0 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[]
[BCs]
[right]
type = FunctionDirichletBC
variable = temperature
boundary = 'block_right line_right'
function = '10*t'
[]
[]
[VectorPostprocessors]
[x_n0_25]
type = LineValueSampler
start_point = '-0.25 0 0'
end_point = '-0.25 1.25 0'
num_points = 100
variable = 'temperature'
sort_by = id
[]
[x_0_25]
type = LineValueSampler
start_point = '0.25 0 0'
end_point = '0.25 1.25 0'
num_points = 100
variable = 'temperature'
sort_by = id
[]
[]
[Executioner]
type = Transient
start_time = 0
dt = 1
end_time = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = 'csv/block_w_line'
time_data = true
[]
[]
(python/peacock/tests/common/time_data.i)
###############################################################
# The following tests that the CSV output object can include an
# additional .csv file that contains the time and timestep
# data from VectorPostprocessor object.
###############################################################
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./diff_v]
type = Diffusion
variable = v
[../]
[./time]
type = TimeDerivative
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = left
value = 1
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = right
value = 0
[../]
[]
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
variable = 'u v'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = id
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
execute_on = 'initial timestep_end'
file_base = 'time_data'
[./out]
type = CSV
time_data = true
interval = 2
[../]
[]
(test/tests/vectorpostprocessors/least_squares_fit_history/least_squares_fit_history.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./diff_v]
type = Diffusion
variable = v
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = FunctionDirichletBC
variable = u
boundary = right
function = 't'
[../]
[./left_v]
type = FunctionDirichletBC
variable = v
boundary = left
function = 't'
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = right
value = 0
[../]
[]
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
variable = 'u v'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = id
outputs = none
[../]
[./least_squares_fit_coeffs]
type = LeastSquaresFitHistory
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
order = 1
[../]
[./shift_and_scale_x_least_squares_fit_coeffs]
type = LeastSquaresFitHistory
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
x_shift = 1
x_scale = 10
order = 1
[../]
[./shift_and_scale_y_least_squares_fit_coeffs]
type = LeastSquaresFitHistory
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
y_shift = 1
y_scale = 10
order = 1
[../]
[]
[Executioner]
type = Transient
start_time = 0.0
num_steps = 3
dt = 1.0
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
file_base = out
execute_on = 'timestep_end'
csv = true
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/wli02.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 1
xmin = -1000
xmax = 0
ymin = 0
ymax = 0.05
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = pressure
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureBW
Sn = 0.0
Ss = 1.0
C = 1.5
las = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
viscosity = 4
density0 = 10
thermal_expansion = 0
[]
[]
[Materials]
[massfrac]
type = PorousFlowMassFraction
[]
[temperature]
type = PorousFlowTemperature
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[relperm]
type = PorousFlowRelativePermeabilityBW
Sn = 0.0
Ss = 1.0
Kn = 0
Ks = 1
C = 1.5
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.25
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1 0 0 0 1 0 0 0 1'
[]
[]
[Variables]
[pressure]
initial_condition = -1E-4
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pressure
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pressure
gravity = '-0.1 0 0'
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[]
[BCs]
[base]
type = DirichletBC
boundary = 'left'
value = -1E-4
variable = pressure
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10000'
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = SWater
start_point = '-1000 0 0'
end_point = '0 0 0'
sort_by = x
num_points = 71
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 100
dt = 5
[]
[Outputs]
file_base = wli02
sync_times = '100 500 1000'
[exodus]
type = Exodus
sync_only = true
[]
[along_line]
type = CSV
sync_only = true
[]
[]
(modules/porous_flow/test/tests/sinks/s09.i)
# Apply a piecewise-linear sink flux to the right-hand side and watch fluid flow to it
#
# This test has a single phase with two components. The test initialises with
# the porous material fully filled with component=1. The left-hand side is fixed
# at porepressure=1 and mass-fraction of the zeroth component being unity.
# The right-hand side has a very strong piecewise-linear flux that keeps the
# porepressure~0 at that side. Fluid mass is extracted by this flux in proportion
# to the fluid component mass fraction.
#
# Therefore, the zeroth fluid component will flow from left to right (down the
# pressure gradient).
#
# The important DE is
# porosity * dc/dt = (perm / visc) * grad(P) * grad(c)
# which is true for c = mass-fraction, and very large bulk modulus of the fluid.
# For grad(P) constant in time and space (as in this example) this is just the
# advection equation for c, with velocity = perm / visc / porosity. The parameters
# are chosen to velocity = 1 m/s.
# In the numerical world, and especially with full upwinding, the advection equation
# suffers from diffusion. In this example, the diffusion is obvious when plotting
# the mass-fraction along the line, but the average velocity of the front is still
# correct at 1 m/s.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp frac'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Variables]
[pp]
[]
[frac]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = 1-x
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = frac
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = pp
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
gravity = '0 0 0'
variable = frac
[]
[flux1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
gravity = '0 0 0'
variable = pp
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1e10 # need large in order for constant-velocity advection
density0 = 1 # almost irrelevant, except that the ability of the right BC to keep P fixed at zero is related to density_P0
thermal_expansion = 0
viscosity = 11
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = frac
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 1.1 0 0 0 1.1'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 2 # irrelevant in this fully-saturated situation
phase = 0
[]
[]
[BCs]
[lhs_fixed_a]
type = DirichletBC
boundary = 'left'
variable = frac
value = 1
[]
[lhs_fixed_b]
type = DirichletBC
boundary = 'left'
variable = pp
value = 1
[]
[flux0]
type = PorousFlowPiecewiseLinearSink
boundary = 'right'
pt_vals = '-100 100'
multipliers = '-1 1'
variable = frac # the zeroth comonent
mass_fraction_component = 0
use_mobility = false
use_relperm = false
fluid_phase = 0
flux_function = 1E4
[]
[flux1]
type = PorousFlowPiecewiseLinearSink
boundary = 'right'
pt_vals = '-100 100'
multipliers = '-1 1'
variable = pp # comonent 1
mass_fraction_component = 1
use_mobility = false
use_relperm = false
fluid_phase = 0
flux_function = 1E4
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_max_it -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = 'gmres asm lu 10000 NONZERO 2'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1E-2
end_time = 1
nl_rel_tol = 1E-12
nl_abs_tol = 1E-12
[]
[VectorPostprocessors]
[mf]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 100
sort_by = x
variable = frac
[]
[]
[Outputs]
file_base = s09
[console]
type = Console
execute_on = 'nonlinear linear'
[]
[csv]
type = CSV
sync_times = '0.1 0.5 1'
sync_only = true
[]
time_step_interval = 10
[]
(modules/porous_flow/test/tests/relperm/brooks_corey1.i)
# Test Brooks-Corey relative permeability curve by varying saturation over the mesh
# Exponent lambda = 2 for both phases
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityBC
phase = 0
lambda = 2
[]
[kr1]
type = PorousFlowRelativePermeabilityBC
phase = 1
lambda = 2
nw_phase = true
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-8
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/geochemistry/test/tests/spatial_reactor/spatial_8.i)
# Sources are spatially-dependent and adaptive timestepping is needed to ensure convergence
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O H+ Cl-"
[]
[]
[SpatialReactionSolver]
model_definition = definition
charge_balance_species = "Cl-"
constraint_species = "H2O H+ Cl-"
constraint_value = " 55.5 1E-5 1E-5"
constraint_meaning = "bulk_composition bulk_composition bulk_composition"
constraint_unit = "moles moles moles"
source_species_names = HCl
source_species_rates = HCl_rate
execute_console_output_on = ''
ramp_max_ionic_strength_initial = 0
max_iter = 2
adaptive_timestepping = true
[]
[VectorPostprocessors]
[bulk_Cl]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
sort_by = x
num_points = 2
variable = 'bulk_moles_Cl-'
[]
[]
[AuxVariables]
[HCl_rate]
[]
[]
[AuxKernels]
[HCl_rate]
type = FunctionAux
variable = HCl_rate
function = '1 * x'
execute_on = timestep_begin # so the Reactor gets the correct value
[]
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
xmax = 1
[]
[Executioner]
type = Transient
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(test/tests/auxkernels/diffusion_flux/diffusion_flux.i)
[Mesh]
type = GeneratedMesh # Can generate simple lines, rectangles and rectangular prisms
dim = 2 # Dimension of the mesh
nx = 10 # Number of elements in the x direction
ny = 10 # Number of elements in the y direction
xmax = 1.0
ymax = 1.0
[]
[Variables]
[./T]
[../]
[]
[AuxVariables]
[./flux_x]
order = FIRST
family = MONOMIAL
[../]
[./flux_y]
order = FIRST
family = MONOMIAL
[../]
[]
[Kernels]
active = 'diff'
[./diff]
type = MatDiffusionTest # A Laplacian operator
variable = T
prop_name = 'thermal_conductivity'
[../]
[./diff_ad]
type = ADMatDiffusion # A Laplacian operator
variable = T
diffusivity = 'thermal_conductivity'
[../]
[]
[AuxKernels]
[./flux_x]
type = DiffusionFluxAux
diffusivity = 'thermal_conductivity'
variable = flux_x
diffusion_variable = T
component = x
[../]
[./flux_y]
type = DiffusionFluxAux
diffusivity = 'thermal_conductivity'
variable = flux_y
diffusion_variable = T
component = y
[../]
[]
[BCs]
[./inlet]
type = DirichletBC # Simple u=value BC
variable = T
boundary = left
value = 4000 # K
[../]
[./outlet]
type = DirichletBC
variable = T
boundary = right
value = 400 # K
[../]
[]
[Materials]
[./k]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '10' # in W/mK
[../]
[]
[VectorPostprocessors]
# avoid sampling an element variable on faces
[./line_sample]
type = LineValueSampler
variable = 'T flux_x flux_y'
start_point = '0.01 0.01 0'
end_point = '0.98 0.01 0'
num_points = 11
sort_by = id
[../]
[]
[Executioner]
type = Steady # Steady state problem
solve_type = PJFNK #Preconditioned Jacobian Free Newton Krylov
nl_rel_tol = 1e-12
petsc_options_iname = '-pc_type -pc_hypre_type' #Matches with the values below
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true # Output Exodus format
execute_on = 'initial timestep_end'
[]
(modules/porous_flow/test/tests/relperm/corey3.i)
# Test Corey relative permeability curve by varying saturation over the mesh
# Residual saturation of phase 0: s0r = 0.2
# Residual saturation of phase 1: s1r = 0.3
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
family = LAGRANGE
order = FIRST
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityCorey
phase = 0
n = 2
s_res = 0.2
sum_s_res = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
phase = 1
n = 2
s_res = 0.3
sum_s_res = 0.5
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-8
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/porous_flow/test/tests/relperm/corey4.i)
# Test Corey relative permeability curve by varying saturation over the mesh
# Residual saturation of phase 0: s0r = 0.2
# Residual saturation of phase 1: s1r = 0.3
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
family = LAGRANGE
order = FIRST
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityCorey
scaling = 0.1
phase = 0
n = 2
s_res = 0.2
sum_s_res = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
scaling = 10.0
phase = 1
n = 2
s_res = 0.3
sum_s_res = 0.5
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-8
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/porous_flow/test/tests/relperm/vangenuchten1.i)
# Test van Genuchten relative permeability curve by varying saturation over the mesh
# van Genuchten exponent m = 0.5 for both phases
# No residual saturation in either phase
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityVG
phase = 0
m = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityVG
phase = 1
m = 0.5
wetting = false
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-7
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/phase_field/test/tests/KKS_system/lagrange_multiplier.i)
#
# This test ensures that the equilibrium solution using two order parameters with a
# Lagrange multiplier constraint is identical to the dedicated two phase formulation
# in two_phase.i
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 5
[]
[AuxVariables]
[Fglobal]
order = CONSTANT
family = MONOMIAL
[]
[]
[Variables]
# concentration
[c]
order = FIRST
family = LAGRANGE
[InitialCondition]
type = FunctionIC
function = x/5
[]
[]
# order parameter 1
[eta1]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
# order parameter 2
[eta2]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
# phase concentration 1
[c1]
order = FIRST
family = LAGRANGE
initial_condition = 0.2
[]
# phase concentration 2
[c2]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
# Lagrange multiplier
[lambda]
order = FIRST
family = LAGRANGE
initial_condition = 0.0
[]
[]
[Materials]
# simple toy free energies
[f1] # = fd
type = DerivativeParsedMaterial
property_name = F1
coupled_variables = 'c1'
expression = '(0.9-c1)^2'
[]
[f2] # = fm
type = DerivativeParsedMaterial
property_name = F2
coupled_variables = 'c2'
expression = '(0.1-c2)^2'
[]
# Switching functions for each phase
[h1_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta1
function_name = h1
[]
[h2_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta2
function_name = h2
[]
# Coefficients for diffusion equation
[Dh1]
type = DerivativeParsedMaterial
material_property_names = 'D h1'
expression = D*h1
property_name = Dh1
[]
[Dh2]
type = DerivativeParsedMaterial
material_property_names = 'D h2'
expression = D*h2
property_name = Dh2
[]
# Barrier functions for each phase
[g1]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta1
function_name = g1
[]
[g2]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta2
function_name = g2
[]
# constant properties
[constants]
type = GenericConstantMaterial
prop_names = 'D L kappa'
prop_values = '0.7 0.7 0.2'
[]
[]
[Kernels]
#Kernels for diffusion equation
[diff_time]
type = TimeDerivative
variable = c
[]
[diff_c1]
type = MatDiffusion
variable = c
diffusivity = Dh1
v = c1
[]
[diff_c2]
type = MatDiffusion
variable = c
diffusivity = Dh2
v = c2
[]
# Kernels for Allen-Cahn equation for eta1
[deta1dt]
type = TimeDerivative
variable = eta1
[]
[ACBulkF1]
type = KKSMultiACBulkF
variable = eta1
Fj_names = 'F1 F2 '
hj_names = 'h1 h2 '
gi_name = g1
eta_i = eta1
wi = 0.2
coupled_variables = 'c1 c2 eta2'
[]
[ACBulkC1]
type = KKSMultiACBulkC
variable = eta1
Fj_names = 'F1 F2'
hj_names = 'h1 h2'
cj_names = 'c1 c2'
eta_i = eta1
coupled_variables = 'eta2'
[]
[ACInterface1]
type = ACInterface
variable = eta1
kappa_name = kappa
[]
[multipler1]
type = MatReaction
variable = eta1
v = lambda
reaction_rate = L
[]
# Kernels for the Lagrange multiplier equation
[mult_lambda]
type = MatReaction
variable = lambda
reaction_rate = 2
[]
[mult_ACBulkF_1]
type = KKSMultiACBulkF
variable = lambda
Fj_names = 'F1 F2 '
hj_names = 'h1 h2 '
gi_name = g1
eta_i = eta1
wi = 0.2
mob_name = 1
coupled_variables = 'c1 c2 eta2 '
[]
[mult_ACBulkC_1]
type = KKSMultiACBulkC
variable = lambda
Fj_names = 'F1 F2'
hj_names = 'h1 h2'
cj_names = 'c1 c2'
eta_i = eta1
coupled_variables = 'eta2 '
mob_name = 1
[]
[mult_CoupledACint_1]
type = SimpleCoupledACInterface
variable = lambda
v = eta1
kappa_name = kappa
mob_name = 1
[]
[mult_ACBulkF_2]
type = KKSMultiACBulkF
variable = lambda
Fj_names = 'F1 F2 '
hj_names = 'h1 h2 '
gi_name = g2
eta_i = eta2
wi = 0.2
mob_name = 1
coupled_variables = 'c1 c2 eta1 '
[]
[mult_ACBulkC_2]
type = KKSMultiACBulkC
variable = lambda
Fj_names = 'F1 F2'
hj_names = 'h1 h2'
cj_names = 'c1 c2'
eta_i = eta2
coupled_variables = 'eta1 '
mob_name = 1
[]
[mult_CoupledACint_2]
type = SimpleCoupledACInterface
variable = lambda
v = eta2
kappa_name = kappa
mob_name = 1
[]
# Kernels for constraint equation eta1 + eta2 = 1
# eta2 is the nonlinear variable for the constraint equation
[eta2reaction]
type = MatReaction
variable = eta2
reaction_rate = 1
[]
[eta1reaction]
type = MatReaction
variable = eta2
v = eta1
reaction_rate = 1
[]
[one]
type = BodyForce
variable = eta2
value = -1.0
[]
# Phase concentration constraints
[chempot12]
type = KKSPhaseChemicalPotential
variable = c1
cb = c2
fa_name = F1
fb_name = F2
[]
[phaseconcentration]
type = KKSMultiPhaseConcentration
variable = c2
cj = 'c1 c2'
hj_names = 'h1 h2'
etas = 'eta1 eta2'
c = c
[]
[]
[AuxKernels]
[Fglobal_total]
type = KKSMultiFreeEnergy
Fj_names = 'F1 F2 '
hj_names = 'h1 h2 '
gj_names = 'g1 g2 '
variable = Fglobal
w = 0.2
interfacial_vars = 'eta1 eta2 '
kappa_names = 'kappa kappa'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'lu nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-10
nl_abs_tol = 1.0e-11
num_steps = 35
dt = 10
[]
[VectorPostprocessors]
[c]
type = LineValueSampler
variable = c
start_point = '0 0 0'
end_point = '5 0 0'
num_points = 21
sort_by = x
[]
[]
[Outputs]
csv = true
execute_on = FINAL
[]
(modules/porous_flow/test/tests/fluidstate/theis_brineco2.i)
# Two phase Theis problem: Flow from single source.
# Constant rate injection 2 kg/s
# 1D cylindrical mesh
# Initially, system has only a liquid phase, until enough gas is injected
# to form a gas phase, in which case the system becomes two phase.
#
# This test takes a few minutes to run, so is marked heavy
[Mesh]
type = GeneratedMesh
dim = 1
nx = 2000
xmax = 2000
[]
[Problem]
type = FEProblem
coord_type = RZ
rz_coord_axis = Y
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[AuxVariables]
[saturation_gas]
order = CONSTANT
family = MONOMIAL
[]
[x1]
order = CONSTANT
family = MONOMIAL
[]
[y0]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[saturation_gas]
type = PorousFlowPropertyAux
variable = saturation_gas
property = saturation
phase = 1
execute_on = timestep_end
[]
[x1]
type = PorousFlowPropertyAux
variable = x1
property = mass_fraction
phase = 0
fluid_component = 1
execute_on = timestep_end
[]
[y0]
type = PorousFlowPropertyAux
variable = y0
property = mass_fraction
phase = 1
fluid_component = 0
execute_on = timestep_end
[]
[]
[Variables]
[pgas]
initial_condition = 20e6
[]
[zi]
initial_condition = 0
[]
[xnacl]
initial_condition = 0.1
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pgas
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pgas
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = zi
[]
[flux1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = zi
[]
[mass2]
type = PorousFlowMassTimeDerivative
fluid_component = 2
variable = xnacl
[]
[flux2]
type = PorousFlowAdvectiveFlux
fluid_component = 2
variable = xnacl
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pgas zi xnacl'
number_fluid_phases = 2
number_fluid_components = 3
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[fs]
type = PorousFlowBrineCO2
brine_fp = brine
co2_fp = co2
capillary_pressure = pc
[]
[]
[FluidProperties]
[co2sw]
type = CO2FluidProperties
[]
[co2]
type = TabulatedFluidProperties
fp = co2sw
fluid_property_file = 'fluid_properties.csv'
allow_fp_and_tabulation = true
error_on_out_of_bounds = false
[]
[water]
type = Water97FluidProperties
[]
[watertab]
type = TabulatedFluidProperties
fp = water
temperature_min = 273.15
temperature_max = 573.15
fluid_property_output_file = water_fluid_properties.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = water_fluid_properties.csv
[]
[brine]
type = BrineFluidProperties
water_fp = watertab
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = 20
[]
[brineco2]
type = PorousFlowFluidState
gas_porepressure = pgas
z = zi
temperature_unit = Celsius
xnacl = xnacl
capillary_pressure = pc
fluid_state = fs
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1e-12 0 0 0 1e-12 0 0 0 1e-12'
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
s_res = 0.1
sum_s_res = 0.1
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 1
[]
[]
[BCs]
[rightwater]
type = DirichletBC
boundary = right
value = 20e6
variable = pgas
[]
[]
[DiracKernels]
[source]
type = PorousFlowSquarePulsePointSource
point = '0 0 0'
mass_flux = 2
variable = zi
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
growth_factor = 1.5
[]
[]
[VectorPostprocessors]
[line]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
start_point = '0 0 0'
end_point = '2000 0 0'
num_points = 10000
variable = 'pgas zi xnacl x1 saturation_gas'
execute_on = 'timestep_end'
[]
[]
[Postprocessors]
[pgas]
type = PointValue
point = '4 0 0'
variable = pgas
[]
[sgas]
type = PointValue
point = '4 0 0'
variable = saturation_gas
[]
[zi]
type = PointValue
point = '4 0 0'
variable = zi
[]
[massgas]
type = PorousFlowFluidMass
fluid_component = 1
[]
[x1]
type = PointValue
point = '4 0 0'
variable = x1
[]
[y0]
type = PointValue
point = '4 0 0'
variable = y0
[]
[xnacl]
type = PointValue
point = '4 0 0'
variable = xnacl
[]
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
[csvout]
type = CSV
execute_on = timestep_end
execute_vector_postprocessors_on = final
[]
[]
(modules/porous_flow/test/tests/sinks/injection_production_eg_outflowBC.i)
# phase = 0 is liquid phase
# phase = 1 is gas phase
# fluid_component = 0 is water
# fluid_component = 1 is CO2
# Constant rates of water and CO2 injection into the left boundary
# 1D mesh
# The PorousFlowOutflowBCs remove the correct water and CO2 from the right boundary
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[AuxVariables]
[saturation_gas]
order = CONSTANT
family = MONOMIAL
[]
[frac_water_in_liquid]
initial_condition = 1.0
[]
[frac_water_in_gas]
initial_condition = 0.0
[]
[water_kg_per_s]
[]
[co2_kg_per_s]
[]
[]
[AuxKernels]
[saturation_gas]
type = PorousFlowPropertyAux
variable = saturation_gas
property = saturation
phase = 1
execute_on = timestep_end
[]
[]
[Variables]
[pwater]
initial_condition = 20E6
[]
[pgas]
initial_condition = 21E6
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pwater
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = pgas
[]
[flux1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = pgas
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pgas pwater'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1E-6
m = 0.6
[]
[]
[FluidProperties]
[true_water]
type = Water97FluidProperties
[]
[tabulated_water]
type = TabulatedBicubicFluidProperties
fp = true_water
temperature_min = 275
pressure_max = 1E8
interpolated_properties = 'density viscosity enthalpy internal_energy'
fluid_property_output_file = water97_tabulated_11.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = water97_tabulated_11.csv
[]
[true_co2]
type = CO2FluidProperties
[]
[tabulated_co2]
type = TabulatedBicubicFluidProperties
fp = true_co2
temperature_min = 275
pressure_max = 1E8
interpolated_properties = 'density viscosity enthalpy internal_energy'
fluid_property_output_file = co2_tabulated_11.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = co2_tabulated_11.csv
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = 293.15
[]
[saturation_calculator]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = pgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'frac_water_in_liquid frac_water_in_gas'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = tabulated_water
phase = 0
[]
[co2]
type = PorousFlowSingleComponentFluid
fp = tabulated_co2
phase = 1
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1e-12 0 0 0 1e-12 0 0 0 1e-12'
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
s_res = 0.1
sum_s_res = 0.2
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityBC
nw_phase = true
lambda = 2
s_res = 0.1
sum_s_res = 0.2
phase = 1
[]
[]
[BCs]
[water_injection]
type = PorousFlowSink
boundary = left
variable = pwater # pwater is associated with the water mass balance (fluid_component = 0 in its Kernels)
flux_function = -1E-5 # negative means a source, rather than a sink
[]
[co2_injection]
type = PorousFlowSink
boundary = left
variable = pgas # pgas is associated with the CO2 mass balance (fluid_component = 1 in its Kernels)
flux_function = -2E-5 # negative means a source, rather than a sink
[]
[right_water_component0]
type = PorousFlowOutflowBC
boundary = right
variable = pwater
mass_fraction_component = 0
save_in = water_kg_per_s
[]
[right_co2_component1]
type = PorousFlowOutflowBC
boundary = right
variable = pgas
mass_fraction_component = 1
save_in = co2_kg_per_s
[]
[]
[Preconditioning]
active = 'basic'
[basic]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt'
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'
[]
[preferred]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu mumps'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
nl_abs_tol = 1E-10
nl_rel_tol = 1E-10
end_time = 1E5
[TimeStepper]
type = IterationAdaptiveDT
dt = 1E5
growth_factor = 1.1
[]
[]
[Postprocessors]
[water_kg_per_s]
type = NodalSum
boundary = right
variable = water_kg_per_s
[]
[co2_kg_per_s]
type = NodalSum
boundary = right
variable = co2_kg_per_s
[]
[]
[VectorPostprocessors]
[pps]
type = LineValueSampler
start_point = '0 0 0'
end_point = '20 0 0'
num_points = 20
sort_by = x
variable = 'pgas pwater saturation_gas'
[]
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(tutorials/darcy_thermo_mech/step08_postprocessors/problems/step8.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 3
xmax = 0.304 # Length of test chamber
ymax = 0.0257 # Test chamber radius
[]
coord_type = RZ
rz_coord_axis = X
uniform_refine = 2
[]
[Variables]
[pressure]
[]
[temperature]
initial_condition = 300 # Start at room temperature
[]
[]
[AuxVariables]
[velocity]
order = CONSTANT
family = MONOMIAL_VEC
[]
[]
[Kernels]
[darcy_pressure]
type = DarcyPressure
variable = pressure
[]
[heat_conduction]
type = ADHeatConduction
variable = temperature
[]
[heat_conduction_time_derivative]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[heat_convection]
type = DarcyAdvection
variable = temperature
pressure = pressure
[]
[]
[AuxKernels]
[velocity]
type = DarcyVelocity
variable = velocity
execute_on = timestep_end
pressure = pressure
[]
[]
[BCs]
[inlet]
type = DirichletBC
variable = pressure
boundary = left
value = 4000 # (Pa) From Figure 2 from paper. First data point for 1mm spheres.
[]
[outlet]
type = DirichletBC
variable = pressure
boundary = right
value = 0 # (Pa) Gives the correct pressure drop from Figure 2 for 1mm spheres
[]
[inlet_temperature]
type = FunctionDirichletBC
variable = temperature
boundary = left
function = 'if(t<0,350+50*t,350)'
[]
[outlet_temperature]
type = HeatConductionOutflow
variable = temperature
boundary = right
[]
[]
[Materials]
[column]
type = PackedColumn
radius = 1
temperature = temperature
porosity = '0.25952 + 0.7*y/0.0257'
[]
[]
[Postprocessors]
[average_temperature]
type = ElementAverageValue
variable = temperature
[]
[outlet_heat_flux]
type = ADSideDiffusiveFluxIntegral
variable = temperature
boundary = right
diffusivity = thermal_conductivity
[]
[]
[VectorPostprocessors]
[temperature_sample]
type = LineValueSampler
num_points = 500
start_point = '0.1 0 0'
end_point = '0.1 0.0257 0'
variable = temperature
sort_by = y
[]
[]
[Problem]
type = FEProblem
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
end_time = 100
dt = 0.25
start_time = -1
steady_state_tolerance = 1e-5
steady_state_detection = true
[TimeStepper]
type = FunctionDT
function = 'if(t<0,0.1,0.25)'
[]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/porous_flow/test/tests/numerical_diffusion/pffltvd.i)
# Using flux-limited TVD advection ala Kuzmin and Turek, employing PorousFlow Kernels and UserObjects, with superbee flux-limiter
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = tracer
[]
[flux0]
type = PorousFlowFluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = advective_flux_calculator_0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = porepressure
[]
[flux1]
type = PorousFlowFluxLimitedTVDAdvection
variable = porepressure
advective_flux_calculator = advective_flux_calculator_1
[]
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure tracer'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[advective_flux_calculator_0]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 0
[]
[advective_flux_calculator_1]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = tracer
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = the_simple_fluid
phase = 0
[]
[relperm]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(modules/optimization/test/tests/optimizationreporter/point_loads/forward.i)
# DO NOT CHANGE THIS TEST
# this test is documented as an example in forceInv_pointLoads.md
# if this test is changed, the figures will need to be updated.
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 1
ymax = 1.4
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[heat_conduction]
type = MatDiffusion
variable = temperature
diffusivity = thermal_conductivity
[]
[]
[DiracKernels]
[pt]
type = ReporterPointSource
variable = temperature
x_coord_name = 'point_source/x'
y_coord_name = 'point_source/y'
z_coord_name = 'point_source/z'
value_name = 'point_source/value'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temperature
boundary = left
value = 300
[]
[right]
type = DirichletBC
variable = temperature
boundary = right
value = 300
[]
[bottom]
type = DirichletBC
variable = temperature
boundary = bottom
value = 300
[]
[top]
type = DirichletBC
variable = temperature
boundary = top
value = 300
[]
[]
[Materials]
[steel]
type = GenericConstantMaterial
prop_names = thermal_conductivity
prop_values = 5
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-6
nl_rel_tol = 1e-8
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[VectorPostprocessors]
[point_source]
type = ConstantVectorPostprocessor
vector_names = 'x y z value'
value = '0.2 0.7 0.4;
0.2 0.56 1;
0 0 0;
-1000 120 500'
execute_on = LINEAR
[]
[vertical]
type = LineValueSampler
variable = 'temperature'
start_point = '0.5 0 0'
end_point = '0.5 1.4 0'
num_points = 21
sort_by = y
[]
[]
[Reporters]
[measure_data]
type = OptimizationData
objective_name = objective_value
variable = temperature
[]
[]
[Outputs]
console = false
file_base = 'forward'
[]
(modules/phase_field/examples/kim-kim-suzuki/kks_example_noflux.i)
#
# KKS simple example in the split form
#
[Mesh]
type = GeneratedMesh
dim = 2
nx = 150
ny = 15
nz = 0
xmin = -25
xmax = 25
ymin = -2.5
ymax = 2.5
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[AuxVariables]
[./Fglobal]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Variables]
# order parameter
[./eta]
order = FIRST
family = LAGRANGE
[../]
# solute concentration
[./c]
order = FIRST
family = LAGRANGE
[../]
# chemical potential
[./w]
order = FIRST
family = LAGRANGE
[../]
# Liquid phase solute concentration
[./cl]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
# Solid phase solute concentration
[./cs]
order = FIRST
family = LAGRANGE
initial_condition = 0.9
[../]
[]
[Functions]
[./ic_func_eta]
type = ParsedFunction
expression = '0.5*(1.0-tanh((x)/sqrt(2.0)))'
[../]
[./ic_func_c]
type = ParsedFunction
expression = '0.9*(0.5*(1.0-tanh(x/sqrt(2.0))))^3*(6*(0.5*(1.0-tanh(x/sqrt(2.0))))^2-15*(0.5*(1.0-tanh(x/sqrt(2.0))))+10)+0.1*(1-(0.5*(1.0-tanh(x/sqrt(2.0))))^3*(6*(0.5*(1.0-tanh(x/sqrt(2.0))))^2-15*(0.5*(1.0-tanh(x/sqrt(2.0))))+10))'
[../]
[]
[ICs]
[./eta]
variable = eta
type = FunctionIC
function = ic_func_eta
[../]
[./c]
variable = c
type = FunctionIC
function = ic_func_c
[../]
[]
[Materials]
# Free energy of the liquid
[./fl]
type = DerivativeParsedMaterial
property_name = fl
coupled_variables = 'cl'
expression = '(0.1-cl)^2'
[../]
# Free energy of the solid
[./fs]
type = DerivativeParsedMaterial
property_name = fs
coupled_variables = 'cs'
expression = '(0.9-cs)^2'
[../]
# h(eta)
[./h_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta
[../]
# g(eta)
[./g_eta]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta
[../]
# constant properties
[./constants]
type = GenericConstantMaterial
prop_names = 'M L eps_sq'
prop_values = '0.7 0.7 1.0 '
[../]
[]
[Kernels]
active = 'PhaseConc ChemPotSolute CHBulk ACBulkF ACBulkC ACInterface dcdt detadt ckernel'
# enforce c = (1-h(eta))*cl + h(eta)*cs
[./PhaseConc]
type = KKSPhaseConcentration
ca = cl
variable = cs
c = c
eta = eta
[../]
# enforce pointwise equality of chemical potentials
[./ChemPotSolute]
type = KKSPhaseChemicalPotential
variable = cl
cb = cs
fa_name = fl
fb_name = fs
[../]
#
# Cahn-Hilliard Equation
#
[./CHBulk]
type = KKSSplitCHCRes
variable = c
ca = cl
fa_name = fl
w = w
[../]
[./dcdt]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[./ckernel]
type = SplitCHWRes
mob_name = M
variable = w
[../]
#
# Allen-Cahn Equation
#
[./ACBulkF]
type = KKSACBulkF
variable = eta
fa_name = fl
fb_name = fs
w = 1.0
coupled_variables = 'cl cs'
[../]
[./ACBulkC]
type = KKSACBulkC
variable = eta
ca = cl
cb = cs
fa_name = fl
[../]
[./ACInterface]
type = ACInterface
variable = eta
kappa_name = eps_sq
[../]
[./detadt]
type = TimeDerivative
variable = eta
[../]
[]
[AuxKernels]
[./GlobalFreeEnergy]
variable = Fglobal
type = KKSGlobalFreeEnergy
fa_name = fl
fb_name = fs
w = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm ilu nonzero'
l_max_its = 100
nl_max_its = 100
num_steps = 50
dt = 0.1
[]
#
# Precondition using handcoded off-diagonal terms
#
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[VectorPostprocessors]
[./c]
type = LineValueSampler
start_point = '-25 0 0'
end_point = '25 0 0'
variable = c
num_points = 151
sort_by = id
execute_on = timestep_end
[../]
[./eta]
type = LineValueSampler
start_point = '-25 0 0'
end_point = '25 0 0'
variable = eta
num_points = 151
sort_by = id
execute_on = timestep_end
[../]
[]
[Outputs]
exodus = true
[./csv]
type = CSV
execute_on = final
[../]
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/wli01.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1000
ny = 1
xmin = -10000
xmax = 0
ymin = 0
ymax = 0.05
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = pressure
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureBW
Sn = 0.0
Ss = 1.0
C = 1.5
las = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
viscosity = 4
density0 = 10
thermal_expansion = 0
[]
[]
[Materials]
[massfrac]
type = PorousFlowMassFraction
[]
[temperature]
type = PorousFlowTemperature
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[relperm]
type = PorousFlowRelativePermeabilityBW
Sn = 0.0
Ss = 1.0
Kn = 0
Ks = 1
C = 1.5
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.25
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1 0 0 0 1 0 0 0 1'
[]
[]
[Variables]
[pressure]
initial_condition = -1E-4
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pressure
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pressure
gravity = '-0.1 0 0'
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[]
[BCs]
[base]
type = DirichletBC
boundary = 'left'
value = -1E-4
variable = pressure
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10000'
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = SWater
start_point = '-5000 0 0'
end_point = '0 0 0'
sort_by = x
num_points = 71
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 1000
dt = 1
[]
[Outputs]
file_base = wli01
sync_times = '100 500 1000'
[exodus]
type = Exodus
sync_only = true
[]
[along_line]
type = CSV
sync_only = true
[]
[]
(modules/porous_flow/test/tests/hysteresis/hys_sat_03.i)
# 1-phase hysteresis. Saturation calculation. Primary drying curve with low_extension_type = exponential
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0
xmax = 10
nx = 100
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = pp
[]
[]
[Variables]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = '1 - 2 * x'
[]
[]
[BCs]
[pp]
type = FunctionDirichletBC
variable = pp
function = '1 - 2 * x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = pp
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
[]
[saturation_calculator]
type = PorousFlow1PhaseHysP
alpha_d = 10.0
alpha_w = 10.0
n_d = 1.1
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 7.0
low_extension_type = exponential
porepressure = pp
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[saturation]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[saturation]
type = PorousFlowPropertyAux
variable = saturation
property = saturation
phase = 0
[]
[]
[VectorPostprocessors]
[sat]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0 0'
end_point = '9.5 0 0'
num_points = 10
sort_by = x
variable = 'saturation pp'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(modules/heat_transfer/test/tests/truss_heat_conduction/line.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 1
nx = 10
xmax = 0.5
xmin = -0.5
[]
[left_line]
type = SubdomainBoundingBoxGenerator
input = gmg
bottom_left = '-0.5 0 0'
top_right = '0 0 0'
block_id = 1
block_name = 'left_line'
location = INSIDE
[]
[right_line]
type = SubdomainBoundingBoxGenerator
input = left_line
bottom_left = '0 0 0'
top_right = '0.5 0 0'
block_id = 2
block_name = 'right_line'
location = INSIDE
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[time_derivative]
# type = HeatConductionTimeDerivative
type = TrussHeatConductionTimeDerivative
variable = temperature
area = area
[]
[heat_conduction]
# type = HeatConduction
type = TrussHeatConduction
variable = temperature
area = area
[]
[]
[AuxVariables]
[area]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[area]
type = ConstantAux
variable = area
value = 0.1
execute_on = 'initial timestep_begin'
[]
[]
[Materials]
[left_line]
type = GenericConstantMaterial
block = 'left_line'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '0.1 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[right_line]
type = GenericConstantMaterial
block = 'right_line'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '5.0e-3 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[]
[BCs]
[right]
type = FunctionDirichletBC
variable = temperature
boundary = 'right'
function = '10*t'
[]
[]
[VectorPostprocessors]
[center]
type = LineValueSampler
start_point = '-0.5 0 0'
end_point = '0.5 0 0'
num_points = 40
variable = 'temperature'
sort_by = id
[]
[]
[Executioner]
type = Transient
start_time = 0
dt = 1
end_time = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = 'csv/line'
time_data = true
[]
[]
(modules/geochemistry/test/tests/kinetics/bio_zoning_conc.i)
rate_Ca_diffuse = 6.66667E-9 # 2E-6 mol.m^-3.yr^-1 = 2E-9 mol.litre^-1.yr^-1 divided by porosity of 0.3
rate_CH3COO_diffuse = 13.3333E-9 # 4E-6 mol.m^-3.yr^-1 = 4E-9 mol.litre^-1.yr^-1 divided by porosity of 0.3
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
nx = 10
xmin = 0
xmax = 200000
[]
[]
[GlobalParams]
point = '100000 0 0'
reactor = reactor
[]
[SpatialReactionSolver]
model_definition = definition
geochemistry_reactor_name = reactor
swap_into_basis = 'Siderite'
swap_out_of_basis = 'Fe++'
prevent_precipitation = 'Pyrite Troilite'
charge_balance_species = "HCO3-"
constraint_species = "H2O Ca++ HCO3- SO4-- CH3COO- HS- CH4(aq) Siderite H+"
# ASSUME that 1 litre of solution initially contains:
constraint_value = " 1.0 1E-3 2E-3 0.04E-3 1E-9 1E-9 1E-9 1 -7.5"
constraint_meaning = "kg_solvent_water bulk_composition bulk_composition bulk_composition bulk_composition bulk_composition bulk_composition free_mineral log10activity"
constraint_unit = " kg moles moles moles moles moles moles cm3 dimensionless"
controlled_activity_name = 'H+'
controlled_activity_value = 3.16227E-8 # this is pH=7.5
kinetic_species_name = "sulfate_reducer methanogen"
kinetic_species_initial_value = '1E-6 1E-6'
kinetic_species_unit = 'mg mg'
source_species_names = "H2O Ca++ SO4-- CH3COO- HS- CH4(aq) Fe++"
source_species_rates = "rate_H2O_per_1l rate_Ca_per_1l_with_source rate_SO4_per_1l rate_CH3COO_per_1l_with_source rate_HS_per_1l rate_CH4_per_1l rate_Fe_per_1l"
ramp_max_ionic_strength_initial = 1
ramp_max_ionic_strength_subsequent = 1
execute_console_output_on = ''
solver_info = true
evaluate_kinetic_rates_always = true
adaptive_timestepping = true
abs_tol = 1E-14
precision = 16
[]
[UserObjects]
[rate_sulfate_reducer]
type = GeochemistryKineticRate
kinetic_species_name = "sulfate_reducer"
intrinsic_rate_constant = 31.536 # 1E-9 mol(acetate)/mg(biomass)/s = 31.536 mol(acetate)/g(biomass)/year
multiply_by_mass = true
promoting_species_names = 'CH3COO- SO4--'
promoting_indices = '1 1'
promoting_monod_indices = '1 1'
promoting_half_saturation = '70E-6 200E-6'
direction = dissolution
kinetic_biological_efficiency = 4.3E-3 # 4.3 g(biomass)/mol(acetate) = 4.3E-3 mol(biomass)/mol(acetate) (because sulfate_reducer has molar mass of 1E3 g/mol)
energy_captured = 45E3
theta = 0.2
eta = 1
[]
[death_sulfate_reducer]
type = GeochemistryKineticRate
kinetic_species_name = "sulfate_reducer"
intrinsic_rate_constant = 0.031536E-3 # 1E-9 g(biomass)/g(biomass)/s = 0.031536 g(biomass)/g(biomass)/year = 0.031536E-3 mol(biomass)/g(biomass)/year (because sulfate_reducer has molar mass of 1E3 g/mol)
multiply_by_mass = true
direction = death
eta = 0.0
[]
[rate_methanogen]
type = GeochemistryKineticRate
kinetic_species_name = "methanogen"
intrinsic_rate_constant = 63.072 # 2E-9 mol(acetate)/mg(biomass)/s = 63.072 mol(acetate)/g(biomass)/year
multiply_by_mass = true
promoting_species_names = 'CH3COO-'
promoting_indices = '1'
promoting_monod_indices = '1'
promoting_half_saturation = '20E-3'
direction = dissolution
kinetic_biological_efficiency = 2.0E-9 # 2 g(biomass)/mol(acetate) = 2E-9 mol(biomass)/mol(acetate) (because methanogen has molar mass of 1E9 g/mol)
energy_captured = 24E3
theta = 0.5
eta = 1
[]
[death_methanogen]
type = GeochemistryKineticRate
kinetic_species_name = "methanogen"
intrinsic_rate_constant = 0.031536E-9 # 1E-9 g(biomass)/g(biomass)/s = 0.031536 g(biomass)/g(biomass)/year = 0.031536E-9 mol(biomass)/g(biomass)/year (because methanogen has molar mass of 1E9 g/mol)
multiply_by_mass = true
direction = death
eta = 0.0
[]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O H+ CH3COO- CH4(aq) HS- Ca++ HCO3- SO4-- Fe++"
kinetic_minerals = "sulfate_reducer methanogen"
equilibrium_minerals = "*"
kinetic_rate_descriptions = "rate_sulfate_reducer death_sulfate_reducer rate_methanogen death_methanogen"
[]
[]
[Executioner]
type = Transient
[TimeStepper]
type = FunctionDT
function = 'min(0.1 * (t + 1), 100)'
[]
end_time = 20000
[]
[AuxVariables]
[rate_H2O_per_1l] # change in H2O per 1 litre of aqueous solution that we consider at each node
[]
[rate_CH3COO_per_1l] # change in CH3COO- per 1 litre of aqueous solution that we consider at each node
[]
[rate_CH4_per_1l] # change in CH4(aq) per 1 litre of aqueous solution that we consider at each node
[]
[rate_HS_per_1l] # change in HS- per 1 litre of aqueous solution that we consider at each node
[]
[rate_Ca_per_1l] # change in Ca++ per 1 litre of aqueous solution that we consider at each node
[]
[rate_SO4_per_1l] # change in SO4-- per 1 litre of aqueous solution that we consider at each node
[]
[rate_Fe_per_1l] # change in Fe++ per 1 litre of aqueous solution that we consider at each node
[]
[rate_CH3COO_per_1l_with_source] # change in CH3COO- per 1 litre of aqueous solution that we consider at each node, including the diffuse source
[]
[rate_Ca_per_1l_with_source] # change in Ca per 1 litre of aqueous solution that we consider at each node, including the diffuse source
[]
[transported_H2O]
[]
[transported_CH3COO]
[]
[transported_CH4]
[]
[transported_HS]
[]
[transported_Ca]
[]
[transported_SO4]
[]
[transported_Fe]
[]
[]
[AuxKernels]
[rate_CH3COO_per_1l_with_source]
type = ParsedAux
args = 'rate_CH3COO_per_1l'
variable = rate_CH3COO_per_1l_with_source
function = 'rate_CH3COO_per_1l + ${rate_CH3COO_diffuse}'
execute_on = 'timestep_begin timestep_end'
[]
[rate_Ca_per_1l_with_source]
type = ParsedAux
args = 'rate_Ca_per_1l'
variable = rate_Ca_per_1l_with_source
function = 'rate_Ca_per_1l + ${rate_Ca_diffuse}'
execute_on = 'timestep_begin timestep_end'
[]
[transported_H2O]
type = GeochemistryQuantityAux
variable = transported_H2O
species = H2O
quantity = transported_moles_in_original_basis
execute_on = 'timestep_end'
[]
[transported_CH3COO]
type = GeochemistryQuantityAux
variable = transported_CH3COO
species = "CH3COO-"
quantity = transported_moles_in_original_basis
execute_on = 'timestep_end'
[]
[transported_CH4]
type = GeochemistryQuantityAux
variable = transported_CH4
species = "CH4(aq)"
quantity = transported_moles_in_original_basis
execute_on = 'timestep_end'
[]
[transported_HS]
type = GeochemistryQuantityAux
variable = transported_HS
species = "HS-"
quantity = transported_moles_in_original_basis
execute_on = 'timestep_end'
[]
[transported_Ca]
type = GeochemistryQuantityAux
variable = transported_Ca
species = "Ca++"
quantity = transported_moles_in_original_basis
execute_on = 'timestep_end'
[]
[transported_SO4]
type = GeochemistryQuantityAux
variable = transported_SO4
species = "SO4--"
quantity = transported_moles_in_original_basis
execute_on = 'timestep_end'
[]
[transported_Fe]
type = GeochemistryQuantityAux
variable = transported_Fe
species = "Fe++"
quantity = transported_moles_in_original_basis
execute_on = 'timestep_end'
[]
[]
[Postprocessors]
[time]
type = TimePostprocessor
[]
[]
[VectorPostprocessors]
[data]
type = LineValueSampler
start_point = '0 0 0'
end_point = '200000 0 0'
num_points = 501 # NOTE
sort_by = x
variable = 'transported_CH4 transported_CH3COO transported_SO4 free_mg_sulfate_reducer free_mg_methanogen'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
time_step_interval = 10
execute_on = 'INITIAL TIMESTEP_END FINAL'
[]
[]
(modules/porous_flow/test/tests/hysteresis/hys_pc_2.i)
# Capillary-pressure calculation. Second-order drying curve
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0.1
xmax = 0.9
nx = 80
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = ''
[]
[]
[Variables]
[sat]
[]
[]
[ICs]
[sat]
type = FunctionIC
variable = sat
function = 'x'
[]
[]
[BCs]
[sat]
type = FunctionDirichletBC
variable = sat
function = 'x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = sat
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
initial_order = 2
previous_turning_points = '0.1 0.9'
[]
[pc_calculator]
type = PorousFlowHystereticInfo
alpha_d = 10.0
alpha_w = 7.0
n_d = 1.5
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 12.0
high_ratio = 0.9
low_extension_type = none
high_extension_type = none
sat_var = sat
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[pc]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[pc]
type = PorousFlowPropertyAux
variable = pc
property = hysteretic_info
[]
[]
[VectorPostprocessors]
[pc]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.1 0 0'
end_point = '0.9 0 0'
num_points = 8
sort_by = x
variable = 'sat pc'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(modules/porous_flow/examples/multiapp_fracture_flow/diffusion_multiapp/fracture_app.i)
# Temperature is transferred between the fracture and matrix apps
[Mesh]
[generate]
type = GeneratedMeshGenerator
dim = 1
nx = 100
xmin = 0
xmax = 50.0
[]
[]
[Variables]
[frac_T]
[]
[]
[ICs]
[frac_T]
type = FunctionIC
variable = frac_T
function = 'if(x<1E-6, 2, 0)' # delta function
[]
[]
[AuxVariables]
[transferred_matrix_T]
[]
[]
[Kernels]
[dot]
type = TimeDerivative
variable = frac_T
[]
[fracture_diffusion]
type = Diffusion
variable = frac_T
[]
[toMatrix]
type = PorousFlowHeatMassTransfer
variable = frac_T
v = transferred_matrix_T
transfer_coefficient = 0.004
[]
[]
[Preconditioning]
[entire_jacobian]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 100
end_time = 100
[]
[VectorPostprocessors]
[final_results]
type = LineValueSampler
start_point = '0 0 0'
end_point = '50 0 0'
num_points = 11
sort_by = x
variable = frac_T
outputs = final_csv
[]
[]
[Outputs]
print_linear_residuals = false
[final_csv]
type = CSV
sync_times = 100
sync_only = true
[]
[]
[MultiApps]
[matrix_app]
type = TransientMultiApp
input_files = matrix_app.i
execute_on = TIMESTEP_END
[]
[]
[Transfers]
[T_to_matrix]
type = MultiAppCopyTransfer
to_multi_app = matrix_app
source_variable = frac_T
variable = transferred_frac_T
[]
[T_from_matrix]
type = MultiAppCopyTransfer
from_multi_app = matrix_app
source_variable = matrix_T
variable = transferred_matrix_T
[]
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/rsc02.i)
# RSC test with low-res time and spatial resolution
[Mesh]
type = GeneratedMesh
dim = 2
nx = 200
ny = 1
xmin = 0
xmax = 10 # x is the depth variable, called zeta in RSC
ymin = 0
ymax = 0.05
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Functions]
[dts]
type = PiecewiseLinear
y = '3E-2 5E-1 8E-1'
x = '0 1 5'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pwater poil'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureRSC
oil_viscosity = 2E-3
scale_ratio = 2E3
shift = 10
[]
[]
[FluidProperties]
[water]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 10
thermal_expansion = 0
viscosity = 1e-3
[]
[oil]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 20
thermal_expansion = 0
viscosity = 2e-3
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = poil
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = water
phase = 0
compute_enthalpy = false
compute_internal_energy = false
[]
[oil]
type = PorousFlowSingleComponentFluid
fp = oil
phase = 1
compute_enthalpy = false
compute_internal_energy = false
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 0
[]
[relperm_oil]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 1
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.25
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-5 0 0 0 1E-5 0 0 0 1E-5'
[]
[]
[Variables]
[pwater]
[]
[poil]
[]
[]
[ICs]
[water_init]
type = ConstantIC
variable = pwater
value = 0
[]
[oil_init]
type = ConstantIC
variable = poil
value = 15
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pwater
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = poil
[]
[flux1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = poil
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[SOil]
family = MONOMIAL
order = CONSTANT
[]
[massfrac_ph0_sp0]
initial_condition = 1
[]
[massfrac_ph1_sp0]
initial_condition = 0
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[SOil]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 1
variable = SOil
[]
[]
[BCs]
# we are pumping water into a system that has virtually incompressible fluids, hence the pressures rise enormously. this adversely affects convergence because of almost-overflows and precision-loss problems. The fixed things help keep pressures low and so prevent these awful behaviours. the movement of the saturation front is the same regardless of the fixed things.
active = 'recharge fixedoil fixedwater'
[recharge]
type = PorousFlowSink
variable = pwater
boundary = 'left'
flux_function = -1.0
[]
[fixedwater]
type = DirichletBC
variable = pwater
boundary = 'right'
value = 0
[]
[fixedoil]
type = DirichletBC
variable = poil
boundary = 'right'
value = 15
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10000'
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = SWater
start_point = '0 0 0'
end_point = '7 0 0'
sort_by = x
num_points = 21
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 5
[TimeStepper]
type = FunctionDT
function = dts
[]
[]
[Outputs]
file_base = rsc02
[along_line]
type = CSV
execute_vector_postprocessors_on = final
[]
[exodus]
type = Exodus
execute_on = 'initial final'
[]
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp1_uo_transfer.i)
# SubApp with 2D model to test multi app vectorpostprocessor to aux var transfer
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.150080 0.0'
variable = 'axial_strain'
num_points = 21
sort_by = 'id'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(modules/porous_flow/examples/groundwater/ex01.i)
# Groundwater extraction example.
# System consists of two confined aquifers separated by an aquitard
# There is a hydraulic gradient in the upper aquifer
# A well extracts water from the lower aquifer, and the impact on the upper aquifer is observed
# In the center of the model, the roof of the upper aquifer sits 70m below the local water table
[Mesh]
[basic_mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = -50
xmax = 50
nx = 20
ymin = -25
ymax = 25
ny = 10
zmin = -100
zmax = -70
nz = 3
[]
[lower_aquifer]
type = SubdomainBoundingBoxGenerator
input = basic_mesh
block_id = 1
block_name = lower_aquifer
bottom_left = '-1000 -500 -100'
top_right = '1000 500 -90'
[]
[aquitard]
type = SubdomainBoundingBoxGenerator
input = lower_aquifer
block_id = 2
block_name = aquitard
bottom_left = '-1000 -500 -90'
top_right = '1000 500 -80'
[]
[upper_aquifer]
type = SubdomainBoundingBoxGenerator
input = aquitard
block_id = 3
block_name = upper_aquifer
bottom_left = '-1000 -500 -80'
top_right = '1000 500 -70'
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = insitu_pp
[]
[]
[BCs]
[pp]
type = FunctionDirichletBC
variable = pp
function = insitu_pp
boundary = 'left right top bottom front back'
[]
[]
[Functions]
[upper_aquifer_head]
type = ParsedFunction
expression = '10 + x / 200'
[]
[lower_aquifer_head]
type = ParsedFunction
expression = '20'
[]
[insitu_head]
type = ParsedFunction
symbol_values = 'lower_aquifer_head upper_aquifer_head'
symbol_names = 'low up'
expression = 'if(z <= -90, low, if(z >= -80, up, (up * (z + 90) - low * (z + 80)) / (10.0)))'
[]
[insitu_pp]
type = ParsedFunction
symbol_values = 'insitu_head'
symbol_names = 'h'
expression = '(h - z) * 1E4'
[]
[l_rate]
type = ParsedFunction
symbol_values = 'm3_produced dt'
symbol_names = 'm3_produced dt'
expression = '1000 * m3_produced / dt'
[]
[]
[AuxVariables]
[insitu_head]
[]
[head_change]
[]
[]
[AuxKernels]
[insitu_head]
type = FunctionAux
variable = insitu_head
function = insitu_head
[]
[head_change]
type = ParsedAux
coupled_variables = 'pp insitu_head'
use_xyzt = true
expression = 'pp / 1E4 + z - insitu_head'
variable = head_change
[]
[]
[Postprocessors]
[m3_produced]
type = PorousFlowPlotQuantity
uo = volume_extracted
outputs = 'none'
[]
[dt]
type = TimestepSize
outputs = 'none'
[]
[l_per_s]
type = FunctionValuePostprocessor
function = l_rate
[]
[]
[VectorPostprocessors]
[drawdown]
type = LineValueSampler
variable = head_change
start_point = '-50 0 -75'
end_point = '50 0 -75'
num_points = 101
sort_by = x
[]
[]
[PorousFlowBasicTHM]
fp = simple_fluid
gravity = '0 0 -10'
porepressure = pp
multiply_by_density = false
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
# the following mean that density = 1000 * exp(P / 1E15) ~ 1000
thermal_expansion = 0
bulk_modulus = 1E15
[]
[]
[Materials]
[porosity_aquifers]
type = PorousFlowPorosityConst
porosity = 0.05
block = 'upper_aquifer lower_aquifer'
[]
[porosity_aquitard]
type = PorousFlowPorosityConst
porosity = 0.2
block = aquitard
[]
[biot_mod]
type = PorousFlowConstantBiotModulus
fluid_bulk_modulus = 2E9
biot_coefficient = 1.0
[]
[permeability_aquifers]
type = PorousFlowPermeabilityConst
permeability = '1E-12 0 0 0 1E-12 0 0 0 1E-12'
block = 'upper_aquifer lower_aquifer'
[]
[permeability_aquitard]
type = PorousFlowPermeabilityConst
permeability = '1E-16 0 0 0 1E-16 0 0 0 1E-17'
block = aquitard
[]
[]
[DiracKernels]
[sink]
type = PorousFlowPolyLineSink
SumQuantityUO = volume_extracted
point_file = ex01.bh_lower
line_length = 10
variable = pp
# following produces a flux of 0 m^3(water)/m(borehole length)/s if porepressure = 0, and a flux of 1 m^3/m/s if porepressure = 1E9
p_or_t_vals = '0 1E9'
fluxes = '0 1'
[]
[]
[UserObjects]
[volume_extracted]
type = PorousFlowSumQuantity
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
[TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 1.1E5
[]
end_time = 3.456E5 # 4 days
nl_abs_tol = 1E-13
[]
[Outputs]
[csv]
type = CSV
file_base = ex01_lower_extraction
execute_on = final
[]
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/rd02.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 120
ny = 1
xmin = 0
xmax = 6
ymin = 0
ymax = 0.05
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Functions]
[dts]
type = PiecewiseLinear
y = '1E-2 1 10 500 5000 50000'
x = '0 10 100 1000 10000 500000'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = pressure
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.336
alpha = 1.43e-4
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e7
viscosity = 1.01e-3
density0 = 1000
thermal_expansion = 0
[]
[]
[Materials]
[massfrac]
type = PorousFlowMassFraction
[]
[temperature]
type = PorousFlowTemperature
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[relperm]
type = PorousFlowRelativePermeabilityVG
m = 0.336
seff_turnover = 0.99
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.33
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.295E-12 0 0 0 0.295E-12 0 0 0 0.295E-12'
[]
[]
[Variables]
[pressure]
initial_condition = 0.0
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pressure
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pressure
gravity = '-10 0 0'
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[]
[BCs]
[base]
type = DirichletBC
boundary = left
value = 0.0
variable = pressure
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10'
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = SWater
start_point = '0 0 0'
end_point = '6 0 0'
sort_by = x
num_points = 121
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 345600
[TimeStepper]
type = FunctionDT
function = dts
[]
[]
[Outputs]
file_base = rd02
[exodus]
type = Exodus
execute_on = 'initial final'
[]
[along_line]
type = CSV
execute_on = final
[]
[]
(modules/phase_field/examples/slkks/CrFe_sigma.i)
#
# SLKKS two phase example for the BCC and SIGMA phases. The sigma phase contains
# multiple sublattices. Free energy from
# Jacob, Aurelie, Erwin Povoden-Karadeniz, and Ernst Kozeschnik. "Revised thermodynamic
# description of the Fe-Cr system based on an improved sublattice model of the sigma phase."
# Calphad 60 (2018): 16-28.
#
# In this simulation we solve only for the sublattice concentrations of the sigma phase
# (and consequently for the free energy of the sigma phase as function of total concentration.)
# The Cr concentration is prescribed as a linear gradient. This permits us to plot
# the free energies of the BCC and sigma phases.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 1000
ny = 1
xmin = 0.01
xmax = 0.99
ymax = 0.1
[]
[]
[AuxVariables]
[cCr]
[InitialCondition]
type = FunctionIC
function = x
[]
[]
[Fb]
order = FIRST
family = MONOMIAL
[]
[Fs]
order = FIRST
family = MONOMIAL
[]
[dFs]
order = CONSTANT
family = MONOMIAL
[]
[dFs0]
order = CONSTANT
family = MONOMIAL
[]
[dFs1]
order = CONSTANT
family = MONOMIAL
[]
[dFs2]
order = CONSTANT
family = MONOMIAL
[]
[]
[Variables]
[SIGMA_0CR]
[InitialCondition]
type = FunctionIC
function = x
[]
[]
[SIGMA_1CR]
[InitialCondition]
type = FunctionIC
function = x
[]
[]
[SIGMA_2CR]
[InitialCondition]
type = FunctionIC
function = x
[]
[]
[]
[AuxKernels]
[Fb]
type = MaterialRealAux
variable = Fb
property = F_BCC_A2
[]
[Fs]
type = MaterialRealAux
variable = Fs
property = F_SIGMA
[]
[dFs0]
type = MaterialRealAux
variable = dFs0
property = dF_SIGMA/dSIGMA_0CR
[]
[dFs1]
type = MaterialRealAux
variable = dFs1
property = dF_SIGMA/dSIGMA_1CR
[]
[dFs2]
type = MaterialRealAux
variable = dFs1
property = dF_SIGMA/dSIGMA_2CR
[]
[dFs]
type = VariableGradientComponent
variable = dFs
gradient_variable = Fs
component = x
[]
[]
[Kernels]
[chempot2a2b]
# This kernel ties the first two sublattices in the sigma phase together
type = SLKKSChemicalPotential
variable = SIGMA_0CR
a = 10
cs = SIGMA_1CR
as = 4
F = F_SIGMA
coupled_variables = 'SIGMA_2CR'
[]
[chempot2b2c]
# This kernel ties the remaining two sublattices in the sigma phase together
type = SLKKSChemicalPotential
variable = SIGMA_1CR
a = 4
cs = SIGMA_2CR
as = 16
F = F_SIGMA
coupled_variables = 'SIGMA_0CR'
[]
[sum]
type = SLKKSSum
variable = SIGMA_2CR
a = 16
cs = 'SIGMA_0CR SIGMA_1CR'
as = '10 4'
sum = cCr
[]
[]
[Materials]
# CALPHAD free energy of the FeCr sigma phase
[F_SIGMA]
type = DerivativeParsedMaterial
property_name = F_SIGMA
expression = 'SIGMA_0FE := 1-SIGMA_0CR;
SIGMA_1FE := 1-SIGMA_1CR;
'
'SIGMA_2FE := 1-SIGMA_2CR; 8.3145*T*(10.0*if(SIGMA_0CR > '
'1.0e-15,SIGMA_0CR*log(SIGMA_0CR),0) + 10.0*if(SIGMA_0FE > '
'1.0e-15,SIGMA_0FE*log(SIGMA_0FE),0) + 4.0*if(SIGMA_1CR > '
'1.0e-15,SIGMA_1CR*log(SIGMA_1CR),0) + 4.0*if(SIGMA_1FE > '
'1.0e-15,SIGMA_1FE*log(SIGMA_1FE),0) + 16.0*if(SIGMA_2CR > '
'1.0e-15,SIGMA_2CR*log(SIGMA_2CR),0) + 16.0*if(SIGMA_2FE > '
'1.0e-15,SIGMA_2FE*log(SIGMA_2FE),0))/(10.0*SIGMA_0CR + 10.0*SIGMA_0FE + '
'4.0*SIGMA_1CR + 4.0*SIGMA_1FE + 16.0*SIGMA_2CR + 16.0*SIGMA_2FE) + '
'(SIGMA_0FE*SIGMA_1CR*SIGMA_2CR*SIGMA_2FE*(-70.0*T - 170400.0) + '
'SIGMA_0FE*SIGMA_1FE*SIGMA_2CR*SIGMA_2FE*(-10.0*T - 330839.0))/(10.0*SIGMA_0CR + '
'10.0*SIGMA_0FE + 4.0*SIGMA_1CR + 4.0*SIGMA_1FE + 16.0*SIGMA_2CR + 16.0*SIGMA_2FE) + '
'(SIGMA_0CR*SIGMA_1CR*SIGMA_2CR*(30.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - '
'26.908*T*log(T) + 157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= '
'2180.0 & T < 6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) '
'+ 132000.0) + SIGMA_0CR*SIGMA_1CR*SIGMA_2FE*(-110.0*T + 16.0*if(T >= 298.15 & T < '
'1811.0,77358.5*1/T - 23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - '
'5.89269e-8*T^3.0 + 1225.7,if(T >= 1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - '
'46.0*T*log(T) + 299.31255*T - 25383.581,0)) + 14.0*if(T >= 298.15 & T < '
'2180.0,139250.0*1/T - 26.908*T*log(T) + 157.48*T + 0.00189435*T^2.0 - '
'1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < 6000.0,-2.88526e+32*T^(-9.0) - '
'50.0*T*log(T) + 344.18*T - 34869.344,0)) + 123500.0) + '
'SIGMA_0CR*SIGMA_1FE*SIGMA_2CR*(4.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 26.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 140486.0) '
'+ SIGMA_0CR*SIGMA_1FE*SIGMA_2FE*(20.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 10.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 148800.0) '
'+ SIGMA_0FE*SIGMA_1CR*SIGMA_2CR*(10.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 20.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 56200.0) + '
'SIGMA_0FE*SIGMA_1CR*SIGMA_2FE*(26.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 4.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 152700.0) '
'+ SIGMA_0FE*SIGMA_1FE*SIGMA_2CR*(14.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 16.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 46200.0) + '
'SIGMA_0FE*SIGMA_1FE*SIGMA_2FE*(30.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 173333.0))/(10.0*SIGMA_0CR + 10.0*SIGMA_0FE + 4.0*SIGMA_1CR + '
'4.0*SIGMA_1FE + 16.0*SIGMA_2CR + 16.0*SIGMA_2FE)'
coupled_variables = 'SIGMA_0CR SIGMA_1CR SIGMA_2CR'
constant_names = 'T'
constant_expressions = '1000'
[]
# single sublattice BCC phase (no sublattice concentration solve necessary)
[F_BCC_A2]
type = DerivativeParsedMaterial
property_name = F_BCC_A2
expression = 'BCC_CR:=cCr; BCC_FE:=1-BCC_CR; 8.3145*T*(1.0*if(BCC_CR > '
'1.0e-15,BCC_CR*log(BCC_CR),0) + 1.0*if(BCC_FE > 1.0e-15,BCC_FE*log(BCC_FE),0) + '
'3.0*if(BCC_VA > 1.0e-15,BCC_VA*log(BCC_VA),0))/(BCC_CR + BCC_FE) + 8.3145*T*if(T < '
'548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - 932.5*BCC_CR*BCC_FE*BCC_VA + '
'311.5*BCC_CR*BCC_VA - '
'1043.0*BCC_FE*BCC_VA,-8.13674105561218e-49*T^15/(0.525599232981783*BCC_CR*BCC_FE*BCC_'
'VA*(BCC_CR - BCC_FE) - 0.894055608820709*BCC_CR*BCC_FE*BCC_VA + '
'0.298657718120805*BCC_CR*BCC_VA - BCC_FE*BCC_VA + 9.58772770853308e-13)^15 - '
'4.65558036243985e-30*T^9/(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^9 - '
'1.3485349181899e-10*T^3/(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^3 + 1 - '
'0.905299382744392*(548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'932.5*BCC_CR*BCC_FE*BCC_VA + 311.5*BCC_CR*BCC_VA - 1043.0*BCC_FE*BCC_VA + '
'1.0e-9)/T,if(T < -548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'932.5*BCC_CR*BCC_FE*BCC_VA - 311.5*BCC_CR*BCC_VA + '
'1043.0*BCC_FE*BCC_VA,-8.13674105561218e-49*T^15/(-0.525599232981783*BCC_CR*BCC_FE*BCC'
'_VA*(BCC_CR - BCC_FE) + 0.894055608820709*BCC_CR*BCC_FE*BCC_VA - '
'0.298657718120805*BCC_CR*BCC_VA + BCC_FE*BCC_VA + 9.58772770853308e-13)^15 - '
'4.65558036243985e-30*T^9/(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) '
'+ 0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^9 - '
'1.3485349181899e-10*T^3/(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^3 + 1 - '
'0.905299382744392*(-548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'932.5*BCC_CR*BCC_FE*BCC_VA - 311.5*BCC_CR*BCC_VA + 1043.0*BCC_FE*BCC_VA + '
'1.0e-9)/T,if(T > -548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'932.5*BCC_CR*BCC_FE*BCC_VA - 311.5*BCC_CR*BCC_VA + 1043.0*BCC_FE*BCC_VA & '
'548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - 932.5*BCC_CR*BCC_FE*BCC_VA + '
'311.5*BCC_CR*BCC_VA - 1043.0*BCC_FE*BCC_VA < '
'0,-79209031311018.7*(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^5/T^5 - '
'3.83095660520737e+42*(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^15/T^15 - '
'1.22565886734485e+72*(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^25/T^25,if(T > '
'548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - 932.5*BCC_CR*BCC_FE*BCC_VA + '
'311.5*BCC_CR*BCC_VA - 1043.0*BCC_FE*BCC_VA & 548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - '
'BCC_FE) - 932.5*BCC_CR*BCC_FE*BCC_VA + 311.5*BCC_CR*BCC_VA - 1043.0*BCC_FE*BCC_VA > '
'0,-79209031311018.7*(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^5/T^5 - '
'3.83095660520737e+42*(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^15/T^15 - '
'1.22565886734485e+72*(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^25/T^25,0))))*log((2.15*BCC_CR*BCC_FE*BCC_VA - '
'0.008*BCC_CR*BCC_VA + 2.22*BCC_FE*BCC_VA)*if(2.15*BCC_CR*BCC_FE*BCC_VA - '
'0.008*BCC_CR*BCC_VA + 2.22*BCC_FE*BCC_VA <= 0,-1.0,1.0) + 1)/(BCC_CR + BCC_FE) + '
'1.0*(BCC_CR*BCC_VA*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + '
'BCC_FE*BCC_VA*if(T >= 298.15 & T < 1811.0,77358.5*1/T - 23.5143*T*log(T) + 124.134*T '
'- 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= 1811.0 & T < '
'6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - 25383.581,0)))/(BCC_CR '
'+ BCC_FE) + 1.0*(BCC_CR*BCC_FE*BCC_VA*(500.0 - 1.5*T)*(BCC_CR - BCC_FE) + '
'BCC_CR*BCC_FE*BCC_VA*(24600.0 - 14.98*T) + BCC_CR*BCC_FE*BCC_VA*(9.15*T - '
'14000.0)*(BCC_CR - BCC_FE)^2)/(BCC_CR + BCC_FE)'
coupled_variables = 'cCr'
constant_names = 'BCC_VA T'
constant_expressions = '1 1000'
[]
[]
[VectorPostprocessors]
[var]
type = LineValueSampler
variable = 'SIGMA_0CR SIGMA_1CR SIGMA_2CR cCr Fb Fs dFs dFs0 dFs1 dFs2'
start_point = '0.01 0 0'
end_point = '0.99 0 0'
sort_by = x
num_points = 1000
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
csv = true
[]
(modules/porous_flow/test/tests/heat_advection/heat_advection_1d_KT.i)
# 1phase, heat advecting with a moving fluid
# Using the Kuzmin-Turek stabilization scheme
[Mesh]
type = GeneratedMesh
dim = 1
nx = 50
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[temp]
initial_condition = 200
[]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = '1-x'
[]
[]
[BCs]
[pp0]
type = DirichletBC
variable = pp
boundary = left
value = 1
[]
[pp1]
type = DirichletBC
variable = pp
boundary = right
value = 0
[]
[spit_heat]
type = DirichletBC
variable = temp
boundary = left
value = 300
[]
[suck_heat]
type = DirichletBC
variable = temp
boundary = right
value = 200
[]
[]
[Kernels]
[mass_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[fluid_advection]
type = PorousFlowFluxLimitedTVDAdvection
variable = pp
advective_flux_calculator = fluid_advective_flux
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[heat_advection]
type = PorousFlowFluxLimitedTVDAdvection
variable = temp
advective_flux_calculator = heat_advective_flux
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pp'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.6
alpha = 1.3
[]
[fluid_advective_flux]
type = PorousFlowAdvectiveFluxCalculatorSaturated
flux_limiter_type = superbee
[]
[heat_advective_flux]
type = PorousFlowAdvectiveFluxCalculatorSaturatedHeat
flux_limiter_type = superbee
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 100
density0 = 1000
viscosity = 4.4
thermal_expansion = 0
cv = 2
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.0
density = 125
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 2 0 0 0 3'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
[]
[massfrac]
type = PorousFlowMassFraction
[]
[PS]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres bjacobi 1E-15 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 0.01
end_time = 0.6
[]
[VectorPostprocessors]
[T]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 51
sort_by = x
variable = temp
[]
[]
[Outputs]
file_base = heat_advection_1d_KT
[csv]
type = CSV
sync_times = '0.1 0.6'
sync_only = true
[]
[]
(modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_1D_adaptivity.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek, with antidiffusion from superbee flux limiting
# 1D version with mesh adaptivity
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 1
[]
[Adaptivity]
initial_steps = 1
initial_marker = tracer_marker
marker = tracer_marker
max_h_level = 1
[Markers]
[tracer_marker]
type = ValueRangeMarker
variable = tracer
lower_bound = 0.02
upper_bound = 0.98
[]
[]
[]
[Variables]
[tracer]
[]
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
[]
[flux]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo
[]
[]
[UserObjects]
[fluo]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = superbee
u = tracer
velocity = '0.1 0 0'
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
nl_max_its = 500
timestep_tolerance = 1E-3
[]
[Outputs]
print_linear_residuals = false
[out]
type = CSV
execute_on = final
[]
[]
(modules/geochemistry/test/tests/spatial_reactor/spatial_6.i)
# demonstrating that temperature may be spatially-dependent
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O H+ Cl-"
[]
[]
[SpatialReactionSolver]
model_definition = definition
charge_balance_species = "Cl-"
constraint_species = "H2O H+ Cl-"
constraint_value = " 55.5 1E-5 1E-5"
constraint_meaning = "bulk_composition bulk_composition bulk_composition"
constraint_unit = "moles moles moles"
temperature = temp_controller
[]
[VectorPostprocessors]
[temperature]
type = LineValueSampler
start_point = '0 0 0'
end_point = '10 0 0'
sort_by = x
num_points = 11
variable = 'solution_temperature'
[]
[]
[AuxVariables]
[temp_controller]
[]
[]
[AuxKernels]
[temp_controller]
type = FunctionAux
variable = temp_controller
function = '25 + x'
execute_on = timestep_begin # so the Reactor gets the correct value
[]
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmax = 10
[]
[Executioner]
type = Transient
dt = 1
end_time = 2
[]
[Outputs]
csv = true
[]
(modules/porous_flow/test/tests/hysteresis/hys_pc_02.i)
# Capillary-pressure calculation. Primary drying curve with low_extension_type = quadratic
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0
xmax = 1
nx = 100
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = ''
[]
[]
[Variables]
[sat]
[]
[]
[ICs]
[sat]
type = FunctionIC
variable = sat
function = 'x'
[]
[]
[BCs]
[sat]
type = FunctionDirichletBC
variable = sat
function = 'x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = sat
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
[]
[pc_calculator]
type = PorousFlowHystereticInfo
alpha_d = 10.0
alpha_w = 10.0
n_d = 1.5
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 12.0
low_extension_type = quadratic
sat_var = sat
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[pc]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[pc]
type = PorousFlowPropertyAux
variable = pc
property = hysteretic_info
[]
[]
[VectorPostprocessors]
[pc]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 10
sort_by = x
variable = 'sat pc'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(modules/stochastic_tools/test/tests/surrogates/multioutput_gp/sub.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmax = 0.5
elem_type = EDGE3
[]
[Variables]
[T]
order = SECOND
family = LAGRANGE
[]
[]
[Kernels]
[diffusion]
type = MatDiffusion
variable = T
diffusivity = k
[]
[source]
type = BodyForce
variable = T
value = 10000
[]
[]
[Materials]
[conductivity]
type = GenericConstantMaterial
prop_names = k
prop_values = 20
[]
[]
[BCs]
[right]
type = DirichletBC
variable = T
boundary = right
value = 500
[]
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[VectorPostprocessors]
[T_vec]
type = LineValueSampler
variable = T
start_point = '0.05 0 0'
end_point = '0.12 0 0'
num_points = 2
sort_by = x
[]
[]
(modules/porous_flow/test/tests/capillary_pressure/brooks_corey2.i)
# Test Brooks-Corey capillary pressure curve by varying saturation over the mesh
# lambda = 2, sat_lr = 0.1, log_extension = true
[Mesh]
type = GeneratedMesh
dim = 1
nx = 500
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[p0aux]
family = MONOMIAL
order = CONSTANT
[]
[p1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[p0]
type = PorousFlowPropertyAux
property = pressure
phase = 0
variable = p0aux
[]
[p1]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = p1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureBC
lambda = 2
log_extension = true
pe = 1e5
sat_lr = 0.1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityVG
phase = 0
m = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
phase = 1
n = 2
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
variable = 's0aux s1aux p0aux p1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 500
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-6
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/heat_transfer/test/tests/semiconductor_linear_conductivity/steinhart-hart_linear.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmax = 1.0
ymax = 1.0
[]
[Variables]
[./T]
initial_condition = 400.0 # unit in Kelvin only!!
[../]
[]
[AuxVariables]
[./elec_conduct]
order = FIRST
family = MONOMIAL
[../]
[]
[Kernels]
[./diff]
type = HeatConduction
variable = T
[../]
[]
[AuxKernels]
[./elec_conduct]
type = MaterialRealAux
variable = elec_conduct
property = electrical_conductivity
execute_on = timestep_end
[../]
[]
[BCs]
[./inlet]
type = DirichletBC
variable = T
boundary = left
value = 1000 # K
[../]
[./outlet]
type = DirichletBC
variable = T
boundary = right
value = 400 # K
[../]
[]
[Materials]
[./k]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '10' # in W/mK
[../]
[./sigma]
type = SemiconductorLinearConductivity
temp = T
sh_coeff_A = 0.002
sh_coeff_B = 0.001
[../]
[]
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 'T elec_conduct'
start_point = '0 0. 0'
end_point = '1.0 0. 0'
num_points = 11
sort_by = id
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
nl_rel_tol = 1e-12
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
execute_on = 'initial timestep_end'
[]
(modules/porous_flow/test/tests/heat_advection/heat_advection_1d_fully_saturated_action.i)
# 1phase, heat advecting with a moving fluid
# Using the PorousFlowFullySaturated Action with various stabilization options
# With stabilization=none, this should produce an identical result to heat_advection_1d_fully_saturated.i
# With stabilization=Full, this should produce an identical result to heat_advection_1d.i and heat_advection_1d_fullsat.i
# With stabilization=KT, this should produce an identical result to heat_advection_1D_KT.i
[Mesh]
type = GeneratedMesh
dim = 1
nx = 50
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[temp]
initial_condition = 200
[]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = '1-x'
[]
[]
[BCs]
[pp0]
type = DirichletBC
variable = pp
boundary = left
value = 1
[]
[pp1]
type = DirichletBC
variable = pp
boundary = right
value = 0
[]
[spit_heat]
type = DirichletBC
variable = temp
boundary = left
value = 300
[]
[suck_heat]
type = DirichletBC
variable = temp
boundary = right
value = 200
[]
[]
[PorousFlowFullySaturated]
porepressure = pp
temperature = temp
coupling_type = ThermoHydro
fp = simple_fluid
add_darcy_aux = false
stabilization = none
flux_limiter_type = superbee
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 100
density0 = 1000
viscosity = 4.4
thermal_expansion = 0
cv = 2
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[zero_thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 0 0 0 0 0'
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.0
density = 125
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 2 0 0 0 3'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 0.01
end_time = 0.6
[]
[VectorPostprocessors]
[T]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 51
sort_by = x
variable = temp
[]
[]
[Outputs]
file_base = heat_advection_1d_fully_saturation_action
[csv]
type = CSV
sync_times = '0.1 0.6'
sync_only = true
[]
[]
(modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_02_apply_stress.i)
# Beam bending.
# One end is clamped and the other end is subjected to a stress
# and micromechanical moment that will induce bending.
# The stress that will induce bending around the y axis is
# stress_xx = EAz
# This implies a micromechanical moment-stress of
# m_yx = (1/12)EAh^2 for joint_shear_stiffness=0.
# For joint_shear_stiffness!=0, the micromechanical moment-stress
# is
# m_yx = (1/12)EAa^2 G/(ak_s + G)
# All other stresses and moment stresses are assumed to be zero.
# With joint_shear_stiffness=0, and introducing D=-poisson*A, the
# nonzero strains are
# ep_xx = Az
# ep_yy = Dz
# ep_zz = Dz
# kappa_xy = -D
# kappa_yx = A
# This means the displacements are:
# u_x = Axz
# u_y = Dzy
# u_z = -(A/2)x^2 + (D/2)(z^2-y^2)
# wc_x = -Dy
# wc_y = Ax
# wc_z = 0
# This is bending of a bar around the y axis, in plane stress
# (stress_yy=0). Displacements at the left-hand (x=0) are applied
# according to the above formulae; wc_x and wc_y are applied throughout
# the bar; and stress_xx is applied at the right-hand end (x=10).
# The displacements are measured and
# compared with the above formulae.
# The test uses: E=1.2, poisson=0.3, A=1.11E-2, h=2, ks=0.1, so
# stress_xx = 1.332E-2*z
# m_yx = 0.2379E-2
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 10
xmin = 0
xmax = 10
ymin = -1
ymax = 1
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
#use_displaced_mesh = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./clamp_z]
type = FunctionDirichletBC
variable = disp_z
boundary = left
function = '-0.3*(z*z-y*y)/2.0*1.11E-2'
[../]
[./clamp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = left
function = '-0.3*z*y*1.11E-2'
[../]
[./clamp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./end_stress]
type = FunctionNeumannBC
boundary = right
function = z*1.2*1.11E-2
variable = disp_x
[../]
[./fix_wc_x]
type = FunctionDirichletBC
variable = wc_x
boundary = 'left' # right top bottom front back'
function = '0.3*y*1.11E-2'
[../]
[./fix_wc_y]
type = FunctionDirichletBC
variable = wc_y
boundary = 'left' # right top bottom front back'
function = '1.11E-2*x'
[../]
[./end_moment]
type = VectorNeumannBC
boundary = right
variable = wc_y
vector_value = '2.3785714286E-3 0 0'
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
[../]
[./strain_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xz
index_i = 0
index_j = 2
[../]
[./strain_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yx
index_i = 1
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yz
index_i = 1
index_j = 2
[../]
[./strain_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zx
index_i = 2
index_j = 0
[../]
[./strain_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zy
index_i = 2
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_y disp_z stress_xx stress_xy stress_xz stress_yx stress_yy stress_yz stress_zx stress_zy stress_zz wc_x wc_y wc_z couple_stress_xx couple_stress_xy couple_stress_xz couple_stress_yx couple_stress_yy couple_stress_yz couple_stress_zx couple_stress_zy couple_stress_zz'
start_point = '0 0 0.5'
end_point = '10 0 0.5'
num_points = 11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.2
poisson = 0.3
layer_thickness = 2.0
joint_normal_stiffness = 1E16
joint_shear_stiffness = 0.1
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol -ksp_max_it -sub_pc_factor_shift_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'gmres asm lu 1E-11 1E-11 10 1E-15 1E-10 100 NONZERO 2 100'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = beam_cosserat_02_apply_stress
exodus = true
csv = true
[]
(modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_2D.i)
# Using flux-limited TVD advection ala Kuzmin and Turek, employing PorousFlow Kernels and UserObjects, with superbee flux-limiter
# 3D version
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
xmin = 0
xmax = 1
ny = 4
ymin = 0
ymax = 0.5
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = tracer
[]
[flux0]
type = PorousFlowFluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = advective_flux_calculator_0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = porepressure
[]
[flux1]
type = PorousFlowFluxLimitedTVDAdvection
variable = porepressure
advective_flux_calculator = advective_flux_calculator_1
[]
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure tracer'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[advective_flux_calculator_0]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 0
[]
[advective_flux_calculator_1]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = tracer
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = the_simple_fluid
phase = 0
[]
[relperm]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(modules/level_set/test/tests/kernels/advection/advection_mms.i)
[Mesh]
type = GeneratedMesh
dim = 1
xmin = 0
xmax = 12
nx = 48
[]
[Adaptivity]
steps = 5
marker = marker
[./Markers]
[./marker]
type = UniformMarker
mark = REFINE
[../]
[../]
[]
[Variables]
[./phi]
[../]
[]
[AuxVariables]
[./velocity]
family = LAGRANGE_VEC
[../]
[]
[ICs]
[./vel_ic]
type = VectorFunctionIC
variable = velocity
function = velocity_func
[]
[]
[BCs]
[./left]
type = FunctionDirichletBC
boundary = 'left'
function = phi_exact
variable = phi
[../]
[]
[Functions]
[./phi_exact]
type = ParsedFunction
expression = 'a*sin(pi*x/b)*cos(pi*x)'
symbol_names = 'a b'
symbol_values = '2 12'
[../]
[./phi_mms]
type = ParsedFunction
expression = '-2*pi*a*sin(pi*x)*sin(pi*x/b) + 2*pi*a*cos(pi*x)*cos(pi*x/b)/b'
symbol_names = 'a b'
symbol_values = '2 12'
[../]
[./velocity_func]
type = ParsedVectorFunction
expression_x = '2'
expression_y = '2'
[../]
[]
[Kernels]
[./phi_advection]
type = LevelSetAdvection
variable = phi
velocity = velocity
[../]
[./phi_forcing]
type = BodyForce
variable = phi
function = phi_mms
[../]
[]
[Postprocessors]
[./error]
type = ElementL2Error
function = phi_exact
variable = phi
[../]
[./h]
type = AverageElementSize
[../]
[]
[VectorPostprocessors]
active = ''
[./results]
type = LineValueSampler
variable = phi
start_point = '0 0 0'
end_point = '12 0 0'
num_points = 500
sort_by = x
[../]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-10
solve_type = NEWTON
# A steady-state pure advection problem is numerically challenging,
# it has a zero diagonal in the Jabocian matrix. The following solver
# settings seem to reliably solve this problem.
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
[]
[Outputs]
execute_on = 'TIMESTEP_END'
csv = true
[]
(modules/phase_field/examples/slkks/CrFe.i)
#
# SLKKS two phase example for the BCC and SIGMA phases. The sigma phase contains
# multiple sublattices. Free energy from
# Jacob, Aurelie, Erwin Povoden-Karadeniz, and Ernst Kozeschnik. "Revised thermodynamic
# description of the Fe-Cr system based on an improved sublattice model of the sigma phase."
# Calphad 60 (2018): 16-28.
#
# In this simulation we consider diffusion (Cahn-Hilliard) and phase transformation.
#
# This example requires CrFe_sigma_out_var_0001.csv file, which generated by first
# running the CrFe_sigma.i input file.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 160
ny = 1
nz = 0
xmin = -25
xmax = 25
ymin = -2.5
ymax = 2.5
elem_type = QUAD4
[]
[]
[AuxVariables]
[Fglobal]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[sigma_cr0]
type = PiecewiseLinear
data_file = CrFe_sigma_out_var_0001.csv
format = columns
x_index_in_file = 5
y_index_in_file = 2
xy_in_file_only = false
[]
[sigma_cr1]
type = PiecewiseLinear
data_file = CrFe_sigma_out_var_0001.csv
format = columns
x_index_in_file = 5
y_index_in_file = 3
xy_in_file_only = false
[]
[sigma_cr2]
type = PiecewiseLinear
data_file = CrFe_sigma_out_var_0001.csv
format = columns
x_index_in_file = 5
y_index_in_file = 4
xy_in_file_only = false
[]
[]
[Variables]
# order parameters
[eta1]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
[eta2]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
# solute concentration
[cCr]
order = FIRST
family = LAGRANGE
[InitialCondition]
type = FunctionIC
function = '(x+25)/50*0.5+0.1'
[]
[]
# sublattice concentrations
[BCC_CR]
initial_condition = 0.45
[]
[SIGMA_0CR]
[InitialCondition]
type = CoupledValueFunctionIC
function = sigma_cr0
v = cCr
variable = SIGMA_0CR
[]
[]
[SIGMA_1CR]
[InitialCondition]
type = CoupledValueFunctionIC
function = sigma_cr1
v = cCr
variable = SIGMA_1CR
[]
[]
[SIGMA_2CR]
[InitialCondition]
type = CoupledValueFunctionIC
function = sigma_cr2
v = cCr
variable = SIGMA_2CR
[]
[]
# Lagrange multiplier
[lambda]
[]
[]
[Materials]
# CALPHAD free energies
[F_BCC_A2]
type = DerivativeParsedMaterial
property_name = F_BCC_A2
outputs = exodus
output_properties = F_BCC_A2
expression = 'BCC_FE:=1-BCC_CR; G := 8.3145*T*(1.0*if(BCC_CR > 1.0e-15,BCC_CR*log(BCC_CR),0) + '
'1.0*if(BCC_FE > 1.0e-15,BCC_FE*plog(BCC_FE,eps),0) + 3.0*if(BCC_VA > '
'1.0e-15,BCC_VA*log(BCC_VA),0))/(BCC_CR + BCC_FE) + 8.3145*T*if(T < '
'548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - 932.5*BCC_CR*BCC_FE*BCC_VA + '
'311.5*BCC_CR*BCC_VA - '
'1043.0*BCC_FE*BCC_VA,-8.13674105561218e-49*T^15/(0.525599232981783*BCC_CR*BCC_FE*BCC_'
'VA*(BCC_CR - BCC_FE) - 0.894055608820709*BCC_CR*BCC_FE*BCC_VA + '
'0.298657718120805*BCC_CR*BCC_VA - BCC_FE*BCC_VA + 9.58772770853308e-13)^15 - '
'4.65558036243985e-30*T^9/(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^9 - '
'1.3485349181899e-10*T^3/(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^3 + 1 - '
'0.905299382744392*(548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'932.5*BCC_CR*BCC_FE*BCC_VA + 311.5*BCC_CR*BCC_VA - 1043.0*BCC_FE*BCC_VA + '
'1.0e-9)/T,if(T < -548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'932.5*BCC_CR*BCC_FE*BCC_VA - 311.5*BCC_CR*BCC_VA + '
'1043.0*BCC_FE*BCC_VA,-8.13674105561218e-49*T^15/(-0.525599232981783*BCC_CR*BCC_FE*BCC'
'_VA*(BCC_CR - BCC_FE) + 0.894055608820709*BCC_CR*BCC_FE*BCC_VA - '
'0.298657718120805*BCC_CR*BCC_VA + BCC_FE*BCC_VA + 9.58772770853308e-13)^15 - '
'4.65558036243985e-30*T^9/(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) '
'+ 0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^9 - '
'1.3485349181899e-10*T^3/(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^3 + 1 - '
'0.905299382744392*(-548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'932.5*BCC_CR*BCC_FE*BCC_VA - 311.5*BCC_CR*BCC_VA + 1043.0*BCC_FE*BCC_VA + '
'1.0e-9)/T,if(T > -548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'932.5*BCC_CR*BCC_FE*BCC_VA - 311.5*BCC_CR*BCC_VA + 1043.0*BCC_FE*BCC_VA & '
'548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - 932.5*BCC_CR*BCC_FE*BCC_VA + '
'311.5*BCC_CR*BCC_VA - 1043.0*BCC_FE*BCC_VA < '
'0,-79209031311018.7*(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^5/T^5 - '
'3.83095660520737e+42*(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^15/T^15 - '
'1.22565886734485e+72*(-0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) + '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA - 0.298657718120805*BCC_CR*BCC_VA + '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^25/T^25,if(T > '
'548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - 932.5*BCC_CR*BCC_FE*BCC_VA + '
'311.5*BCC_CR*BCC_VA - 1043.0*BCC_FE*BCC_VA & 548.2*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - '
'BCC_FE) - 932.5*BCC_CR*BCC_FE*BCC_VA + 311.5*BCC_CR*BCC_VA - 1043.0*BCC_FE*BCC_VA > '
'0,-79209031311018.7*(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^5/T^5 - '
'3.83095660520737e+42*(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^15/T^15 - '
'1.22565886734485e+72*(0.525599232981783*BCC_CR*BCC_FE*BCC_VA*(BCC_CR - BCC_FE) - '
'0.894055608820709*BCC_CR*BCC_FE*BCC_VA + 0.298657718120805*BCC_CR*BCC_VA - '
'BCC_FE*BCC_VA + 9.58772770853308e-13)^25/T^25,0))))*log((2.15*BCC_CR*BCC_FE*BCC_VA - '
'0.008*BCC_CR*BCC_VA + 2.22*BCC_FE*BCC_VA)*if(2.15*BCC_CR*BCC_FE*BCC_VA - '
'0.008*BCC_CR*BCC_VA + 2.22*BCC_FE*BCC_VA <= 0,-1.0,1.0) + 1)/(BCC_CR + BCC_FE) + '
'1.0*(BCC_CR*BCC_VA*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + '
'BCC_FE*BCC_VA*if(T >= 298.15 & T < 1811.0,77358.5*1/T - 23.5143*T*log(T) + 124.134*T '
'- 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= 1811.0 & T < '
'6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - 25383.581,0)))/(BCC_CR '
'+ BCC_FE) + 1.0*(BCC_CR*BCC_FE*BCC_VA*(500.0 - 1.5*T)*(BCC_CR - BCC_FE) + '
'BCC_CR*BCC_FE*BCC_VA*(24600.0 - 14.98*T) + BCC_CR*BCC_FE*BCC_VA*(9.15*T - '
'14000.0)*(BCC_CR - BCC_FE)^2)/(BCC_CR + BCC_FE); G/100000'
coupled_variables = 'BCC_CR'
constant_names = 'BCC_VA T eps'
constant_expressions = '1 1000 0.01'
[]
[F_SIGMA]
type = DerivativeParsedMaterial
property_name = F_SIGMA
outputs = exodus
output_properties = F_SIGMA
expression = 'SIGMA_0FE := 1-SIGMA_0CR; SIGMA_1FE := 1-SIGMA_1CR; SIGMA_2FE := 1-SIGMA_2CR; G := '
'8.3145*T*(10.0*if(SIGMA_0CR > 1.0e-15,SIGMA_0CR*plog(SIGMA_0CR,eps),0) + '
'10.0*if(SIGMA_0FE > 1.0e-15,SIGMA_0FE*plog(SIGMA_0FE,eps),0) + 4.0*if(SIGMA_1CR > '
'1.0e-15,SIGMA_1CR*plog(SIGMA_1CR,eps),0) + 4.0*if(SIGMA_1FE > '
'1.0e-15,SIGMA_1FE*plog(SIGMA_1FE,eps),0) + 16.0*if(SIGMA_2CR > '
'1.0e-15,SIGMA_2CR*plog(SIGMA_2CR,eps),0) + 16.0*if(SIGMA_2FE > '
'1.0e-15,SIGMA_2FE*plog(SIGMA_2FE,eps),0))/(10.0*SIGMA_0CR + 10.0*SIGMA_0FE + '
'4.0*SIGMA_1CR + 4.0*SIGMA_1FE + 16.0*SIGMA_2CR + 16.0*SIGMA_2FE) + '
'(SIGMA_0FE*SIGMA_1CR*SIGMA_2CR*SIGMA_2FE*(-70.0*T - 170400.0) + '
'SIGMA_0FE*SIGMA_1FE*SIGMA_2CR*SIGMA_2FE*(-10.0*T - 330839.0))/(10.0*SIGMA_0CR + '
'10.0*SIGMA_0FE + 4.0*SIGMA_1CR + 4.0*SIGMA_1FE + 16.0*SIGMA_2CR + 16.0*SIGMA_2FE) + '
'(SIGMA_0CR*SIGMA_1CR*SIGMA_2CR*(30.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - '
'26.908*T*log(T) + 157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= '
'2180.0 & T < 6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) '
'+ 132000.0) + SIGMA_0CR*SIGMA_1CR*SIGMA_2FE*(-110.0*T + 16.0*if(T >= 298.15 & T < '
'1811.0,77358.5*1/T - 23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - '
'5.89269e-8*T^3.0 + 1225.7,if(T >= 1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - '
'46.0*T*log(T) + 299.31255*T - 25383.581,0)) + 14.0*if(T >= 298.15 & T < '
'2180.0,139250.0*1/T - 26.908*T*log(T) + 157.48*T + 0.00189435*T^2.0 - '
'1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < 6000.0,-2.88526e+32*T^(-9.0) - '
'50.0*T*log(T) + 344.18*T - 34869.344,0)) + 123500.0) + '
'SIGMA_0CR*SIGMA_1FE*SIGMA_2CR*(4.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 26.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 140486.0) '
'+ SIGMA_0CR*SIGMA_1FE*SIGMA_2FE*(20.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 10.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 148800.0) '
'+ SIGMA_0FE*SIGMA_1CR*SIGMA_2CR*(10.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 20.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 56200.0) + '
'SIGMA_0FE*SIGMA_1CR*SIGMA_2FE*(26.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 4.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 152700.0) '
'+ SIGMA_0FE*SIGMA_1FE*SIGMA_2CR*(14.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 16.0*if(T >= 298.15 & T < 2180.0,139250.0*1/T - 26.908*T*log(T) + '
'157.48*T + 0.00189435*T^2.0 - 1.47721e-6*T^3.0 - 8856.94,if(T >= 2180.0 & T < '
'6000.0,-2.88526e+32*T^(-9.0) - 50.0*T*log(T) + 344.18*T - 34869.344,0)) + 46200.0) + '
'SIGMA_0FE*SIGMA_1FE*SIGMA_2FE*(30.0*if(T >= 298.15 & T < 1811.0,77358.5*1/T - '
'23.5143*T*log(T) + 124.134*T - 0.00439752*T^2.0 - 5.89269e-8*T^3.0 + 1225.7,if(T >= '
'1811.0 & T < 6000.0,2.2960305e+31*T^(-9.0) - 46.0*T*log(T) + 299.31255*T - '
'25383.581,0)) + 173333.0))/(10.0*SIGMA_0CR + 10.0*SIGMA_0FE + 4.0*SIGMA_1CR + '
'4.0*SIGMA_1FE + 16.0*SIGMA_2CR + 16.0*SIGMA_2FE); G/100000'
coupled_variables = 'SIGMA_0CR SIGMA_1CR SIGMA_2CR'
constant_names = 'T eps'
constant_expressions = '1000 0.01'
[]
# h(eta)
[h1]
type = SwitchingFunctionMaterial
function_name = h1
h_order = HIGH
eta = eta1
[]
[h2]
type = SwitchingFunctionMaterial
function_name = h2
h_order = HIGH
eta = eta2
[]
# g(eta)
[g1]
type = BarrierFunctionMaterial
function_name = g1
g_order = SIMPLE
eta = eta1
[]
[g2]
type = BarrierFunctionMaterial
function_name = g2
g_order = SIMPLE
eta = eta2
[]
# constant properties
[constants]
type = GenericConstantMaterial
prop_names = 'D L kappa'
prop_values = '10 1 0.1 '
[]
# Coefficients for diffusion equation
[Dh1]
type = DerivativeParsedMaterial
material_property_names = 'D h1(eta1)'
expression = D*h1
property_name = Dh1
coupled_variables = eta1
derivative_order = 1
[]
[Dh2a]
type = DerivativeParsedMaterial
material_property_names = 'D h2(eta2)'
expression = D*h2*10/30
property_name = Dh2a
coupled_variables = eta2
derivative_order = 1
[]
[Dh2b]
type = DerivativeParsedMaterial
material_property_names = 'D h2(eta2)'
expression = D*h2*4/30
property_name = Dh2b
coupled_variables = eta2
derivative_order = 1
[]
[Dh2c]
type = DerivativeParsedMaterial
material_property_names = 'D h2(eta2)'
expression = D*h2*16/30
property_name = Dh2c
coupled_variables = eta2
derivative_order = 1
[]
[]
[Kernels]
#Kernels for diffusion equation
[diff_time]
type = TimeDerivative
variable = cCr
[]
[diff_c1]
type = MatDiffusion
variable = cCr
diffusivity = Dh1
v = BCC_CR
args = eta1
[]
[diff_c2a]
type = MatDiffusion
variable = cCr
diffusivity = Dh2a
v = SIGMA_0CR
args = eta2
[]
[diff_c2b]
type = MatDiffusion
variable = cCr
diffusivity = Dh2b
v = SIGMA_1CR
args = eta2
[]
[diff_c2c]
type = MatDiffusion
variable = cCr
diffusivity = Dh2c
v = SIGMA_2CR
args = eta2
[]
# enforce pointwise equality of chemical potentials
[chempot1a2a]
# The BCC phase has only one sublattice
# we tie it to the first sublattice with site fraction 10/(10+4+16) in the sigma phase
type = KKSPhaseChemicalPotential
variable = BCC_CR
cb = SIGMA_0CR
kb = '${fparse 10/30}'
fa_name = F_BCC_A2
fb_name = F_SIGMA
args_b = 'SIGMA_1CR SIGMA_2CR'
[]
[chempot2a2b]
# This kernel ties the first two sublattices in the sigma phase together
type = SLKKSChemicalPotential
variable = SIGMA_0CR
a = 10
cs = SIGMA_1CR
as = 4
F = F_SIGMA
coupled_variables = 'SIGMA_2CR'
[]
[chempot2b2c]
# This kernel ties the remaining two sublattices in the sigma phase together
type = SLKKSChemicalPotential
variable = SIGMA_1CR
a = 4
cs = SIGMA_2CR
as = 16
F = F_SIGMA
coupled_variables = 'SIGMA_0CR'
[]
[phaseconcentration]
# This kernel ties the sum of the sublattice concentrations to the global concentration cCr
type = SLKKSMultiPhaseConcentration
variable = SIGMA_2CR
c = cCr
ns = '1 3'
as = '1 10 4 16'
cs = 'BCC_CR SIGMA_0CR SIGMA_1CR SIGMA_2CR'
h_names = 'h1 h2'
eta = 'eta1 eta2'
[]
# Kernels for Allen-Cahn equation for eta1
[deta1dt]
type = TimeDerivative
variable = eta1
[]
[ACBulkF1]
type = KKSMultiACBulkF
variable = eta1
Fj_names = 'F_BCC_A2 F_SIGMA'
hj_names = 'h1 h2'
gi_name = g1
eta_i = eta1
wi = 0.1
coupled_variables = 'BCC_CR SIGMA_0CR SIGMA_1CR SIGMA_2CR eta2'
[]
[ACBulkC1]
type = SLKKSMultiACBulkC
variable = eta1
F = F_BCC_A2
c = BCC_CR
ns = '1 3'
as = '1 10 4 16'
cs = 'BCC_CR SIGMA_0CR SIGMA_1CR SIGMA_2CR'
h_names = 'h1 h2'
eta = 'eta1 eta2'
[]
[ACInterface1]
type = ACInterface
variable = eta1
kappa_name = kappa
[]
[lagrange1]
type = SwitchingFunctionConstraintEta
variable = eta1
h_name = h1
lambda = lambda
coupled_variables = 'eta2'
[]
# Kernels for Allen-Cahn equation for eta1
[deta2dt]
type = TimeDerivative
variable = eta2
[]
[ACBulkF2]
type = KKSMultiACBulkF
variable = eta2
Fj_names = 'F_BCC_A2 F_SIGMA'
hj_names = 'h1 h2'
gi_name = g2
eta_i = eta2
wi = 0.1
coupled_variables = 'BCC_CR SIGMA_0CR SIGMA_1CR SIGMA_2CR eta1'
[]
[ACBulkC2]
type = SLKKSMultiACBulkC
variable = eta2
F = F_BCC_A2
c = BCC_CR
ns = '1 3'
as = '1 10 4 16'
cs = 'BCC_CR SIGMA_0CR SIGMA_1CR SIGMA_2CR'
h_names = 'h1 h2'
eta = 'eta1 eta2'
[]
[ACInterface2]
type = ACInterface
variable = eta2
kappa_name = kappa
[]
[lagrange2]
type = SwitchingFunctionConstraintEta
variable = eta2
h_name = h2
lambda = lambda
coupled_variables = 'eta1'
[]
# Lagrange-multiplier constraint kernel for lambda
[lagrange]
type = SwitchingFunctionConstraintLagrange
variable = lambda
h_names = 'h1 h2'
etas = 'eta1 eta2'
epsilon = 1e-6
[]
[]
[AuxKernels]
[GlobalFreeEnergy]
type = KKSMultiFreeEnergy
variable = Fglobal
Fj_names = 'F_BCC_A2 F_SIGMA'
hj_names = 'h1 h2'
gj_names = 'g1 g2'
interfacial_vars = 'eta1 eta2'
kappa_names = 'kappa kappa'
w = 0.1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
line_search = none
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -ksp_gmres_restart'
petsc_options_value = 'asm lu nonzero 30'
l_max_its = 100
nl_max_its = 20
nl_abs_tol = 1e-10
end_time = 10000
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 12
iteration_window = 2
growth_factor = 1.5
cutback_factor = 0.7
dt = 0.1
[]
[]
[VectorPostprocessors]
[var]
type = LineValueSampler
start_point = '-25 0 0'
end_point = '25 0 0'
variable = 'cCr eta1 eta2 SIGMA_0CR SIGMA_1CR SIGMA_2CR'
num_points = 151
sort_by = id
execute_on = 'initial timestep_end'
[]
[mat]
type = LineMaterialRealSampler
start = '-25 0 0'
end = '25 0 0'
property = 'F_BCC_A2 F_SIGMA'
sort_by = id
execute_on = 'initial timestep_end'
[]
[]
[Postprocessors]
[F]
type = ElementIntegralVariablePostprocessor
variable = Fglobal
execute_on = 'initial timestep_end'
[]
[cmin]
type = NodalExtremeValue
value_type = min
variable = cCr
execute_on = 'initial timestep_end'
[]
[cmax]
type = NodalExtremeValue
value_type = max
variable = cCr
execute_on = 'initial timestep_end'
[]
[ctotal]
type = ElementIntegralVariablePostprocessor
variable = cCr
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
exodus = true
print_linear_residuals = false
csv = true
perf_graph = true
[]
(modules/level_set/test/tests/kernels/olsson_reinitialization/olsson_1d.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 8
ny = 8
uniform_refine = 2
[]
[Variables]
[./phi]
[../]
[]
[AuxVariables]
[./phi_0]
family = MONOMIAL
order = FIRST
[../]
[./phi_exact]
[../]
[]
[AuxKernels]
[./phi_exact]
type = FunctionAux
function = phi_exact
variable = phi_exact
[../]
[]
[Functions]
[./phi_initial]
type = ParsedFunction
expression = '1-x'
[../]
[./phi_exact]
type = ParsedFunction
symbol_names = epsilon
symbol_values = 0.05
expression = '1 / (1+exp((x-0.5)/epsilon))'
[../]
[]
[ICs]
[./phi_ic]
type = FunctionIC
function = phi_initial
variable = phi
[../]
[./phi_0_ic]
type = FunctionIC
function = phi_initial
variable = phi_0
[../]
[]
[Kernels]
[./time]
type = TimeDerivative
variable = phi
[../]
[./reinit]
type = LevelSetOlssonReinitialization
variable = phi
phi_0 = phi_0
epsilon = 0.05
[../]
[]
[UserObjects]
[./arnold]
type = LevelSetOlssonTerminator
tol = 0.1
[../]
[]
[Postprocessors]
[./error]
type = ElementL2Error
variable = phi
function = phi_exact
execute_on = 'initial timestep_end'
[../]
[./ndofs]
type = NumDOFs
[../]
[]
[VectorPostprocessors]
[./line]
type = LineValueSampler
start_point = '0 0.5 0'
end_point = '1 0.5 0'
variable = phi
num_points = 100
sort_by = x
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Transient
l_max_its = 100
nl_max_its = 100
solve_type = PJFNK
num_steps = 10
start_time = 0
nl_abs_tol = 1e-13
scheme = implicit-euler
dt = 0.05
petsc_options_iname = '-pc_type -pc_sub_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 300'
[]
[Outputs]
exodus = true
[./out]
type = CSV
time_data = true
file_base = output/olsson_1d_out
[../]
[]
(test/tests/indicators/gradient_jump_indicator/gradient_jump_indicator_fv_test.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
xmax = 2
nx = 2
ny = 1
subdomain_ids = '0 1'
[]
[interface_mesh]
type = SideSetsBetweenSubdomainsGenerator
input = gmg
primary_block = 0
paired_block = 1
new_boundary = interface
[]
# This creates enough elements to have defined gradients
[refine]
type = RefineBlockGenerator
input = interface_mesh
block = '0 1'
refinement = '3 3'
[]
[]
[Adaptivity]
marker = error_frac
max_h_level = 5
[Indicators]
[u0_jump]
type = GradientJumpIndicator
variable = u0
scale_by_flux_faces = false
[]
[]
[Markers]
[error_frac]
type = ErrorFractionMarker
coarsen = 0.15
indicator = u0_jump
refine = 0.7
[]
[]
[]
[Variables]
[u0]
family = MONOMIAL
order = CONSTANT
fv = true
block = 0
initial_condition = 0
[]
[u1]
family = MONOMIAL
order = CONSTANT
fv = true
block = 1
initial_condition = 0
[]
[]
[FVKernels]
[time0]
type = FVTimeKernel
variable = u0
[]
[diff0]
type = FVDiffusion
variable = u0
coeff = 1
block = 0
[]
[time1]
type = FVTimeKernel
variable = u1
[]
[diff1]
type = FVDiffusion
variable = u1
coeff = 1
block = 1
[]
[]
[FVInterfaceKernels]
[diffusion]
type = FVDiffusionInterface
variable1 = u0
variable2 = u1
boundary = interface
subdomain1 = 0
subdomain2 = 1
coeff1 = 1
coeff2 = 1
[]
[]
[FVBCs]
[left] # arbitrary user-chosen name
type = FVDirichletBC
variable = u0
boundary = 'left' # This must match a named boundary in the mesh file
value = 1
[]
[right] # arbitrary user-chosen name
type = FVNeumannBC
variable = u1
boundary = 'right' # This must match a named boundary in the mesh file
value = 0
[]
[]
[Executioner]
type = Transient
solve_type = 'Newton'
end_time = 0.5
dt = 0.1
[]
[VectorPostprocessors]
[samples]
type = LineValueSampler
variable = u0
# Avoiding element faces
start_point = '0.0001 1e-6 0'
end_point = '0.999999 1e-6 0'
num_points = 10
sort_by = 'x'
[]
[]
[Outputs]
execute_on = 'timestep_end'
csv = true
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_3.i)
# SubApp with 2D model to test multi app vectorpostprocessor to aux var transfer
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.150080 0.0'
variable = axial_strain
num_points = 21
sort_by = 'y'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(modules/combined/examples/publications/rapid_dev/fig7b.i)
#
# Fig. 7 input for 10.1016/j.commatsci.2017.02.017
# D. Schwen et al./Computational Materials Science 132 (2017) 36-45
# Dashed black curve (2)
# Eigenstrain is globally applied. Single global elastic free energies.
# Supply the RADIUS parameter (10-35) on the command line to generate data
# for all curves in the plot.
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 32
xmin = 0
xmax = 100
second_order = true
[]
[Problem]
coord_type = RSPHERICAL
[]
[GlobalParams]
displacements = 'disp_r'
[]
[Functions]
[./diff]
type = ParsedFunction
expression = '${RADIUS}-pos_c'
symbol_names = pos_c
symbol_values = pos_c
[../]
[]
# AuxVars to compute the free energy density for outputting
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./cross_energy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./local_free_energy]
type = TotalFreeEnergy
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[Variables]
# Solute concentration variable
[./c]
[./InitialCondition]
type = SmoothCircleIC
invalue = 1
outvalue = 0
x1 = 0
y1 = 0
radius = ${RADIUS}
int_width = 3
[../]
[../]
[./w]
[../]
# Phase order parameter
[./eta]
[./InitialCondition]
type = SmoothCircleIC
invalue = 1
outvalue = 0
x1 = 0
y1 = 0
radius = ${RADIUS}
int_width = 3
[../]
[../]
[./Fe_fit]
order = SECOND
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
add_variables = true
eigenstrain_names = eigenstrain
[]
[Kernels]
# Split Cahn-Hilliard kernels
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
args = 'eta'
kappa_name = kappa_c
w = w
[../]
[./wres]
type = SplitCHWRes
variable = w
mob_name = M
[../]
[./time]
type = CoupledTimeDerivative
variable = w
v = c
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 1
[./detadt]
type = TimeDerivative
variable = eta
[../]
[./ACBulk1]
type = AllenCahn
variable = eta
args = 'c'
mob_name = L
f_name = F
[../]
[./ACInterface]
type = ACInterface
variable = eta
mob_name = L
kappa_name = kappa_eta
[../]
[./Fe]
type = MaterialPropertyValue
prop_name = Fe
variable = Fe_fit
[../]
[./autoadjust]
type = MaskedBodyForce
variable = w
function = diff
mask = mask
[../]
[]
[Materials]
# declare a few constants, such as mobilities (L,M) and interface gradient prefactors (kappa*)
[./consts]
type = GenericConstantMaterial
prop_names = 'M L kappa_c kappa_eta'
prop_values = '1.0 1.0 0.5 1'
[../]
# forcing function mask
[./mask]
type = ParsedMaterial
property_name = mask
expression = grad/dt
material_property_names = 'grad dt'
[../]
[./grad]
type = VariableGradientMaterial
variable = c
prop = grad
[../]
[./time]
type = TimeStepMaterial
[../]
# global mechanical properties
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
# eigenstrain as a function of phase
[./eigenstrain]
type = ComputeVariableEigenstrain
eigen_base = '0.05 0.05 0.05 0 0 0'
prefactor = h
args = eta
eigenstrain_name = eigenstrain
[../]
# switching functions
[./switching]
type = SwitchingFunctionMaterial
function_name = h
eta = eta
h_order = SIMPLE
[../]
[./barrier]
type = BarrierFunctionMaterial
eta = eta
[../]
# chemical free energies
[./chemical_free_energy_1]
type = DerivativeParsedMaterial
property_name = Fc1
expression = 'c^2'
coupled_variables = 'c'
derivative_order = 2
[../]
[./chemical_free_energy_2]
type = DerivativeParsedMaterial
property_name = Fc2
expression = '(1-c)^2'
coupled_variables = 'c'
derivative_order = 2
[../]
# global chemical free energy
[./chemical_free_energy]
type = DerivativeTwoPhaseMaterial
f_name = Fc
fa_name = Fc1
fb_name = Fc2
eta = eta
args = 'c'
W = 4
[../]
# global elastic free energy
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
args = 'eta'
output_properties = Fe
derivative_order = 2
[../]
# free energy
[./free_energy]
type = DerivativeSumMaterial
property_name = F
sum_materials = 'Fc Fe'
coupled_variables = 'c eta'
derivative_order = 2
[../]
[]
[BCs]
[./left_r]
type = DirichletBC
variable = disp_r
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
# We monitor the total free energy and the total solute concentration (should be constant)
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
variable = local_energy
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
variable = c
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./pos_c]
type = FindValueOnLine
start_point = '0 0 0'
end_point = '100 0 0'
v = c
target = 0.582
tol = 1e-8
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./pos_eta]
type = FindValueOnLine
start_point = '0 0 0'
end_point = '100 0 0'
v = eta
target = 0.5
tol = 1e-8
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./c_min]
type = ElementExtremeValue
value_type = min
variable = c
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[]
[VectorPostprocessors]
[./line]
type = LineValueSampler
variable = 'Fe_fit c w'
start_point = '0 0 0'
end_point = '100 0 0'
num_points = 5000
sort_by = x
outputs = vpp
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
l_max_its = 30
nl_max_its = 15
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 2.0e-9
start_time = 0.0
end_time = 100000.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 8
iteration_window = 1
dt = 1
[../]
[./Adaptivity]
initial_adaptivity = 5
interval = 10
max_h_level = 5
refine_fraction = 0.9
coarsen_fraction = 0.1
[../]
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
execute_on = 'INITIAL TIMESTEP_END'
[./table]
type = CSV
delimiter = ' '
file_base = radius_${RADIUS}/eigenstrain_pp
[../]
[./vpp]
type = CSV
delimiter = ' '
sync_times = '10 50 100 500 1000 5000 10000 50000 100000'
sync_only = true
time_data = true
file_base = radius_${RADIUS}/eigenstrain_vpp
[../]
[]
(modules/geochemistry/test/tests/spatial_reactor/spatial_4.i)
# demonstrating that sources may be spatially-dependent
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O H+ Cl-"
[]
[]
[SpatialReactionSolver]
model_definition = definition
charge_balance_species = "Cl-"
constraint_species = "H2O H+ Cl-"
constraint_value = " 55.5 1E-5 1E-5"
constraint_meaning = "bulk_composition bulk_composition bulk_composition"
constraint_unit = "moles moles moles"
source_species_names = HCl
source_species_rates = HCl_rate
[]
[VectorPostprocessors]
[bulk_Cl]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
sort_by = x
num_points = 11
variable = 'bulk_moles_Cl-'
[]
[]
[AuxVariables]
[HCl_rate]
[]
[]
[AuxKernels]
[HCl_rate]
type = FunctionAux
variable = HCl_rate
function = '1E-5 * x'
execute_on = timestep_begin # so the Reactor gets the correct value
[]
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmax = 1
[]
[Executioner]
type = Transient
dt = 1
end_time = 2
[]
[Outputs]
csv = true
[]
(modules/combined/examples/phase_field-mechanics/kks_mechanics_VTS.i)
# KKS phase-field model coupled with elasticity using the Voigt-Taylor scheme as
# described in L.K. Aagesen et al., Computational Materials Science, 140, 10-21 (2017)
# Original run #170329e
[Mesh]
type = GeneratedMesh
dim = 3
nx = 640
ny = 1
nz = 1
xmin = -10
xmax = 10
ymin = 0
ymax = 0.03125
zmin = 0
zmax = 0.03125
elem_type = HEX8
[]
[Variables]
# order parameter
[./eta]
order = FIRST
family = LAGRANGE
[../]
# solute concentration
[./c]
order = FIRST
family = LAGRANGE
[../]
# chemical potential
[./w]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (matrix)
[./cm]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (precipitate)
[./cp]
order = FIRST
family = LAGRANGE
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[ICs]
[./eta_ic]
variable = eta
type = FunctionIC
function = ic_func_eta
block = 0
[../]
[./c_ic]
variable = c
type = FunctionIC
function = ic_func_c
block = 0
[../]
[./w_ic]
variable = w
type = ConstantIC
value = 0.00991
block = 0
[../]
[./cm_ic]
variable = cm
type = ConstantIC
value = 0.131
block = 0
[../]
[./cp_ic]
variable = cp
type = ConstantIC
value = 0.236
block = 0
[../]
[]
[Functions]
[./ic_func_eta]
type = ParsedFunction
expression = '0.5*(1.0+tanh((x)/delta_eta/sqrt(2.0)))'
symbol_names = 'delta_eta'
symbol_values = '0.8034'
[../]
[./ic_func_c]
type = ParsedFunction
expression = '0.2388*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10)+0.1338*(1-(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10))'
symbol_names = 'delta'
symbol_values = '0.8034'
[../]
[./psi_eq_int]
type = ParsedFunction
expression = 'volume*psi_alpha'
symbol_names = 'volume psi_alpha'
symbol_values = 'volume psi_alpha'
[../]
[./gamma]
type = ParsedFunction
expression = '(psi_int - psi_eq_int) / dy / dz'
symbol_names = 'psi_int psi_eq_int dy dz'
symbol_values = 'psi_int psi_eq_int 0.03125 0.03125'
[../]
[]
[AuxVariables]
[./sigma11]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma22]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma33]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e33]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el11]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el12]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el22]
order = CONSTANT
family = MONOMIAL
[../]
[./f_el]
order = CONSTANT
family = MONOMIAL
[../]
[./eigen_strain00]
order = CONSTANT
family = MONOMIAL
[../]
[./Fglobal]
order = CONSTANT
family = MONOMIAL
[../]
[./psi]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_sigma11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = sigma11
[../]
[./matl_sigma22]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = sigma22
[../]
[./matl_sigma33]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = sigma33
[../]
[./matl_e11]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
variable = e11
[../]
[./matl_e12]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 1
variable = e12
[../]
[./matl_e22]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 1
index_j = 1
variable = e22
[../]
[./matl_e33]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = e33
[../]
[./f_el]
type = MaterialRealAux
variable = f_el
property = f_el_mat
execute_on = timestep_end
[../]
[./GlobalFreeEnergy]
variable = Fglobal
type = KKSGlobalFreeEnergy
fa_name = fm
fb_name = fp
w = 0.0264
kappa_names = kappa
interfacial_vars = eta
[../]
[./psi_potential]
variable = psi
type = ParsedAux
coupled_variables = 'Fglobal w c f_el sigma11 e11'
expression = 'Fglobal - w*c + f_el - sigma11*e11'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[./front_y]
type = DirichletBC
variable = disp_y
boundary = front
value = 0
[../]
[./back_y]
type = DirichletBC
variable = disp_y
boundary = back
value = 0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0
[../]
[]
[Materials]
# Chemical free energy of the matrix
[./fm]
type = DerivativeParsedMaterial
property_name = fm
coupled_variables = 'cm'
expression = '6.55*(cm-0.13)^2'
[../]
# Elastic energy of the matrix
[./elastic_free_energy_m]
type = ElasticEnergyMaterial
base_name = matrix
f_name = fe_m
args = ' '
outputs = exodus
[../]
# Total free energy of the matrix
[./Total_energy_matrix]
type = DerivativeSumMaterial
property_name = f_total_matrix
sum_materials = 'fm fe_m'
coupled_variables = 'cm'
[../]
# Free energy of the precipitate phase
[./fp]
type = DerivativeParsedMaterial
property_name = fp
coupled_variables = 'cp'
expression = '6.55*(cp-0.235)^2'
[../]
# Elastic energy of the precipitate
[./elastic_free_energy_p]
type = ElasticEnergyMaterial
base_name = ppt
f_name = fe_p
args = ' '
outputs = exodus
[../]
# Total free energy of the precipitate
[./Total_energy_ppt]
type = DerivativeSumMaterial
property_name = f_total_ppt
sum_materials = 'fp fe_p'
coupled_variables = 'cp'
[../]
# Total elastic energy
[./Total_elastic_energy]
type = DerivativeTwoPhaseMaterial
eta = eta
f_name = f_el_mat
fa_name = fe_m
fb_name = fe_p
outputs = exodus
W = 0
[../]
# h(eta)
[./h_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta
[../]
# g(eta)
[./g_eta]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta
[../]
# constant properties
[./constants]
type = GenericConstantMaterial
prop_names = 'M L kappa misfit'
prop_values = '0.7 0.7 0.01704 0.00377'
[../]
#Mechanical properties
[./Stiffness_matrix]
type = ComputeElasticityTensor
C_ijkl = '103.3 74.25 74.25 103.3 74.25 103.3 46.75 46.75 46.75'
base_name = matrix
fill_method = symmetric9
[../]
[./Stiffness_ppt]
type = ComputeElasticityTensor
C_ijkl = '100.7 71.45 71.45 100.7 71.45 100.7 50.10 50.10 50.10'
base_name = ppt
fill_method = symmetric9
[../]
[./stress_matrix]
type = ComputeLinearElasticStress
base_name = matrix
[../]
[./stress_ppt]
type = ComputeLinearElasticStress
base_name = ppt
[../]
[./strain_matrix]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
base_name = matrix
[../]
[./strain_ppt]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
base_name = ppt
eigenstrain_names = 'eigenstrain_ppt'
[../]
[./eigen_strain]
type = ComputeEigenstrain
base_name = ppt
eigen_base = '1 1 1 0 0 0'
prefactor = misfit
eigenstrain_name = 'eigenstrain_ppt'
[../]
[./global_stress]
type = TwoPhaseStressMaterial
base_A = matrix
base_B = ppt
[../]
[./global_strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
# enforce c = (1-h(eta))*cm + h(eta)*cp
[./PhaseConc]
type = KKSPhaseConcentration
ca = cm
variable = cp
c = c
eta = eta
[../]
# enforce pointwise equality of chemical potentials
[./ChemPotVacancies]
type = KKSPhaseChemicalPotential
variable = cm
cb = cp
fa_name = f_total_matrix
fb_name = f_total_ppt
[../]
#
# Cahn-Hilliard Equation
#
[./CHBulk]
type = KKSSplitCHCRes
variable = c
ca = cm
fa_name = f_total_matrix
w = w
[../]
[./dcdt]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[./ckernel]
type = SplitCHWRes
mob_name = M
variable = w
[../]
#
# Allen-Cahn Equation
#
[./ACBulkF]
type = KKSACBulkF
variable = eta
fa_name = f_total_matrix
fb_name = f_total_ppt
w = 0.0264
args = 'cp cm'
[../]
[./ACBulkC]
type = KKSACBulkC
variable = eta
ca = cm
cb = cp
fa_name = f_total_matrix
[../]
[./ACInterface]
type = ACInterface
variable = eta
kappa_name = kappa
[../]
[./detadt]
type = TimeDerivative
variable = eta
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm ilu nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-11
num_steps = 200
[./TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 0.5
[../]
[]
[VectorPostprocessors]
#[./eta]
# type = LineValueSampler
# start_point = '-10 0 0'
# end_point = '10 0 0'
# variable = eta
# num_points = 321
# sort_by = id
#[../]
#[./eta_position]
# type = FindValueOnLineSample
# vectorpostprocessor = eta
# variable_name = eta
# search_value = 0.5
#[../]
# [./f_el]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = f_el
# [../]
# [./f_el_a]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = fe_m
# [../]
# [./f_el_b]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = fe_p
# [../]
# [./h_out]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = h
# [../]
# [./fm_out]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = fm
# [../]
[]
[Postprocessors]
[./f_el_int]
type = ElementIntegralMaterialProperty
mat_prop = f_el_mat
[../]
[./c_alpha]
type = SideAverageValue
boundary = left
variable = c
[../]
[./c_beta]
type = SideAverageValue
boundary = right
variable = c
[../]
[./e11_alpha]
type = SideAverageValue
boundary = left
variable = e11
[../]
[./e11_beta]
type = SideAverageValue
boundary = right
variable = e11
[../]
[./s11_alpha]
type = SideAverageValue
boundary = left
variable = sigma11
[../]
[./s22_alpha]
type = SideAverageValue
boundary = left
variable = sigma22
[../]
[./s33_alpha]
type = SideAverageValue
boundary = left
variable = sigma33
[../]
[./s11_beta]
type = SideAverageValue
boundary = right
variable = sigma11
[../]
[./s22_beta]
type = SideAverageValue
boundary = right
variable = sigma22
[../]
[./s33_beta]
type = SideAverageValue
boundary = right
variable = sigma33
[../]
[./f_el_alpha]
type = SideAverageValue
boundary = left
variable = f_el
[../]
[./f_el_beta]
type = SideAverageValue
boundary = right
variable = f_el
[../]
[./f_c_alpha]
type = SideAverageValue
boundary = left
variable = Fglobal
[../]
[./f_c_beta]
type = SideAverageValue
boundary = right
variable = Fglobal
[../]
[./chem_pot_alpha]
type = SideAverageValue
boundary = left
variable = w
[../]
[./chem_pot_beta]
type = SideAverageValue
boundary = right
variable = w
[../]
[./psi_alpha]
type = SideAverageValue
boundary = left
variable = psi
[../]
[./psi_beta]
type = SideAverageValue
boundary = right
variable = psi
[../]
[./total_energy]
type = ElementIntegralVariablePostprocessor
variable = Fglobal
[../]
# Get simulation cell size from postprocessor
[./volume]
type = ElementIntegralMaterialProperty
mat_prop = 1
[../]
[./psi_eq_int]
type = FunctionValuePostprocessor
function = psi_eq_int
[../]
[./psi_int]
type = ElementIntegralVariablePostprocessor
variable = psi
[../]
[./gamma]
type = FunctionValuePostprocessor
function = gamma
[../]
[]
#
# Precondition using handcoded off-diagonal terms
#
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Outputs]
[./exodus]
type = Exodus
time_step_interval = 20
[../]
[./csv]
type = CSV
execute_on = 'final'
[../]
#[./console]
# type = Console
# output_file = true
# [../]
[]
(modules/porous_flow/examples/multiapp_fracture_flow/diffusion_multiapp/single_var.i)
# No heat transfer between matrix and fracture, with the matrix and fracture being identical spatial domains
[Mesh]
[generate]
type = GeneratedMeshGenerator
dim = 1
nx = 100
xmin = 0
xmax = 50.0
[]
[]
[Variables]
[T]
[]
[]
[ICs]
[T]
type = FunctionIC
variable = T
function = 'if(x<0.5, 2, 0)' # delta function
[]
[]
[Kernels]
[dot]
type = TimeDerivative
variable = T
[]
[fracture_diffusion]
type = Diffusion
variable = T
[]
[]
[Preconditioning]
[entire_jacobian]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 100
end_time = 100
[]
[VectorPostprocessors]
[final_results]
type = LineValueSampler
start_point = '0 0 0'
end_point = '50 0 0'
num_points = 11
sort_by = x
variable = T
outputs = final_csv
[]
[]
[Outputs]
print_linear_residuals = false
[final_csv]
type = CSV
sync_times = 100
sync_only = true
[]
[]
(modules/porous_flow/test/tests/pressure_pulse/pressure_pulse_1d_2phasePSVG.i)
# Pressure pulse in 1D with 2 phases, 2components - transient
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 100
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[ppwater]
initial_condition = 2e6
[]
[sgas]
initial_condition = 0.3
[]
[]
[AuxVariables]
[massfrac_ph0_sp0]
initial_condition = 1
[]
[massfrac_ph1_sp0]
initial_condition = 0
[]
[ppgas]
family = MONOMIAL
order = FIRST
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = ppwater
[]
[flux0]
type = PorousFlowAdvectiveFlux
variable = ppwater
fluid_component = 0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = sgas
[]
[flux1]
type = PorousFlowAdvectiveFlux
variable = sgas
fluid_component = 1
[]
[]
[AuxKernels]
[ppgas]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = ppgas
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'ppwater sgas'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1e-4
sat_lr = 0.3
pc_max = 1e6
log_extension = false
[]
[]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 2e7
density0 = 1
thermal_expansion = 0
viscosity = 1e-5
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = ppwater
phase1_saturation = sgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1e-15 0 0 0 1e-15 0 0 0 1e-15'
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 0
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 1
[]
[]
[BCs]
[leftwater]
type = DirichletBC
boundary = left
value = 3e6
variable = ppwater
[]
[rightwater]
type = DirichletBC
boundary = right
value = 2e6
variable = ppwater
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-20 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1e3
end_time = 1e4
[]
[VectorPostprocessors]
[pp]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'ppwater ppgas'
start_point = '0 0 0'
end_point = '100 0 0'
num_points = 11
[]
[]
[Outputs]
file_base = pressure_pulse_1d_2phasePSVG
print_linear_residuals = false
[csv]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/rsc01.i)
# RSC test with high-res time and spatial resolution
[Mesh]
type = GeneratedMesh
dim = 2
nx = 600
ny = 1
xmin = 0
xmax = 10 # x is the depth variable, called zeta in RSC
ymin = 0
ymax = 0.05
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Functions]
[dts]
type = PiecewiseLinear
y = '3E-3 3E-2 0.05'
x = '0 1 5'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pwater poil'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureRSC
oil_viscosity = 2E-3
scale_ratio = 2E3
shift = 10
[]
[]
[FluidProperties]
[water]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 10
thermal_expansion = 0
viscosity = 1e-3
[]
[oil]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 20
thermal_expansion = 0
viscosity = 2e-3
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = poil
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = water
phase = 0
compute_enthalpy = false
compute_internal_energy = false
[]
[oil]
type = PorousFlowSingleComponentFluid
fp = oil
phase = 1
compute_enthalpy = false
compute_internal_energy = false
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 0
[]
[relperm_oil]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 1
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.25
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-5 0 0 0 1E-5 0 0 0 1E-5'
[]
[]
[Variables]
[pwater]
[]
[poil]
[]
[]
[ICs]
[water_init]
type = ConstantIC
variable = pwater
value = 0
[]
[oil_init]
type = ConstantIC
variable = poil
value = 15
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pwater
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = poil
[]
[flux1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = poil
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[SOil]
family = MONOMIAL
order = CONSTANT
[]
[massfrac_ph0_sp0]
initial_condition = 1
[]
[massfrac_ph1_sp0]
initial_condition = 0
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[SOil]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 1
variable = SOil
[]
[]
[BCs]
# we are pumping water into a system that has virtually incompressible fluids, hence the pressures rise enormously. this adversely affects convergence because of almost-overflows and precision-loss problems. The fixed things help keep pressures low and so prevent these awful behaviours. the movement of the saturation front is the same regardless of the fixed things.
active = 'recharge fixedoil fixedwater'
[recharge]
type = PorousFlowSink
variable = pwater
boundary = 'left'
flux_function = -1.0
[]
[fixedwater]
type = DirichletBC
variable = pwater
boundary = 'right'
value = 0
[]
[fixedoil]
type = DirichletBC
variable = poil
boundary = 'right'
value = 15
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10000'
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = SWater
start_point = '0 0 0'
end_point = '7 0 0'
sort_by = x
num_points = 21
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 5
[TimeStepper]
type = FunctionDT
function = dts
[]
[]
[Outputs]
file_base = rsc01
[along_line]
type = CSV
execute_vector_postprocessors_on = final
[]
[exodus]
type = Exodus
execute_on = 'initial final'
[]
[]
(modules/porous_flow/test/tests/heat_advection/heat_advection_1d.i)
# 1phase, heat advecting with a moving fluid
# Full upwinding is used
[Mesh]
type = GeneratedMesh
dim = 1
nx = 50
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[temp]
initial_condition = 200
[]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = '1-x'
[]
[]
[BCs]
[pp0]
type = DirichletBC
variable = pp
boundary = left
value = 1
[]
[pp1]
type = DirichletBC
variable = pp
boundary = right
value = 0
[]
[spit_heat]
type = DirichletBC
variable = temp
boundary = left
value = 300
[]
[suck_heat]
type = DirichletBC
variable = temp
boundary = right
value = 200
[]
[]
[Kernels]
[mass_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[advection]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pp
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[heat_advection]
type = PorousFlowHeatAdvection
variable = temp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pp'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.6
alpha = 1.3
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 100
density0 = 1000
viscosity = 4.4
thermal_expansion = 0
cv = 2
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.0
density = 125
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 2 0 0 0 3'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
[]
[massfrac]
type = PorousFlowMassFraction
[]
[PS]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres bjacobi 1E-15 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 0.01
end_time = 0.6
[]
[VectorPostprocessors]
[T]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 51
sort_by = x
variable = temp
[]
[]
[Outputs]
[csv]
type = CSV
sync_times = '0.1 0.6'
sync_only = true
[]
[]
(test/tests/variables/linearfv/diffusion-1d-pp.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 1
nx = 50
[]
[]
[Problem]
linear_sys_names = 'u_sys'
[]
[Variables]
[u]
type = MooseLinearVariableFVReal
solver_sys = 'u_sys'
initial_condition = 1.0
[]
[]
[LinearFVKernels]
[diffusion]
type = LinearFVDiffusion
variable = u
diffusion_coeff = coeff_func
[]
[source]
type = LinearFVSource
variable = u
source_density = source_func
[]
[]
[LinearFVBCs]
[dir]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = u
boundary = "left right"
functor = analytic_solution
[]
[]
[Functions]
[coeff_func]
type = ParsedFunction
expression = '0.5*x'
[]
[source_func]
type = ParsedFunction
expression = '2*x'
[]
[analytic_solution]
type = ParsedFunction
expression = '1-x*x'
[]
[]
[Postprocessors]
[average]
type = ElementAverageValue
variable = u
execute_on = FINAL
outputs = csv
[]
[min]
type = ElementExtremeValue
variable = u
value_type = min
execute_on = FINAL
outputs = csv
[]
[max]
type = ElementExtremeValue
variable = u
value_type = max
execute_on = FINAL
outputs = csv
[]
[num_dofs]
type = NumDOFs
execute_on = FINAL
outputs = csv
[]
[elem_value]
type = ElementalVariableValue
variable = u
elementid = 10
execute_on = FINAL
outputs = csv
[]
[point_value]
type = PointValue
variable = u
point = '0.33333 0 0'
execute_on = FINAL
outputs = csv
[]
[]
[VectorPostprocessors]
[line-sample]
type = LineValueSampler
variable = u
start_point = '0.13333 0 0'
end_point = '0.766666 0 0'
num_points = 9
sort_by = x
execute_on = FINAL
outputs = vpp_csv
[]
[]
[Executioner]
type = LinearPicardSteady
linear_systems_to_solve = u_sys
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
[csv]
type = CSV
execute_on = FINAL
[]
[vpp_csv]
type = CSV
execute_on = FINAL
[]
[]
(tutorials/tutorial03_verification/app/test/tests/step03_analytical/1d_analytical.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
xmax = 0.03
nx = 200
[]
[]
[Variables]
[T]
[]
[]
[ICs]
[T_O]
type = ConstantIC
variable = T
value = 300
[]
[]
[Kernels]
[T_time]
type = HeatConductionTimeDerivative
variable = T
density_name = 7800
specific_heat = 450
[]
[T_cond]
type = HeatConduction
variable = T
diffusion_coefficient = 80.2
[]
[]
[BCs]
[left]
type = NeumannBC
variable = T
boundary = left
value = 7e5
[]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = NEWTON
dt = 0.01
end_time = 1
[]
[Outputs]
exodus = true
csv = true
[]
[Functions]
[T_exact]
type = ParsedFunction
symbol_names = 'k rho cp T0 qs'
symbol_values = '80.2 7800 450 300 7e5'
expression = 'T0 + '
'qs/k*(2*sqrt(k/(rho*cp)*t/pi)*exp(-x^2/(4*k/(rho*cp)*(t+1e-50))) - '
'x*(1-erf(x/(2*sqrt(k/(rho*cp)*(t+1e-50))))))'
[]
[]
[Postprocessors]
[error]
type = NodalL2Error
variable = T
function = T_exact
[]
[h]
type = AverageElementSize
[]
[]
[VectorPostprocessors]
[T_exact]
type = LineFunctionSampler
functions = T_exact
start_point = '0 0 0'
end_point = '0.03 0 0'
num_points = 200
sort_by = x
execute_on = 'INITIAL TIMESTEP_END'
[]
[T_simulation]
type = LineValueSampler
variable = T
start_point = '0 0 0'
end_point = '0.03 0 0'
num_points = 200
sort_by = x
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
(modules/porous_flow/test/tests/numerical_diffusion/fltvd_none.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek
# No antidiffusion, so this is identical to full-upwinding
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[Variables]
[tracer]
[]
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
[]
[flux]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo
[]
[]
[UserObjects]
[fluo]
type = AdvectiveFluxCalculator
flux_limiter_type = none
u = tracer
velocity = '0.1 0 0'
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-1
nl_abs_tol = 1E-8
nl_max_its = 500
timestep_tolerance = 1E-3
[]
[Outputs]
csv = true
execute_on = final
[]
(modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_3D.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek, with antidiffusion from superbee flux limiting
# 3D version
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
xmin = 0
xmax = 1
ny = 4
ymin = 0
ymax = 0.5
nz = 3
zmin = 0
zmax = 2
[]
[Variables]
[tracer]
[]
[]
[Problem]
error_on_jacobian_nonzero_reallocation=true
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
[]
[flux]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo
[]
[]
[UserObjects]
[fluo]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = superbee
u = tracer
velocity = '0.1 0 0'
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0.5 2'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
nl_max_its = 500
timestep_tolerance = 1E-3
[]
[Outputs]
print_linear_residuals = false
[out]
type = CSV
execute_on = final
[]
[]
(test/tests/outputs/csv_final_and_latest/latest.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = CoefDiffusion
variable = u
coef = 0.1
[../]
[./time]
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 = 10
dt = 0.25
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
# Vector Postprocessor System
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
execute_on = 'timestep_end'
variable = 'u'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = id
[../]
[]
[Outputs]
[./out]
type = CSV
execute_on = 'TIMESTEP_END'
create_latest_symlink = true
[../]
[]
(modules/navier_stokes/test/tests/finite_volume/cns/stagnation_inlet/supersonic_nozzle_hllc.i)
stagnation_pressure = 1
stagnation_temperature = 1
[GlobalParams]
fp = fp
[]
[Debug]
show_material_props = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = supersonic_nozzle.e
[]
[]
[FluidProperties]
[fp]
type = IdealGasFluidProperties
[]
[]
[Variables]
[rho]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 0.0034
[]
[rho_u]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 1e-4
outputs = none
[]
[rho_v]
family = MONOMIAL
order = CONSTANT
fv = true
outputs = none
[]
[rho_E]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 2.5
[]
[]
[FVKernels]
# Mass conservation
[mass_time]
type = FVTimeKernel
variable = rho
[]
[mass_advection]
type = CNSFVMassHLLC
variable = rho
[]
# Momentum x conservation
[momentum_x_time]
type = FVTimeKernel
variable = rho_u
[]
[momentum_x_advection]
type = CNSFVMomentumHLLC
variable = rho_u
momentum_component = x
[]
# Momentum y conservation
[momentum_y_time]
type = FVTimeKernel
variable = rho_v
[]
[momentum_y_advection]
type = CNSFVMomentumHLLC
variable = rho_v
momentum_component = y
[]
# Fluid energy conservation
[fluid_energy_time]
type = FVTimeKernel
variable = rho_E
[]
[fluid_energy_advection]
type = CNSFVFluidEnergyHLLC
variable = rho_E
[]
[]
[FVBCs]
## inflow stagnation boundaries
[mass_stagnation_inflow]
type = CNSFVHLLCMassStagnationInletBC
variable = rho
stagnation_pressure = ${stagnation_pressure}
stagnation_temperature = ${stagnation_temperature}
boundary = left
[]
[momentum_x_stagnation_inflow]
type = CNSFVHLLCMomentumStagnationInletBC
variable = rho_u
momentum_component = x
stagnation_pressure = ${stagnation_pressure}
stagnation_temperature = ${stagnation_temperature}
boundary = left
[]
[momentum_y_stagnation_inflow]
type = CNSFVHLLCMomentumStagnationInletBC
variable = rho_v
momentum_component = y
stagnation_pressure = ${stagnation_pressure}
stagnation_temperature = ${stagnation_temperature}
boundary = left
[../]
[fluid_energy_stagnation_inflow]
type = CNSFVHLLCFluidEnergyStagnationInletBC
variable = rho_E
stagnation_pressure = ${stagnation_pressure}
stagnation_temperature = ${stagnation_temperature}
boundary = left
[]
## outflow implicit conditions
[mass_outflow]
type = CNSFVHLLCMassImplicitBC
variable = rho
boundary = right
[]
[momentum_x_outflow]
type = CNSFVHLLCMomentumImplicitBC
variable = rho_u
momentum_component = x
boundary = right
[]
[momentum_y_outflow]
type = CNSFVHLLCMomentumImplicitBC
variable = rho_v
momentum_component = y
boundary = right
[]
[fluid_energy_outflow]
type = CNSFVHLLCFluidEnergyImplicitBC
variable = rho_E
boundary = right
[]
# wall conditions
[momentum_x_pressure_wall]
type = CNSFVMomImplicitPressureBC
variable = rho_u
momentum_component = x
boundary = wall
[]
[momentum_y_pressure_wall]
type = CNSFVMomImplicitPressureBC
variable = rho_v
momentum_component = y
boundary = wall
[]
[]
[AuxVariables]
[Ma]
family = MONOMIAL
order = CONSTANT
[]
[Ma_layered]
family = MONOMIAL
order = CONSTANT
[]
[]
[UserObjects]
[layered_Ma_UO]
type = LayeredAverage
variable = Ma
num_layers = 100
direction = x
[]
[]
[AuxKernels]
[Ma_aux]
type = NSMachAux
variable = Ma
fluid_properties = fp
use_material_properties = true
[]
[Ma_layered_aux]
type = SpatialUserObjectAux
variable = Ma_layered
user_object = layered_Ma_UO
[]
[]
[Materials]
[var_mat]
type = ConservedVarValuesMaterial
rho = rho
rhou = rho_u
rhov = rho_v
rho_et = rho_E
[]
[fluid_props]
type = GeneralFluidProps
porosity = 1
characteristic_length = 1
[]
[sound_speed]
type = SoundspeedMat
fp = fp
[]
[]
[Postprocessors]
[cfl_dt]
type = ADCFLTimeStepSize
c_names = 'sound_speed'
vel_names = 'speed'
CFL = 0.5
[]
[outflow_Ma]
type = SideAverageValue
variable = Ma
boundary = right
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[]
[Executioner]
type = Transient
end_time = 0.1
[TimeIntegrator]
type = ExplicitSSPRungeKutta
order = 2
[]
l_tol = 1e-8
[TimeStepper]
type = PostprocessorDT
postprocessor = cfl_dt
[]
[]
[VectorPostprocessors]
[Ma_layered]
type = LineValueSampler
variable = Ma_layered
start_point = '0 0 0'
end_point = '10 0 0'
num_points = 100
sort_by = x
[]
[]
[Outputs]
exodus = true
[]
(modules/phase_field/test/tests/misc/equal_gradient_lagrange.i)
#
# This test demonstrates an InterfaceKernel set that can enforce the componentwise
# continuity of the gradient of a variable using the Lagrange multiplier method.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 20
ny = 10
ymax = 0.5
[]
[./box1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.51 1 0'
input = gen
[../]
[./box2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.49 0 0'
top_right = '1 1 0'
input = box1
[../]
[./iface_u]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 1
paired_block = 2
new_boundary = 10
input = box2
[../]
[]
[Variables]
[./u2]
block = 1
[./InitialCondition]
type = FunctionIC
function = 'r:=sqrt((x-0.4)^2+(y-0.5)^2);if(r<0.05,5,1)'
[../]
[../]
[./v2]
block = 2
initial_condition = 0.8
[../]
[./lambda]
[../]
[]
[Kernels]
[./u2_diff]
type = Diffusion
variable = u2
block = 1
[../]
[./u2_dt]
type = TimeDerivative
variable = u2
block = 1
[../]
[./v2_diff]
type = Diffusion
variable = v2
block = 2
[../]
[./v2_dt]
type = TimeDerivative
variable = v2
block = 2
[../]
[./lambda]
type = NullKernel
variable = lambda
[../]
[]
[InterfaceKernels]
[./iface]
type = InterfaceDiffusionBoundaryTerm
boundary = 10
variable = u2
neighbor_var = v2
[../]
[./lambda]
type = EqualGradientLagrangeMultiplier
variable = lambda
boundary = 10
element_var = u2
neighbor_var = v2
component = 0
[../]
[./constraint]
type = EqualGradientLagrangeInterface
boundary = 10
lambda = lambda
variable = u2
neighbor_var = v2
component = 0
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[VectorPostprocessors]
[./uv]
type = LineValueSampler
variable = 'u2 v2'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
sort_by = x
num_points = 100
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pctype -sub_pc_type -sub_pc_factor_shift_type -pc_factor_shift_type'
petsc_options_value = ' asm lu nonzero nonzero'
dt = 0.002
num_steps = 10
[]
[Outputs]
exodus = true
csv = true
hide = lambda
print_linear_residuals = false
[]
(modules/porous_flow/test/tests/hysteresis/hys_pc_03.i)
# Capillary-pressure calculation. Primary drying curve with low_extension_type = exponential
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0
xmax = 1
nx = 100
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = ''
[]
[]
[Variables]
[sat]
[]
[]
[ICs]
[sat]
type = FunctionIC
variable = sat
function = 'x'
[]
[]
[BCs]
[sat]
type = FunctionDirichletBC
variable = sat
function = 'x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = sat
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
[]
[pc_calculator]
type = PorousFlowHystereticInfo
alpha_d = 10.0
alpha_w = 10.0
n_d = 1.5
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 12.0
low_extension_type = exponential
sat_var = sat
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[pc]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[pc]
type = PorousFlowPropertyAux
variable = pc
property = hysteretic_info
[]
[]
[VectorPostprocessors]
[pc]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 10
sort_by = x
variable = 'sat pc'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(modules/porous_flow/test/tests/relperm/vangenuchten2.i)
# Test van Genuchten relative permeability curve by varying saturation over the mesh
# van Genuchten exponent m = 0.4 for both phases
# Phase 0 residual saturation s0r = 0.1
# Phase 1 residual saturation s1r = 0.2
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityVG
phase = 0
m = 0.4
s_res = 0.1
sum_s_res = 0.3
[]
[kr1]
type = PorousFlowRelativePermeabilityVG
phase = 1
m = 0.4
s_res = 0.2
sum_s_res = 0.3
wetting = false
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-7
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(test/tests/vectorpostprocessors/least_squares_fit/least_squares_fit.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./diff_v]
type = Diffusion
variable = v
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = left
value = 1
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = right
value = 0
[../]
[]
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
variable = 'u v'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = id
outputs = none
[../]
[./least_squares_fit_sample]
type = LeastSquaresFit
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
order = 1
num_samples = 20
output = samples
[../]
[./least_squares_fit_coeffs]
type = LeastSquaresFit
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
order = 1
output = coefficients
[../]
[./shift_and_scale_x_least_squares_fit_sample]
type = LeastSquaresFit
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
x_shift = 1
x_scale = 10
order = 1
num_samples = 20
output = samples
[../]
[./shift_and_scale_x_least_squares_fit_coeffs]
type = LeastSquaresFit
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
x_shift = 1
x_scale = 10
order = 1
output = coefficients
[../]
[./shift_and_scale_y_least_squares_fit_sample]
type = LeastSquaresFit
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
y_shift = 1
y_scale = 10
order = 1
num_samples = 20
output = samples
[../]
[./shift_and_scale_y_least_squares_fit_coeffs]
type = LeastSquaresFit
vectorpostprocessor = line_sample
x_name = 'id'
y_name = 'u'
y_shift = 1
y_scale = 10
order = 1
output = coefficients
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
file_base = out
execute_on = 'timestep_end'
csv = true
[]
(modules/porous_flow/test/tests/relperm/unity.i)
# Test perfectly mobile relative permeability curve by varying saturation over the mesh
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[kr1]
type = PorousFlowRelativePermeabilityConst
phase = 1
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-8
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/navier_stokes/test/tests/finite_volume/cns/pressure_outlet/subsonic_nozzle_fixed_inflow_hllc.i)
inlet_vel = 120
rho_in = 0.8719748696
H_in = 4.0138771448e+05
gamma = 1.4
R = 8.3145
molar_mass = 29e-3
R_specific = ${fparse R / molar_mass}
cp = ${fparse gamma * R_specific / (gamma - 1)}
cv = ${fparse cp / gamma}
T_in = ${fparse H_in / gamma / cv}
mass_flux = ${fparse inlet_vel * rho_in}
outlet_pressure = 0.9e5
[GlobalParams]
fp = fp
[]
[Debug]
show_material_props = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = subsonic_nozzle.e
[]
[]
[FluidProperties]
[fp]
type = IdealGasFluidProperties
[]
[]
[Variables]
[rho]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 0.8719748696
[]
[rho_u]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 1e-4
[]
[rho_v]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[rho_E]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 2.5e5
[]
[]
[FVKernels]
# Mass conservation
[mass_time]
type = FVTimeKernel
variable = rho
[]
[mass_advection]
type = CNSFVMassHLLC
variable = rho
[]
# Momentum x conservation
[momentum_x_time]
type = FVTimeKernel
variable = rho_u
[]
[momentum_x_advection]
type = CNSFVMomentumHLLC
variable = rho_u
momentum_component = x
[]
# Momentum y conservation
[momentum_y_time]
type = FVTimeKernel
variable = rho_v
[]
[momentum_y_advection]
type = CNSFVMomentumHLLC
variable = rho_v
momentum_component = y
[]
# Fluid energy conservation
[fluid_energy_time]
type = FVTimeKernel
variable = rho_E
[]
[fluid_energy_advection]
type = CNSFVFluidEnergyHLLC
variable = rho_E
[]
[]
[FVBCs]
## inflow boundaries
[mass_inflow]
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureMassBC
variable = rho
boundary = left
rhou = ${mass_flux}
rhov = 0
temperature = ${T_in}
[]
[momentum_x_inflow]
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureMomentumBC
variable = rho_u
boundary = left
rhou = ${mass_flux}
rhov = 0
temperature = ${T_in}
momentum_component = x
[]
[momentum_y_inflow]
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureMomentumBC
variable = rho_v
boundary = left
rhou = ${mass_flux}
rhov = 0
temperature = ${T_in}
momentum_component = y
[]
[fluid_energy_inflow]
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureFluidEnergyBC
variable = rho_E
boundary = left
rhou = ${mass_flux}
rhov = 0
temperature = ${T_in}
[]
## outflow conditions
[mass_outflow]
type = CNSFVHLLCSpecifiedPressureMassBC
variable = rho
boundary = right
pressure = ${outlet_pressure}
[]
[momentum_x_outflow]
type = CNSFVHLLCSpecifiedPressureMomentumBC
variable = rho_u
boundary = right
momentum_component = x
pressure = ${outlet_pressure}
[]
[momentum_y_outflow]
type = CNSFVHLLCSpecifiedPressureMomentumBC
variable = rho_v
boundary = right
momentum_component = y
pressure = ${outlet_pressure}
[]
[fluid_energy_outflow]
type = CNSFVHLLCSpecifiedPressureFluidEnergyBC
variable = rho_E
boundary = right
pressure = ${outlet_pressure}
[]
# wall conditions
[momentum_x_pressure_wall]
type = CNSFVMomImplicitPressureBC
variable = rho_u
momentum_component = x
boundary = wall
[]
[momentum_y_pressure_wall]
type = CNSFVMomImplicitPressureBC
variable = rho_v
momentum_component = y
boundary = wall
[]
[]
[AuxVariables]
[Ma]
family = MONOMIAL
order = CONSTANT
[]
[p]
family = MONOMIAL
order = CONSTANT
[]
[Ma_layered]
family = MONOMIAL
order = CONSTANT
[]
[]
[UserObjects]
[layered_Ma_UO]
type = LayeredAverage
variable = Ma
num_layers = 10
direction = x
[]
[]
[AuxKernels]
[Ma_aux]
type = NSMachAux
variable = Ma
fluid_properties = fp
use_material_properties = true
[]
[p_aux]
type = ADMaterialRealAux
variable = p
property = pressure
[]
[Ma_layered_aux]
type = SpatialUserObjectAux
variable = Ma_layered
user_object = layered_Ma_UO
[]
[]
[Materials]
[var_mat]
type = ConservedVarValuesMaterial
rho = rho
rhou = rho_u
rhov = rho_v
rho_et = rho_E
[]
[sound_speed]
type = SoundspeedMat
[]
[]
[Postprocessors]
[outflow_Ma]
type = SideAverageValue
variable = Ma
boundary = right
[]
[outflow_pressure]
type = SideAverageValue
variable = p
boundary = right
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[]
[Executioner]
type = Transient
end_time = 10
solve_type = NEWTON
nl_abs_tol = 1e-7
[TimeIntegrator]
type = ImplicitEuler
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 5e-3
optimal_iterations = 6
growth_factor = 1.5
[]
[]
[VectorPostprocessors]
[Ma_layered]
type = LineValueSampler
variable = Ma_layered
start_point = '0 0 0'
end_point = '3 0 0'
num_points = 100
sort_by = x
warn_discontinuous_face_values = false
[]
[]
[Outputs]
[out]
type = Exodus
execute_on = 'final'
[]
[]
(test/tests/outputs/hide_vector_pp/hide_vector_pp.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = CoefDiffusion
variable = u
coef = 0.1
[../]
[./time]
type = TimeDerivative
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Postprocessors]
[./pp]
type = NumElements
outputs = csv
[../]
[]
[VectorPostprocessors]
[./vpp]
type = LineValueSampler
variable = u
start_point = '0 0 0'
end_point = '1 1 0'
num_points = 10
sort_by = id
outputs = 'test'
[../]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
csv = true
[./test]
type = CSV
execute_on = 'FINAL'
[../]
[]
(modules/phase_field/examples/multiphase/GrandPotential3Phase_AD.i)
# This is an example of implementation of the multi-phase, multi-order parameter
# grand potential based phase-field model described in Phys. Rev. E, 98, 023309
# (2018). It includes 3 phases with 1 grain of each phase. This example was used
# to generate the results shown in Fig. 3 of the paper.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 60
xmin = -15
xmax = 15
[]
[Variables]
[w]
[]
[etaa0]
[]
[etab0]
[]
[etad0]
[]
[]
[ICs]
[IC_etaa0]
type = FunctionIC
variable = etaa0
function = ic_func_etaa0
[]
[IC_etab0]
type = FunctionIC
variable = etab0
function = ic_func_etab0
[]
[IC_etad0]
type = ConstantIC
variable = etad0
value = 0.1
[]
[IC_w]
type = FunctionIC
variable = w
function = ic_func_w
[]
[]
[Functions]
[ic_func_etaa0]
type = ADParsedFunction
value = '0.9*0.5*(1.0-tanh((x)/sqrt(2.0)))'
[]
[ic_func_etab0]
type = ADParsedFunction
value = '0.9*0.5*(1.0+tanh((x)/sqrt(2.0)))'
[]
[ic_func_w]
type = ADParsedFunction
value = 0
[]
[]
[Kernels]
# Order parameter eta_alpha0
[ACa0_bulk]
type = ADACGrGrMulti
variable = etaa0
v = 'etab0 etad0'
gamma_names = 'gab gad'
[]
[ACa0_sw]
type = ADACSwitching
variable = etaa0
Fj_names = 'omegaa omegab omegad'
hj_names = 'ha hb hd'
[]
[ACa0_int]
type = ADACInterface
variable = etaa0
kappa_name = kappa
variable_L = false
[]
[ea0_dot]
type = ADTimeDerivative
variable = etaa0
[]
# Order parameter eta_beta0
[ACb0_bulk]
type = ADACGrGrMulti
variable = etab0
v = 'etaa0 etad0'
gamma_names = 'gab gbd'
[]
[ACb0_sw]
type = ADACSwitching
variable = etab0
Fj_names = 'omegaa omegab omegad'
hj_names = 'ha hb hd'
[]
[ACb0_int]
type = ADACInterface
variable = etab0
kappa_name = kappa
variable_L = false
[]
[eb0_dot]
type = ADTimeDerivative
variable = etab0
[]
# Order parameter eta_delta0
[ACd0_bulk]
type = ADACGrGrMulti
variable = etad0
v = 'etaa0 etab0'
gamma_names = 'gad gbd'
[]
[ACd0_sw]
type = ADACSwitching
variable = etad0
Fj_names = 'omegaa omegab omegad'
hj_names = 'ha hb hd'
[]
[ACd0_int]
type = ADACInterface
variable = etad0
kappa_name = kappa
variable_L = false
[]
[ed0_dot]
type = ADTimeDerivative
variable = etad0
[]
#Chemical potential
[w_dot]
type = ADSusceptibilityTimeDerivative
variable = w
f_name = chi
[]
[Diffusion]
type = ADMatDiffusion
variable = w
diffusivity = Dchi
[]
[coupled_etaa0dot]
type = ADCoupledSwitchingTimeDerivative
variable = w
v = etaa0
Fj_names = 'rhoa rhob rhod'
hj_names = 'ha hb hd'
args = 'etaa0 etab0 etad0'
[]
[coupled_etab0dot]
type = ADCoupledSwitchingTimeDerivative
variable = w
v = etab0
Fj_names = 'rhoa rhob rhod'
hj_names = 'ha hb hd'
args = 'etaa0 etab0 etad0'
[]
[coupled_etad0dot]
type = ADCoupledSwitchingTimeDerivative
variable = w
v = etad0
Fj_names = 'rhoa rhob rhod'
hj_names = 'ha hb hd'
args = 'etaa0 etab0 etad0'
[]
[]
[Materials]
[ha_test]
type = ADSwitchingFunctionMultiPhaseMaterial
h_name = ha
all_etas = 'etaa0 etab0 etad0'
phase_etas = 'etaa0'
[]
[hb_test]
type = ADSwitchingFunctionMultiPhaseMaterial
h_name = hb
all_etas = 'etaa0 etab0 etad0'
phase_etas = 'etab0'
[]
[hd_test]
type = ADSwitchingFunctionMultiPhaseMaterial
h_name = hd
all_etas = 'etaa0 etab0 etad0'
phase_etas = 'etad0'
[]
[omegaa]
type = ADDerivativeParsedMaterial
args = 'w'
f_name = omegaa
material_property_names = 'Vm ka caeq'
function = '-0.5*w^2/Vm^2/ka-w/Vm*caeq'
derivative_order = 2
[]
[omegab]
type = ADDerivativeParsedMaterial
args = 'w'
f_name = omegab
material_property_names = 'Vm kb cbeq'
function = '-0.5*w^2/Vm^2/kb-w/Vm*cbeq'
derivative_order = 2
[]
[omegad]
type = ADDerivativeParsedMaterial
args = 'w'
f_name = omegad
material_property_names = 'Vm kd cdeq'
function = '-0.5*w^2/Vm^2/kd-w/Vm*cdeq'
derivative_order = 2
[]
[rhoa]
type = ADDerivativeParsedMaterial
args = 'w'
f_name = rhoa
material_property_names = 'Vm ka caeq'
function = 'w/Vm^2/ka + caeq/Vm'
derivative_order = 2
[]
[rhob]
type = ADDerivativeParsedMaterial
args = 'w'
f_name = rhob
material_property_names = 'Vm kb cbeq'
function = 'w/Vm^2/kb + cbeq/Vm'
derivative_order = 2
[]
[rhod]
type = ADDerivativeParsedMaterial
args = 'w'
f_name = rhod
material_property_names = 'Vm kd cdeq'
function = 'w/Vm^2/kd + cdeq/Vm'
derivative_order = 2
[]
[c]
type = ADParsedMaterial
material_property_names = 'Vm rhoa rhob rhod ha hb hd'
function = 'Vm * (ha * rhoa + hb * rhob + hd * rhod)'
f_name = c
[]
[const]
type = ADGenericConstantMaterial
prop_names = 'kappa_c kappa L D Vm ka caeq kb cbeq kd cdeq gab gad gbd mu tgrad_corr_mult'
prop_values = '0 1 1.0 1.0 1.0 10.0 0.1 10.0 0.9 10.0 0.5 1.5 1.5 1.5 1.0 0.0'
[]
[Mobility]
type = ADDerivativeParsedMaterial
f_name = Dchi
material_property_names = 'D chi'
function = 'D*chi'
derivative_order = 2
[]
[chi]
type = ADDerivativeParsedMaterial
f_name = chi
material_property_names = 'Vm ha(etaa0,etab0,etad0) ka hb(etaa0,etab0,etad0) kb hd(etaa0,etab0,etad0) kd'
function = '(ha/ka + hb/kb + hd/kd) / Vm^2'
args = 'etaa0 etab0 etad0'
derivative_order = 2
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[etaa0]
type = LineValueSampler
variable = etaa0
start_point = '-15 0 0'
end_point = '15 0 0'
num_points = 61
sort_by = x
execute_on = 'initial timestep_end final'
[]
[etab0]
type = LineValueSampler
variable = etab0
start_point = '-15 0 0'
end_point = '15 0 0'
num_points = 61
sort_by = x
execute_on = 'initial timestep_end final'
[]
[etad0]
type = LineValueSampler
variable = etad0
start_point = '-15 0 0'
end_point = '15 0 0'
num_points = 61
sort_by = x
execute_on = 'initial timestep_end final'
[]
[]
[Executioner]
type = Transient
nl_max_its = 15
scheme = bdf2
solve_type = NEWTON
petsc_options_iname = -pc_type
petsc_options_value = lu
l_max_its = 15
l_tol = 1.0e-3
nl_rel_tol = 1.0e-8
start_time = 0.0
num_steps = 20
nl_abs_tol = 1e-10
dt = 1.0
[]
[Outputs]
[exodus]
type = Exodus
execute_on = 'initial timestep_end final'
interval = 1
[]
[csv]
type = CSV
execute_on = 'initial timestep_end final'
interval = 1
[]
[]
(modules/porous_flow/test/tests/capillary_pressure/vangenuchten3.i)
# Test van Genuchten relative permeability curve by varying saturation over the mesh
# van Genuchten exponent m = 0.5 for both phases
# No residual saturation in either phase
[Mesh]
type = GeneratedMesh
dim = 1
nx = 500
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[p0aux]
family = MONOMIAL
order = CONSTANT
[]
[p1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[p0]
type = PorousFlowPropertyAux
property = pressure
phase = 0
variable = p0aux
[]
[p1]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = p1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1e-5
m = 0.5
sat_lr = 0.1
s_scale = 0.8
log_extension = false
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityVG
phase = 0
m = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
phase = 1
n = 2
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
variable = 's0aux s1aux p0aux p1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 500
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-6
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/porous_flow/examples/flow_through_fractured_media/coarse_3D.i)
# Flow and solute transport along 2 2D eliptical fractures embedded in a 3D porous matrix
# the model domain has dimensions 1 x 1 x 0.3m and the two fracture have r1 = 0.45 and r2 = 0.2
# The fractures intersect each other and the domain boundaries on two opposite sides
# fracture aperture = 6e-4m
# fracture porosity = 6e-4m
# fracture permeability = 1.8e-11 which is based in k=3e-8 from a**2/12, and k*a = 3e-8*6e-4;
# matrix porosity = 0.1;
# matrix permeanility = 1e-20;
[Mesh]
type = FileMesh
file = coarse_3D.e
block_id = '1 2 3'
block_name = 'matrix f1 f2'
boundary_id = '1 2 3 4'
boundary_name = 'rf2 lf1 right_matrix left_matrix'
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[pp]
[]
[tracer]
[]
[]
[AuxVariables]
[velocity_x]
family = MONOMIAL
order = CONSTANT
block = 'f1 f2'
[]
[velocity_y]
family = MONOMIAL
order = CONSTANT
block = 'f1 f2'
[]
[velocity_z]
family = MONOMIAL
order = CONSTANT
block = 'f1 f2'
[]
[]
[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
[]
[velocity_z]
type = PorousFlowDarcyVelocityComponentLowerDimensional
variable = velocity_z
component = z
aperture = 6E-4
[]
[]
[ICs]
[pp]
type = ConstantIC
variable = pp
value = 1e6
[]
[tracer]
type = ConstantIC
variable = tracer
value = 0
[]
[]
[BCs]
[top]
type = DirichletBC
value = 0
variable = tracer
boundary = rf2
[]
[bottom]
type = DirichletBC
value = 1
variable = tracer
boundary = lf1
[]
[ptop]
type = DirichletBC
variable = pp
boundary = rf2
value = 1e6
[]
[pbottom]
type = DirichletBC
variable = pp
boundary = lf1
value = 1.02e6
[]
[]
[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 = tracer
[]
[adv1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = tracer
[]
[diff1]
type = PorousFlowDispersiveFlux
fluid_component = 1
variable = tracer
disp_trans = 0
disp_long = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp tracer'
number_fluid_phases = 1
number_fluid_components = 2
[]
[]
[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 = 'tracer'
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[poro1]
type = PorousFlowPorosityConst
porosity = 6e-4 # = a * phif
block = 'f1 f2'
[]
[diff1]
type = PorousFlowDiffusivityConst
diffusion_coeff = '1.e-9 1.e-9'
tortuosity = 1.0
block = 'f1 f2'
[]
[poro2]
type = PorousFlowPorosityConst
porosity = 0.1
block = 'matrix'
[]
[diff2]
type = PorousFlowDiffusivityConst
diffusion_coeff = '1.e-9 1.e-9'
tortuosity = 0.1
block = 'matrix'
[]
[relp]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[permeability1]
type = PorousFlowPermeabilityConst
permeability = '1.8e-11 0 0 0 1.8e-11 0 0 0 1.8e-11' # 1.8e-11 = a * kf
block = 'f1 f2'
[]
[permeability2]
type = PorousFlowPermeabilityConst
permeability = '1e-20 0 0 0 1e-20 0 0 0 1e-20'
block = 'matrix'
[]
[]
[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 = 20
dt = 1
[]
[VectorPostprocessors]
[xmass]
type = LineValueSampler
start_point = '-0.5 0 0'
end_point = '0.5 0 0'
sort_by = x
num_points = 41
variable = tracer
outputs = csv
[]
[]
[Outputs]
[csv]
type = CSV
execute_on = 'final'
[]
[]
(modules/geochemistry/test/tests/spatial_reactor/spatial_5.i)
# demonstrating that sources may be spatially-dependent, but adding sources of fixed-activity species makes no difference to the system
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O H+ Cl-"
[]
[]
[SpatialReactionSolver]
model_definition = definition
charge_balance_species = "Cl-"
constraint_species = "H2O H+ Cl-"
constraint_value = " 55.5 1E-5 1E-5"
constraint_meaning = "bulk_composition activity bulk_composition"
constraint_unit = "moles dimensionless moles"
remove_fixed_activity_name = 'H+'
remove_fixed_activity_time = '2'
source_species_names = HCl
source_species_rates = HCl_rate
[]
[VectorPostprocessors]
[bulk_Cl]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
sort_by = x
num_points = 11
variable = 'bulk_moles_Cl-'
[]
[]
[AuxVariables]
[HCl_rate]
[]
[]
[AuxKernels]
[HCl_rate]
type = FunctionAux
variable = HCl_rate
function = '1E-5 * x'
execute_on = timestep_begin # so the Reactor gets the correct value
[]
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmax = 1
[]
[Executioner]
type = Transient
dt = 1
end_time = 2
[]
[Outputs]
csv = true
[]
(test/tests/functormaterials/smoother/test.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 1
xmax = 10
ymax = 1
[]
[]
[AuxVariables]
[checkerboard]
type = MooseVariableFVReal
[]
[smooth]
type = MooseVariableFVReal
[]
[]
[AuxKernels]
[checker]
type = ParsedAux
variable = checkerboard
# nonlinear growth to challenge the smoother a bit
expression = '2 + x * x * sin(PI * 10 * x)'
constant_names = 'PI'
constant_expressions = '3.14159265359'
use_xyzt = true
execute_on = 'TIMESTEP_BEGIN'
[]
[smooth]
type = FunctorAux
variable = smooth
functor = 'smoothed_functor'
execute_on = 'TIMESTEP_END'
[]
[]
[FunctorMaterials]
[smooth]
type = FunctorSmoother
functors_in = 'checkerboard'
functors_out = 'smoothed_functor'
# Using the face values will not smooth a checkerboard because the 'extreme' neighbor value are
# mixed with the element value
# Using the layered element average will smooth a checkerboard in 2D inside the volume, and fail to do so
# near the boundaries. In 1D it wont fix a checkboard as it does not average with the local value
# smoothing_technique = 'layered_elem_average'
smoothing_technique = 'remove_checkerboard'
# smoothing_technique = 'face_average'
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[VectorPostprocessors]
[line]
type = LineValueSampler
variable = 'smooth'
num_points = 100
start_point = '0.05 0.5 0'
end_point = '9.95 0.5 0'
sort_by = 'x'
[]
[]
[Outputs]
exodus = true
[out]
type = CSV
execute_on = 'TIMESTEP_END'
[]
[]
(modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_01_slippery.i)
# Beam bending. One end is clamped and the other end is subjected to
# a constant surface traction.
# The beam thickness is 1, and the Cosserat layer thickness is 0.5,
# so the beam contains 2 Cosserat layers.
# The joint normal stiffness is set very large and the shear stiffness very small
# so that the situation should be very close to a single beam of thickness
# 0.5.
# The deflection should be described by
# u_z = 2sx/G + 2s(1-nu^2)x^2(3L-x)/(Eh^2)
# wc_y = sx(x-2L)/(2B)
# Here
# s = applied shear stress = -2E-4
# x = coordinate along bar (0<=x<=10)
# G = shear modulus = E/2/(1+nu) = 0.4615
# nu = Poisson = 0.3
# L = length of bar = 10
# E = Young = 1.2
# h = Cosserat layer thickness = 0.5
[Mesh]
type = GeneratedMesh
dim = 3
nx = 80
xmax = 10
ny = 1
nz = 1
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./no_dispy]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'left'
value = 0.0
[../]
[./clamp_z]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./clamp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./end_traction]
type = VectorNeumannBC
variable = disp_z
vector_value = '-2E-4 0 0'
boundary = right
[../]
[]
[AuxVariables]
[./wc_x]
[../]
[./wc_z]
[../]
[./strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
[../]
[./strain_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xz
index_i = 0
index_j = 2
[../]
[./strain_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yx
index_i = 1
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yz
index_i = 1
index_j = 2
[../]
[./strain_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zx
index_i = 2
index_j = 0
[../]
[./strain_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zy
index_i = 2
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_z stress_xx stress_xz stress_zx stress_zz wc_y couple_stress_xx couple_stress_xz couple_stress_zx couple_stress_zz'
start_point = '0 0 0'
end_point = '10 0 0'
num_points = 11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.2
poisson = 0.3
layer_thickness = 0.5
joint_normal_stiffness = 1E16
joint_shear_stiffness = 1E-6
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol -sub_pc_factor_shift_type'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10 NONZERO'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = beam_cosserat_01_slippery
csv = true
exodus = true
[]
(modules/porous_flow/examples/multiapp_fracture_flow/diffusion_multiapp/fracture_app_heat.i)
# Heat energy from this fracture app is transferred to the matrix app
[Mesh]
[generate]
type = GeneratedMeshGenerator
dim = 1
nx = 100
xmin = 0
xmax = 50.0
[]
[]
[Variables]
[frac_T]
[]
[]
[ICs]
[frac_T]
type = FunctionIC
variable = frac_T
function = 'if(x<1E-6, 2, 0)' # delta function
[]
[]
[AuxVariables]
[transferred_matrix_T]
[]
[heat_to_matrix]
[]
[]
[Kernels]
[dot]
type = TimeDerivative
variable = frac_T
[]
[fracture_diffusion]
type = Diffusion
variable = frac_T
[]
[toMatrix]
type = PorousFlowHeatMassTransfer
variable = frac_T
v = transferred_matrix_T
transfer_coefficient = 0.004
[]
[]
[AuxKernels]
[heat_to_matrix]
type = ParsedAux
variable = heat_to_matrix
coupled_variables = 'frac_T transferred_matrix_T'
expression = '0.004 * (frac_T - transferred_matrix_T)'
[]
[]
[Preconditioning]
[entire_jacobian]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 100
end_time = 100
[]
[VectorPostprocessors]
[final_results]
type = LineValueSampler
start_point = '0 0 0'
end_point = '50 0 0'
num_points = 11
sort_by = x
variable = frac_T
outputs = final_csv
[]
[]
[Outputs]
print_linear_residuals = false
[final_csv]
type = CSV
sync_times = 100
sync_only = true
[]
[]
[MultiApps]
[matrix_app]
type = TransientMultiApp
input_files = matrix_app_heat.i
execute_on = TIMESTEP_END
[]
[]
[Transfers]
[heat_to_matrix]
type = MultiAppCopyTransfer
to_multi_app = matrix_app
source_variable = heat_to_matrix
variable = heat_from_frac
[]
[T_from_matrix]
type = MultiAppCopyTransfer
from_multi_app = matrix_app
source_variable = matrix_T
variable = transferred_matrix_T
[]
[]
(modules/porous_flow/test/tests/capillary_pressure/vangenuchten1.i)
# Test van Genuchten relative permeability curve by varying saturation over the mesh
# van Genuchten exponent m = 0.5 for both phases
# No residual saturation in either phase
[Mesh]
type = GeneratedMesh
dim = 1
nx = 500
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[p0aux]
family = MONOMIAL
order = CONSTANT
[]
[p1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[p0]
type = PorousFlowPropertyAux
property = pressure
phase = 0
variable = p0aux
[]
[p1]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = p1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1e-5
m = 0.5
sat_lr = 0.1
log_extension = false
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityVG
phase = 0
m = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
phase = 1
n = 2
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
variable = 's0aux s1aux p0aux p1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 500
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-6
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/porous_flow/test/tests/hysteresis/hys_pc_01.i)
# Capillary-pressure calculation. Primary drying curve with low_extension_type = none
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0
xmax = 1
nx = 100
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = ''
[]
[]
[Variables]
[sat]
[]
[]
[ICs]
[sat]
type = FunctionIC
variable = sat
function = 'x'
[]
[]
[BCs]
[sat]
type = FunctionDirichletBC
variable = sat
function = 'x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = sat
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
[]
[pc_calculator]
type = PorousFlowHystereticInfo
alpha_d = 10.0
alpha_w = 10.0
n_d = 1.5
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 12.0
low_extension_type = none
sat_var = sat
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[pc]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[pc]
type = PorousFlowPropertyAux
variable = pc
property = hysteretic_info
[]
[]
[VectorPostprocessors]
[pc]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 10
sort_by = x
variable = 'sat pc'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(modules/porous_flow/test/tests/capillary_pressure/brooks_corey1.i)
# Test Brooks-Corey capillary pressure curve by varying saturation over the mesh
# lambda = 2, sat_lr = 0.1, log_extension = false
[Mesh]
type = GeneratedMesh
dim = 1
nx = 500
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[p0aux]
family = MONOMIAL
order = CONSTANT
[]
[p1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[p0]
type = PorousFlowPropertyAux
property = pressure
phase = 0
variable = p0aux
[]
[p1]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = p1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureBC
lambda = 2
log_extension = false
pe = 1e5
sat_lr = 0.1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityVG
phase = 0
m = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
phase = 1
n = 2
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
variable = 's0aux s1aux p0aux p1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 500
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-6
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(test/tests/bcs/vectorpostprocessor/vectorpostprocessor.i)
[Mesh]
type = GeneratedMesh
nx = 10
ny = 10
xmax = 1
ymax = 1
dim = 2
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[Kernels]
[./conv]
type = ConservativeAdvection
variable = u
velocity = '0 1 0'
[../]
[./diff]
type = Diffusion
variable = u
[../]
[./src]
type = BodyForce
variable = u
function = ffn
[../]
[./diffv]
type = Diffusion
variable = v
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = bottom
value = 2
[../]
[./right]
type = ChannelGradientBC
variable = u
boundary = right
channel_gradient_pps = channel_gradient
axis = y
h_name = h
[../]
[./top]
type = OutflowBC
variable = u
boundary = top
velocity = '0 1 0'
[../]
[./leftv]
type = DirichletBC
variable = v
boundary = left
value = 0
[../]
[./rightv]
type = DirichletBC
variable = v
boundary = right
value = 1
[../]
[]
[Materials]
[./mat]
type = GenericConstantMaterial
prop_names = 'h'
#Nu = 4
#k = 1
#half_channel_length = 0.5
#h=Nu*k/half_channel_length
prop_values = '8'
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./lv1]
num_points = 30
start_point = '0 0 0'
end_point = '0 1 0'
sort_by = 'y'
variable = u
type = LineValueSampler
execute_on = 'timestep_begin nonlinear timestep_end linear'
[../]
[./lv2]
num_points = 30
start_point = '1 0 0'
end_point = '1 1 0'
sort_by = 'y'
variable = v
type = LineValueSampler
execute_on = 'timestep_begin nonlinear timestep_end linear'
[../]
[./channel_gradient]
lv1 = lv1
lv2 = lv2
var1 = u
var2 = v
axis = y
type = ChannelGradientVectorPostprocessor
execute_on = 'timestep_begin nonlinear timestep_end linear'
[../]
[]
[Functions]
[./ffn]
type = ParsedFunction
expression = '1'
[../]
[]
(modules/porous_flow/test/tests/heat_advection/heat_advection_1d_fullsat.i)
# 1phase, heat advecting with a moving fluid
# Full upwinding is used, as implemented by the PorousFlowFullySaturatedUpwindHeatAdvection added
# In this case, the results should be identical to the case when the PorousFlowHeatAdvection Kernel is used.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 50
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[temp]
initial_condition = 200
[]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = '1-x'
[]
[]
[BCs]
[pp0]
type = DirichletBC
variable = pp
boundary = left
value = 1
[]
[pp1]
type = DirichletBC
variable = pp
boundary = right
value = 0
[]
[spit_heat]
type = DirichletBC
variable = temp
boundary = left
value = 300
[]
[suck_heat]
type = DirichletBC
variable = temp
boundary = right
value = 200
[]
[]
[Kernels]
[mass_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[advection]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pp
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[heat_advection]
type = PorousFlowFullySaturatedUpwindHeatAdvection
variable = temp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pp'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.6
alpha = 1.3
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 100
density0 = 1000
viscosity = 4.4
thermal_expansion = 0
cv = 2
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.0
density = 125
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 2 0 0 0 3'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
[]
[massfrac]
type = PorousFlowMassFraction
[]
[PS]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres bjacobi 1E-15 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 0.01
end_time = 0.6
[]
[VectorPostprocessors]
[T]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 51
sort_by = x
variable = temp
[]
[]
[Outputs]
[csv]
type = CSV
sync_times = '0.1 0.6'
sync_only = true
[]
[]
(modules/porous_flow/test/tests/newton_cooling/nc02.i)
# Newton cooling from a bar. 1-phase steady
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1000
ny = 1
xmin = 0
xmax = 100
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pressure'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[Variables]
[pressure]
[]
[]
[ICs]
[pressure]
type = FunctionIC
variable = pressure
function = '(2-x/100)*1E6'
[]
[]
[Kernels]
[flux]
type = PorousFlowAdvectiveFlux
fluid_component = 0
gravity = '0 0 0'
variable = pressure
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1e6
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-15 0 0 0 1E-15 0 0 0 1E-15'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey # irrelevant in this fully-saturated situation
n = 2
phase = 0
[]
[]
[BCs]
[left]
type = DirichletBC
variable = pressure
boundary = left
value = 2E6
[]
[newton]
type = PorousFlowPiecewiseLinearSink
variable = pressure
boundary = right
pt_vals = '0 100000 200000 300000 400000 500000 600000 700000 800000 900000 1000000 1100000 1200000 1300000 1400000 1500000 1600000 1700000 1800000 1900000 2000000'
multipliers = '0. 5.6677197748570516e-6 0.000011931518841831313 0.00001885408740732065 0.000026504708864284114 0.000034959953203725676 0.000044304443352900224 0.00005463170211001232 0.00006604508815181467 0.00007865883048198513 0.00009259917167338928 0.00010800563134618119 0.00012503240252705603 0.00014384989486488752 0.00016464644014777016 0.00018763017719085535 0.0002130311349595711 0.00024110353477682344 0.00027212833465544285 0.00030641604122040985 0.00034430981736352295'
use_mobility = false
use_relperm = false
fluid_phase = 0
flux_function = 1
[]
[]
[VectorPostprocessors]
[porepressure]
type = LineValueSampler
variable = pressure
start_point = '0 0.5 0'
end_point = '100 0.5 0'
sort_by = x
num_points = 20
execute_on = timestep_end
[]
[]
[Preconditioning]
active = 'andy'
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_max_it -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol '
petsc_options_value = 'gmres asm lu 100 NONZERO 2 1E-12 1E-15'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
file_base = nc02
execute_on = timestep_end
exodus = false
[along_line]
type = CSV
execute_vector_postprocessors_on = timestep_end
[]
[]
(modules/porous_flow/examples/thm_example/2D.i)
# Two phase, temperature-dependent, with mechanics, radial with fine mesh, constant injection of cold co2 into a overburden-reservoir-underburden containing mostly water
# species=0 is water
# species=1 is co2
# phase=0 is liquid, and since massfrac_ph0_sp0 = 1, this is all water
# phase=1 is gas, and since massfrac_ph1_sp0 = 0, this is all co2
#
# The mesh used below has very high resolution, so the simulation takes a long time to complete.
# Some suggested meshes of different resolution:
# nx=50, bias_x=1.2
# nx=100, bias_x=1.1
# nx=200, bias_x=1.05
# nx=400, bias_x=1.02
# nx=1000, bias_x=1.01
# nx=2000, bias_x=1.003
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2000
bias_x = 1.003
xmin = 0.1
xmax = 5000
ny = 1
ymin = 0
ymax = 11
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
gravity = '0 0 0'
biot_coefficient = 1.0
[]
[Variables]
[pwater]
initial_condition = 18.3e6
[]
[sgas]
initial_condition = 0.0
[]
[temp]
initial_condition = 358
[]
[disp_r]
[]
[]
[AuxVariables]
[rate]
[]
[disp_z]
[]
[massfrac_ph0_sp0]
initial_condition = 1 # all H20 in phase=0
[]
[massfrac_ph1_sp0]
initial_condition = 0 # no H2O in phase=1
[]
[pgas]
family = MONOMIAL
order = FIRST
[]
[swater]
family = MONOMIAL
order = FIRST
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_tt]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[mass_water_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux_water]
type = PorousFlowAdvectiveFlux
fluid_component = 0
use_displaced_mesh = false
variable = pwater
[]
[mass_co2_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = sgas
[]
[flux_co2]
type = PorousFlowAdvectiveFlux
fluid_component = 1
use_displaced_mesh = false
variable = sgas
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[advection]
type = PorousFlowHeatAdvection
use_displaced_mesh = false
variable = temp
[]
[conduction]
type = PorousFlowExponentialDecay
use_displaced_mesh = false
variable = temp
reference = 358
rate = rate
[]
[grad_stress_r]
type = StressDivergenceRZTensors
temperature = temp
eigenstrain_names = thermal_contribution
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[poro_r]
type = PorousFlowEffectiveStressCoupling
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[]
[AuxKernels]
[rate]
type = FunctionAux
variable = rate
execute_on = timestep_begin
function = decay_rate
[]
[pgas]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = pgas
[]
[swater]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = swater
[]
[stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[]
[stress_tt]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_tt
index_i = 2
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 1
index_j = 1
[]
[]
[Functions]
[decay_rate]
# Eqn(26) of the first paper of LaForce et al.
# Ka * (rho C)_a = 10056886.914
# h = 11
type = ParsedFunction
expression = 'sqrt(10056886.914/t)/11.0'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pwater sgas disp_r'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[FluidProperties]
[water]
type = SimpleFluidProperties
bulk_modulus = 2.27e14
density0 = 970.0
viscosity = 0.3394e-3
cv = 4149.0
cp = 4149.0
porepressure_coefficient = 0.0
thermal_expansion = 0
[]
[co2]
type = SimpleFluidProperties
bulk_modulus = 2.27e14
density0 = 516.48
viscosity = 0.0393e-3
cv = 2920.5
cp = 2920.5
porepressure_coefficient = 0.0
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = pwater
phase1_saturation = sgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = water
phase = 0
[]
[gas]
type = PorousFlowSingleComponentFluid
fp = co2
phase = 1
[]
[porosity_reservoir]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[permeability_reservoir]
type = PorousFlowPermeabilityConst
permeability = '2e-12 0 0 0 0 0 0 0 0'
[]
[relperm_liquid]
type = PorousFlowRelativePermeabilityCorey
n = 4
phase = 0
s_res = 0.200
sum_s_res = 0.405
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityBC
phase = 1
s_res = 0.205
sum_s_res = 0.405
nw_phase = true
lambda = 2
[]
[thermal_conductivity_reservoir]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 1.320 0 0 0 0'
wet_thermal_conductivity = '0 0 0 0 3.083 0 0 0 0'
[]
[internal_energy_reservoir]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1100
density = 2350.0
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
shear_modulus = 6.0E9
poissons_ratio = 0.2
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
eigenstrain_names = 'thermal_contribution ini_stress'
[]
[ini_strain]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-12.8E6 0 0 0 -51.3E6 0 0 0 -12.8E6'
eigenstrain_name = ini_stress
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temp
stress_free_temperature = 358
thermal_expansion_coeff = 5E-6
eigenstrain_name = thermal_contribution
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[]
[BCs]
[outer_pressure_fixed]
type = DirichletBC
boundary = right
value = 18.3e6
variable = pwater
[]
[outer_saturation_fixed]
type = DirichletBC
boundary = right
value = 0.0
variable = sgas
[]
[outer_temp_fixed]
type = DirichletBC
boundary = right
value = 358
variable = temp
[]
[fixed_outer_r]
type = DirichletBC
variable = disp_r
value = 0
boundary = right
[]
[co2_injection]
type = PorousFlowSink
boundary = left
variable = sgas
use_mobility = false
use_relperm = false
fluid_phase = 1
flux_function = 'min(t/100.0,1)*(-2.294001475)' # 5.0E5 T/year = 15.855 kg/s, over area of 2Pi*0.1*11
[]
[cold_co2]
type = DirichletBC
boundary = left
variable = temp
value = 294
[]
[cavity_pressure_x]
type = Pressure
boundary = left
variable = disp_r
component = 0
postprocessor = p_bh # note, this lags
use_displaced_mesh = false
[]
[]
[Postprocessors]
[p_bh]
type = PointValue
variable = pwater
point = '0.1 0 0'
execute_on = timestep_begin
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[ptsuss]
type = LineValueSampler
use_displaced_mesh = false
start_point = '0.1 0 0'
end_point = '5000 0 0'
sort_by = x
num_points = 50000
outputs = csv
variable = 'pwater temp sgas disp_r stress_rr stress_tt'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
#petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E2 1E-5 500'
[]
[mumps]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -pc_factor_mat_solver_package -pc_factor_shift_type -snes_rtol -snes_atol -snes_max_it'
petsc_options_value = 'gmres lu mumps NONZERO 1E-5 1E2 50'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1.5768e8
#dtmax = 1e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
growth_factor = 1.1
[]
[]
[Outputs]
print_linear_residuals = false
sync_times = '3600 86400 2.592E6 1.5768E8'
perf_graph = true
exodus = true
[csv]
type = CSV
sync_only = true
[]
[]
(modules/phase_field/test/tests/KKS_system/two_phase.i)
#
# This test ensures that the equilibrium solution using the dedicated two phase
# formulation is identical to the two order parameters with a Lagrange multiplier
# constraint in lagrange_multiplier.i
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 5
[]
[AuxVariables]
[Fglobal]
order = CONSTANT
family = MONOMIAL
[]
[]
[Variables]
# order parameter
[eta]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
# hydrogen concentration
[c]
order = FIRST
family = LAGRANGE
[InitialCondition]
type = FunctionIC
function = x/5
[]
[]
# chemical potential
[w]
order = FIRST
family = LAGRANGE
[]
# hydrogen phase concentration (matrix)
[cm]
order = FIRST
family = LAGRANGE
initial_condition = 0.2
[]
# hydrogen phase concentration (delta phase)
[cd]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
[]
[Materials]
# Free energy of the matrix
[fm]
type = DerivativeParsedMaterial
property_name = fm
coupled_variables = 'cm'
expression = '(0.1-cm)^2'
[]
# Free energy of the delta phase
[fd]
type = DerivativeParsedMaterial
property_name = fd
coupled_variables = 'cd'
expression = '(0.9-cd)^2'
[]
# h(eta)
[h_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta
[]
# g(eta)
[g_eta]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta
[]
# constant properties
[constants]
type = GenericConstantMaterial
prop_names = 'M L kappa'
prop_values = '0.7 0.7 0.4 '
[]
[]
[Kernels]
# full transient
active = 'PhaseConc ChemPotVacancies CHBulk ACBulkF ACBulkC ACInterface dcdt detadt ckernel'
# enforce c = (1-h(eta))*cm + h(eta)*cd
[PhaseConc]
type = KKSPhaseConcentration
ca = cm
variable = cd
c = c
eta = eta
[]
# enforce pointwise equality of chemical potentials
[ChemPotVacancies]
type = KKSPhaseChemicalPotential
variable = cm
cb = cd
fa_name = fm
fb_name = fd
[]
#
# Cahn-Hilliard Equation
#
[CHBulk]
type = KKSSplitCHCRes
variable = c
ca = cm
fa_name = fm
w = w
[]
[dcdt]
type = CoupledTimeDerivative
variable = w
v = c
[]
[ckernel]
type = SplitCHWRes
mob_name = M
variable = w
[]
#
# Allen-Cahn Equation
#
[ACBulkF]
type = KKSACBulkF
variable = eta
fa_name = fm
fb_name = fd
coupled_variables = 'cm cd'
w = 0.4
[]
[ACBulkC]
type = KKSACBulkC
variable = eta
ca = cm
cb = cd
fa_name = fm
mob_name = L
[]
[ACInterface]
type = ACInterface
variable = eta
kappa_name = kappa
mob_name = L
[]
[detadt]
type = TimeDerivative
variable = eta
[]
[]
[AuxKernels]
[GlobalFreeEnergy]
variable = Fglobal
type = KKSGlobalFreeEnergy
fa_name = fm
fb_name = fd
w = 0.4
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pctype -sub_pc_type -sub_pc_factor_shift_type -pc_factor_shift_type'
petsc_options_value = ' asm lu nonzero nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-10
nl_abs_tol = 1.0e-11
num_steps = 35
dt = 10
[]
#
# Precondition using handcoded off-diagonal terms
#
[Preconditioning]
[full]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[c]
type = LineValueSampler
variable = c
start_point = '0 0 0'
end_point = '5 0 0'
num_points = 21
sort_by = x
[]
[]
[Outputs]
csv = true
execute_on = FINAL
[]
(modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_2D_trimesh.i)
# Using flux-limited TVD advection ala Kuzmin and Turek, mploying PorousFlow Kernels and UserObjects, with superbee flux-limiter
# 2D version
[Mesh]
type = FileMesh
file = trimesh.msh
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
block = '50'
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.305,0,1))'
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = tracer
[]
[flux0]
type = PorousFlowFluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = advective_flux_calculator_0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = porepressure
[]
[flux1]
type = PorousFlowFluxLimitedTVDAdvection
variable = porepressure
advective_flux_calculator = advective_flux_calculator_1
[]
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure tracer'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[advective_flux_calculator_0]
type = PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 0
[]
[advective_flux_calculator_1]
type = PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = tracer
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = the_simple_fluid
phase = 0
[]
[relperm]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0.04 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
print_linear_residuals = false
[out]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/numerical_diffusion/no_action.i)
# Using upwinded and mass-lumped PorousFlow Kernels: this is equivalent of fully_saturated_action.i with stabilization = Full
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = tracer
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = tracer
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = porepressure
[]
[flux1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = porepressure
[]
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure tracer'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = tracer
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = the_simple_fluid
phase = 0
[]
[relperm]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-1
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(test/tests/executioners/nullspace/singular.i)
[Mesh]
type = GeneratedMesh
dim = 1
xmin = 0
xmax = 10
nx = 8
[]
[Problem]
null_space_dimension = 1
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./eig]
type = MassEigenKernel
variable = u
eigen_postprocessor = 1.0002920196258376e+01
eigen = false
[../]
[./force]
type = CoupledForce
variable = u
v = aux_v
[../]
[]
[AuxVariables]
[./aux_v]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = eigen_mode
[../]
[../]
[]
[AuxKernels]
[./set_source]
type = FunctionAux
variable = aux_v
function = second_harmonic
execute_on = timestep_begin
[../]
[]
[Functions]
[./eigen_mode]
type = ParsedFunction
expression = 'sqrt(2.0 / L) * sin(mode * pi * x / L)'
symbol_names = 'L mode'
symbol_values = '10 1'
[../]
[./second_harmonic]
type = ParsedFunction
expression = 'sqrt(2.0 / L) * sin(mode * pi * x / L)'
symbol_names = 'L mode'
symbol_values = '10 2'
[../]
[]
[BCs]
[./homogeneous]
type = DirichletBC
variable = u
boundary = '0 1'
value = 0
[../]
[]
[VectorPostprocessors]
[./sample_solution]
type = LineValueSampler
variable = u
start_point = '0 0 0'
end_point = '10 0 0'
sort_by = x
num_points = 9
execute_on = timestep_end
[../]
[]
[Preconditioning]
[./prec]
type = SMP
full = true
[../]
[]
[Executioner]
type = SteadyWithNull
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_pc_side -snes_type -ksp_norm_type'
petsc_options_value = 'hypre boomeramg left ksponly preconditioned'
nl_rel_tol = 1.0e-14
nl_abs_tol = 1.0e-14
[]
[Outputs]
execute_on = 'timestep_end'
csv = true
[]
(modules/porous_flow/test/tests/sinks/s09_fully_saturated.i)
# Apply a piecewise-linear sink flux to the right-hand side and watch fluid flow to it
#
# This test has a single phase with two components. The test initialises with
# the porous material fully filled with component=1. The left-hand side is fixed
# at porepressure=1 and mass-fraction of the zeroth component being unity.
# The right-hand side has a very strong piecewise-linear flux that keeps the
# porepressure~0 at that side. Fluid mass is extracted by this flux in proportion
# to the fluid component mass fraction.
#
# Therefore, the zeroth fluid component will flow from left to right (down the
# pressure gradient).
#
# The important DE is
# porosity * dc/dt = (perm / visc) * grad(P) * grad(c)
# which is true for c = mass-fraction, and very large bulk modulus of the fluid.
# For grad(P) constant in time and space (as in this example) this is just the
# advection equation for c, with velocity = perm / visc / porosity. The parameters
# are chosen to velocity = 1 m/s.
# In the numerical world, and especially with full upwinding, the advection equation
# suffers from diffusion. In this example, the diffusion is obvious when plotting
# the mass-fraction along the line, but the average velocity of the front is still
# correct at 1 m/s.
# This test uses the FullySaturated version of the flow Kernel. This does not
# suffer from as much numerical diffusion as the standard PorousFlow Kernel since
# it does not employ any upwinding.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp frac'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Variables]
[pp]
[]
[frac]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = 1-x
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = frac
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = pp
[]
[flux0]
type = PorousFlowFullySaturatedDarcyFlow
fluid_component = 0
gravity = '0 0 0'
variable = frac
[]
[flux1]
type = PorousFlowFullySaturatedDarcyFlow
fluid_component = 1
gravity = '0 0 0'
variable = pp
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1e10 # need large in order for constant-velocity advection
density0 = 1 # almost irrelevant, except that the ability of the right BC to keep P fixed at zero is related to density_P0
thermal_expansion = 0
viscosity = 11
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = frac
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 1.1 0 0 0 1.1'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 2 # irrelevant in this fully-saturated situation
phase = 0
[]
[]
[BCs]
[lhs_fixed_a]
type = DirichletBC
boundary = 'left'
variable = frac
value = 1
[]
[lhs_fixed_b]
type = DirichletBC
boundary = 'left'
variable = pp
value = 1
[]
[flux0]
type = PorousFlowPiecewiseLinearSink
boundary = 'right'
pt_vals = '-100 100'
multipliers = '-1 1'
variable = frac # the zeroth comonent
mass_fraction_component = 0
use_mobility = false
use_relperm = false
fluid_phase = 0
flux_function = 1E4
[]
[flux1]
type = PorousFlowPiecewiseLinearSink
boundary = 'right'
pt_vals = '-100 100'
multipliers = '-1 1'
variable = pp # comonent 1
mass_fraction_component = 1
use_mobility = false
use_relperm = false
fluid_phase = 0
flux_function = 1E4
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_max_it -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = 'gmres asm lu 10000 NONZERO 2'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1E-2
end_time = 1
nl_rel_tol = 1E-11
nl_abs_tol = 1E-11
[]
[VectorPostprocessors]
[mf]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 100
sort_by = x
variable = frac
[]
[]
[Outputs]
file_base = s09_fully_saturated
[console]
type = Console
execute_on = 'nonlinear linear'
[]
[csv]
type = CSV
sync_times = '0.1 0.5 1'
sync_only = true
[]
time_step_interval = 10
[]
(modules/porous_flow/test/tests/numerical_diffusion/fltvd_no_antidiffusion.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek, but without any antidiffusion
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[Variables]
[tracer]
[]
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
[]
[flux]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo
[]
[]
[UserObjects]
[fluo]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = none
u = tracer
velocity = '0.1 0 0'
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-1
nl_abs_tol = 1E-8
nl_max_its = 500
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(modules/combined/test/tests/optimization/invOpt_bc_convective/forward.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 20
xmax = 1
ymax = 2
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[heat_conduction]
type = ADHeatConduction
variable = temperature
[]
[]
[BCs]
[left]
type = ConvectiveFluxFunction
variable = temperature
boundary = 'left'
T_infinity = 100.0
coefficient = function1
[]
[right]
type = NeumannBC
variable = temperature
boundary = right
value = -100
[]
[bottom]
type = DirichletBC
variable = temperature
boundary = bottom
value = 500
[]
[top]
type = DirichletBC
variable = temperature
boundary = top
value = 600
[]
[]
[Materials]
[steel]
type = ADGenericConstantMaterial
prop_names = thermal_conductivity
prop_values = 5
[]
[]
[Executioner]
type = Steady
solve_type = PJFNK
nl_abs_tol = 1e-6
nl_rel_tol = 1e-8
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Functions]
[function1]
type = ParsedOptimizationFunction
expression = 'a'
param_symbol_names = 'a'
param_vector_name = 'params/vals'
[]
[]
[VectorPostprocessors]
[vertical]
type = LineValueSampler
variable = 'temperature'
start_point = '0.1 0.0 0.0'
end_point = '0.1 2.0 0.0'
num_points = 21
sort_by = id
[]
[]
[Reporters]
[measure_data]
type = OptimizationData
objective_name = objective_value
variable = temperature
[]
[params]
type = ConstantReporter
real_vector_names = 'vals'
real_vector_values = '0' # Dummy value
[]
[]
[Outputs]
csv = true
exodus = false
console = false
file_base = 'forward'
[]
(modules/porous_flow/examples/multiapp_fracture_flow/diffusion_multiapp/two_vars.i)
# Heat transfer between matrix and fracture, with the matrix and fracture being identical spatial domains, but a multiapp approach is not used
[Mesh]
[generate]
type = GeneratedMeshGenerator
dim = 1
nx = 100
xmin = 0
xmax = 50.0
[]
[]
[Variables]
[frac_T]
[]
[matrix_T]
[]
[]
[ICs]
[frac_T]
type = FunctionIC
variable = frac_T
function = 'if(x<0.5, 2, 0)' # delta function
[]
[]
[Kernels]
[dot_frac]
type = TimeDerivative
variable = frac_T
[]
[frac_diffusion]
type = Diffusion
variable = frac_T
[]
[toMatrix]
type = PorousFlowHeatMassTransfer
variable = frac_T
v = matrix_T
transfer_coefficient = 0.004
[]
[dot_matrix]
type = TimeDerivative
variable = matrix_T
[]
[matrix_diffusion]
type = Diffusion
variable = matrix_T
[]
[toFrac]
type = PorousFlowHeatMassTransfer
variable = matrix_T
v = frac_T
transfer_coefficient = 0.004
[]
[]
[Preconditioning]
[entire_jacobian]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 100
end_time = 100
[]
[VectorPostprocessors]
[final_results]
type = LineValueSampler
start_point = '0 0 0'
end_point = '50 0 0'
num_points = 11
sort_by = x
variable = 'frac_T matrix_T'
outputs = final_csv
[]
[]
[Outputs]
print_linear_residuals = false
[final_csv]
type = CSV
sync_times = 100
sync_only = true
[]
[]
(modules/porous_flow/test/tests/sinks/injection_production_eg.i)
# phase = 0 is liquid phase
# phase = 1 is gas phase
# fluid_component = 0 is water
# fluid_component = 1 is CO2
# Constant rate of CO2 injection into the left boundary
# 1D mesh
# The PorousFlowPiecewiseLinearSinks remove the correct water and CO2 from the right boundary
# Note i take pretty big timesteps here so the system is quite nonlinear
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[AuxVariables]
[saturation_gas]
order = CONSTANT
family = MONOMIAL
[]
[frac_water_in_liquid]
initial_condition = 1.0
[]
[frac_water_in_gas]
initial_condition = 0.0
[]
[]
[AuxKernels]
[saturation_gas]
type = PorousFlowPropertyAux
variable = saturation_gas
property = saturation
phase = 1
execute_on = timestep_end
[]
[]
[Variables]
[pwater]
initial_condition = 20E6
[]
[pgas]
initial_condition = 20.1E6
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pwater
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = pgas
[]
[flux1]
type = PorousFlowAdvectiveFlux
fluid_component = 1
variable = pgas
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pgas pwater'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1E-6
m = 0.6
[]
[]
[FluidProperties]
[true_water]
type = Water97FluidProperties
[]
[tabulated_water]
type = TabulatedBicubicFluidProperties
fp = true_water
temperature_min = 275
pressure_max = 1E8
interpolated_properties = 'density viscosity enthalpy internal_energy'
fluid_property_output_file = water97_tabulated_11.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = water97_tabulated_11.csv
[]
[true_co2]
type = CO2FluidProperties
[]
[tabulated_co2]
type = TabulatedBicubicFluidProperties
fp = true_co2
temperature_min = 275
pressure_max = 1E8
interpolated_properties = 'density viscosity enthalpy internal_energy'
fluid_property_output_file = co2_tabulated_11.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = co2_tabulated_11.csv
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = 293.15
[]
[saturation_calculator]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = pgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'frac_water_in_liquid frac_water_in_gas'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = tabulated_water
phase = 0
[]
[co2]
type = PorousFlowSingleComponentFluid
fp = tabulated_co2
phase = 1
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1e-12 0 0 0 1e-12 0 0 0 1e-12'
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
s_res = 0.1
sum_s_res = 0.2
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityBC
nw_phase = true
lambda = 2
s_res = 0.1
sum_s_res = 0.2
phase = 1
[]
[]
[BCs]
[co2_injection]
type = PorousFlowSink
boundary = left
variable = pgas # pgas is associated with the CO2 mass balance (fluid_component = 1 in its Kernels)
flux_function = -1E-2 # negative means a source, rather than a sink
[]
[right_water]
type = PorousFlowPiecewiseLinearSink
boundary = right
# a sink of water, since the Kernels given to pwater are for fluid_component = 0 (the water)
variable = pwater
# this Sink is a function of liquid porepressure
# Also, all the mass_fraction, mobility and relperm are referenced to the liquid phase now
fluid_phase = 0
# Sink strength = (Pwater - 20E6)
pt_vals = '0 1E9'
multipliers = '0 1E9'
PT_shift = 20E6
# multiply Sink strength computed above by mass fraction of water at the boundary
mass_fraction_component = 0
# also multiply Sink strength by mobility of the liquid
use_mobility = true
# also multiply Sink strength by the relperm of the liquid
use_relperm = true
# also multiplly Sink strength by 1/L, where L is the distance to the fixed-porepressure external environment
flux_function = 10 # 1/L
[]
[right_co2]
type = PorousFlowPiecewiseLinearSink
boundary = right
variable = pgas
fluid_phase = 1
pt_vals = '0 1E9'
multipliers = '0 1E9'
PT_shift = 20.1E6
mass_fraction_component = 1
use_mobility = true
use_relperm = true
flux_function = 10 # 1/L
[]
[]
[Preconditioning]
active = 'basic'
[basic]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
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'
[]
[preferred]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu mumps'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
nl_abs_tol = 1E-13
nl_rel_tol = 1E-10
end_time = 1e4
[TimeStepper]
type = IterationAdaptiveDT
dt = 1E4
growth_factor = 1.1
[]
[]
[VectorPostprocessors]
[pps]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0 0 0'
end_point = '20 0 0'
num_points = 20
sort_by = x
variable = 'pgas pwater saturation_gas'
[]
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
[out]
type = CSV
execute_on = final
[]
[]
(modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZQuadratic.i)
#
# This test checks whether the ComputeReducedOrderEigenstrain is functioning properly.
#
# If instead of 'reduced_order_eigenstrain', 'thermal_eigenstrain' is given to
# eigenstrain_names in the Physics/SolidMechanics/QuasiStatic/all block, the output will be
# quite different.
#
# Open the reducedOrderRZQuadratic_out_hydro_0001.csv file and plot the hydro variables as
# a function of x.
#
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
coord_type = RZ
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 1
xmax = 3
xmin = 1
ymax = 1
ymin = 0
second_order = true
[]
[Functions]
[./tempLinear]
type = ParsedFunction
expression = '715-5*x'
[../]
[./tempQuadratic]
type = ParsedFunction
symbol_names = 'Tc Te'
symbol_values = '701 700'
expression = '(Te-Tc)/4.0*x*x+(Tc-Te)/2.0*x+Te+3.0*(Tc-Te)/4.0'
[../]
[./tempCubic]
type = ParsedFunction
expression = '-1.25*x*x*x+11.25*x*x-33.75*x+733.75'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 295.0
[../]
[]
[AuxVariables]
[./hydro_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./hydro_first]
order = FIRST
family = MONOMIAL
[../]
[./hydro_second]
order = SECOND
family = MONOMIAL
[../]
[./sxx_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./sxx_first]
order = FIRST
family = MONOMIAL
[../]
[./sxx_second]
order = SECOND
family = MONOMIAL
[../]
[./szz_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./szz_first]
order = FIRST
family = MONOMIAL
[../]
[./szz_second]
order = SECOND
family = MONOMIAL
[../]
[./thermal_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./thermal_first]
order = FIRST
family = MONOMIAL
[../]
[./thermal_second]
order = SECOND
family = MONOMIAL
[../]
[./reduced_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./reduced_first]
order = FIRST
family = MONOMIAL
[../]
[./reduced_second]
order = SECOND
family = MONOMIAL
[../]
[./temp2]
order = SECOND
family = LAGRANGE
initial_condition = 700
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
add_variables = true
strain = SMALL
incremental = true
temperature = temp2
#eigenstrain_names = thermal_eigenstrain
eigenstrain_names = reduced_order_eigenstrain
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temp
[../]
[]
[AuxKernels]
[./hydro_constant_aux]
type = RankTwoScalarAux
variable = hydro_constant
rank_two_tensor = stress
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./hydro_first_aux]
type = RankTwoScalarAux
variable = hydro_first
rank_two_tensor = stress
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./hydro_second_aux]
type = RankTwoScalarAux
variable = hydro_second
rank_two_tensor = stress
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./sxx_constant_aux]
type = RankTwoAux
variable = sxx_constant
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./sxx_first_aux]
type = RankTwoAux
variable = sxx_first
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./sxx_second_aux]
type = RankTwoAux
variable = sxx_second
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./szz_constant_aux]
type = RankTwoAux
variable = szz_constant
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./szz_first_aux]
type = RankTwoAux
variable = szz_first
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./szz_second_aux]
type = RankTwoAux
variable = szz_second
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./thermal_constant_aux]
type = RankTwoAux
variable = thermal_constant
rank_two_tensor = thermal_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./thermal_first_aux]
type = RankTwoAux
variable = thermal_first
rank_two_tensor = thermal_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./thermal_second_aux]
type = RankTwoAux
variable = thermal_second
rank_two_tensor = thermal_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./reduced_constant_aux]
type = RankTwoAux
variable = reduced_constant
rank_two_tensor = reduced_order_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./reduced_first_aux]
type = RankTwoAux
variable = reduced_first
rank_two_tensor = reduced_order_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./reduced_second_aux]
type = RankTwoAux
variable = reduced_second
rank_two_tensor = reduced_order_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./temp2]
type = FunctionAux
variable = temp2
function = tempQuadratic
execute_on = timestep_begin
[../]
[]
[BCs]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = bottom #'bottom top'
value = 0.0
[../]
[./temp_right]
type = DirichletBC
variable = temp
boundary = right
value = 700
[../]
[./temp_left]
type = DirichletBC
variable = temp
boundary = left
value = 710
[../]
[]
[Materials]
[./fuel_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e8
poissons_ratio = 0
[../]
[./fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = temp2
stress_free_temperature = 295.0
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./reduced_order_eigenstrain]
type = ComputeReducedOrderEigenstrain
input_eigenstrain_names = 'thermal_eigenstrain'
eigenstrain_name = 'reduced_order_eigenstrain'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
num_steps = 1
nl_rel_tol = 1e-8
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[]
[VectorPostprocessors]
[./hydro]
type = LineValueSampler
warn_discontinuous_face_values = false
num_points = 50
start_point = '1 0.07e-3 0'
end_point = '3 0.07e-3 0'
sort_by = x
variable = 'temp2 disp_x disp_y hydro_constant hydro_first hydro_second sxx_constant sxx_first sxx_second szz_constant szz_first szz_second thermal_constant thermal_first thermal_second reduced_constant reduced_first reduced_second'
[../]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/porous_flow/test/tests/newton_cooling/nc01.i)
# Newton cooling from a bar. 1-phase transient
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1000
ny = 1
xmin = 0
xmax = 100
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pressure'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[Variables]
[pressure]
initial_condition = 2E6
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pressure
[]
[flux]
type = PorousFlowAdvectiveFlux
fluid_component = 0
gravity = '0 0 0'
variable = pressure
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1e6
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-15 0 0 0 1E-15 0 0 0 1E-15'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey # irrelevant in this fully-saturated situation
n = 2
phase = 0
[]
[]
[BCs]
[left]
type = DirichletBC
variable = pressure
boundary = left
value = 2E6
[]
[newton]
type = PorousFlowPiecewiseLinearSink
variable = pressure
boundary = right
pt_vals = '0 100000 200000 300000 400000 500000 600000 700000 800000 900000 1000000 1100000 1200000 1300000 1400000 1500000 1600000 1700000 1800000 1900000 2000000'
multipliers = '0. 5.6677197748570516e-6 0.000011931518841831313 0.00001885408740732065 0.000026504708864284114 0.000034959953203725676 0.000044304443352900224 0.00005463170211001232 0.00006604508815181467 0.00007865883048198513 0.00009259917167338928 0.00010800563134618119 0.00012503240252705603 0.00014384989486488752 0.00016464644014777016 0.00018763017719085535 0.0002130311349595711 0.00024110353477682344 0.00027212833465544285 0.00030641604122040985 0.00034430981736352295'
use_mobility = false
use_relperm = false
fluid_phase = 0
flux_function = 1
[]
[]
[VectorPostprocessors]
[porepressure]
type = LineValueSampler
variable = pressure
start_point = '0 0.5 0'
end_point = '100 0.5 0'
sort_by = x
num_points = 20
execute_on = timestep_end
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-12 1E-15 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1E8
dt = 1E6
[]
[Outputs]
file_base = nc01
[along_line]
type = CSV
execute_vector_postprocessors_on = final
[]
[]
(modules/heat_transfer/tutorials/introduction/therm_step03.i)
#
# Single block thermal input with time derivative term
# https://mooseframework.inl.gov/modules/heat_transfer/tutorials/introduction/therm_step03.html
#
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Variables]
[T]
initial_condition = 300.0
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[time_derivative]
type = HeatConductionTimeDerivative
variable = T
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
specific_heat = 0.5
[]
[density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 8000.0
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 300
boundary = 'left'
[]
[t_right]
type = FunctionDirichletBC
variable = T
function = '300+5*t'
boundary = 'right'
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[VectorPostprocessors]
[t_sampler]
type = LineValueSampler
variable = T
start_point = '0 0.5 0'
end_point = '2 0.5 0'
num_points = 20
sort_by = x
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = therm_step03_out
execute_on = final
[]
[]
(test/tests/functions/piecewise_linear_from_vectorpostprocessor/vector_postprocessor_function.i)
# This function linearly interpolates the data generated by a vector post
# processor. The purpose is to have a function take points and a field variable
# (aux or primary) as arguments.
# It also uses a ConstantVectorPostprocessor to test that parallel syncing is
# working for VectorPostprocessorFunction.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 4
xmin = 0.0
xmax = 0.004
ymin = 0.0
ymax = 0.008
[]
[Variables]
[u]
initial_condition = 0
[]
[]
[AuxVariables]
[v]
initial_condition = 1
[]
[test_parallel]
[]
[]
[Functions]
[ramp_u]
type = ParsedFunction
expression = 't'
[]
[point_value_function_u]
type = VectorPostprocessorFunction
component = y
argument_column = y
value_column = u
vectorpostprocessor_name = point_value_vector_postprocessor_u
[]
[line_value_function_v]
type = VectorPostprocessorFunction
component = y
argument_column = y
value_column = v
vectorpostprocessor_name = line_value_vector_postprocessor_v
[]
[test_parallel_func]
type = VectorPostprocessorFunction
component = x
argument_column = xx
value_column = qq
vectorpostprocessor_name = test_parallel_vpp
[]
[function_v]
type = PiecewiseLinear
x = '0 0.008'
y = '1 2'
axis = y
[]
[]
[Kernels]
[diffusion_u]
type = Diffusion
variable = u
[]
[]
[AuxKernels]
[aux_v]
type = FunctionAux
variable = v
function = function_v
execute_on = 'TIMESTEP_BEGIN'
[]
[test_parallel]
type = FunctionAux
variable = test_parallel
function = test_parallel_func
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[top_u]
type = FunctionDirichletBC
boundary = top
variable = u
function = ramp_u
[]
[bottom_u]
type = DirichletBC
boundary = bottom
variable = u
value = 0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
start_time = 0
num_steps = 1
dt = 1
[]
[Postprocessors]
[point_value_postprocessor_u]
type = FunctionValuePostprocessor
function = point_value_function_u
point = '0.002 0.004 0'
[]
[line_value_postprocessor_v]
type = FunctionValuePostprocessor
function = line_value_function_v
point = '0.002 0.004 0'
[]
[postprocessor_average_u]
type = ElementAverageValue
variable = u
[]
[postprocessor_average_v]
type = ElementAverageValue
variable = v
[]
[]
[VectorPostprocessors]
[point_value_vector_postprocessor_u]
type = PointValueSampler
variable = u
points = '0 0.001 0 0 0.004 0 0 0.008 0'
#points = '0.001 0 0 0.002 0 0'
sort_by = y
execute_on = linear
[]
[line_value_vector_postprocessor_v]
type = LineValueSampler
variable = v
start_point = '0 0.001 0'
end_point = '0 0.008 0'
num_points = 5
sort_by = y
execute_on = linear
[]
[test_parallel_vpp]
type = ConstantVectorPostprocessor
vector_names = 'xx qq'
value = '0 1;
1000 1000'
execute_on = 'initial timestep_begin'
[]
[]
[Outputs]
time_step_interval = 1
csv = false
exodus = true
file_base = out
[console]
type = Console
output_linear = true
max_rows = 10
[]
[]
(modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_01.i)
# Beam bending. One end is clamped and the other end is subjected to
# a surface traction.
# The joint normal and shear stiffnesses are set very large, so
# that this situation should be identical to the standard (non-Cosserat)
# isotropic elasticity case.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 40
xmax = 10
ny = 1
nz = 4
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./no_dispy]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'bottom top back front left right'
value = 0.0
[../]
[./clamp_z]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./clamp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./end_traction]
type = VectorNeumannBC
variable = disp_z
vector_value = '-2E-4 0 0'
boundary = right
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_z stress_xx stress_xz stress_zx stress_zz wc_x wc_y couple_stress_xx couple_stress_xz couple_stress_zx couple_stress_zz'
start_point = '0 0 0.5'
end_point = '10 0 0.5'
num_points = 11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.2
poisson = 0.3
layer_thickness = 1
joint_normal_stiffness = 1E16
joint_shear_stiffness = 1E16
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol -sub_pc_factor_shift_type'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10 NONZERO'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = beam_cosserat_01
csv = true
exodus = true
[]
(modules/porous_flow/test/tests/numerical_diffusion/fully_saturated_action.i)
# Using the fully-saturated action, which does mass lumping but no upwinding
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[PorousFlowFullySaturated]
porepressure = porepressure
coupling_type = Hydro
gravity = '0 0 0'
fp = the_simple_fluid
mass_fraction_vars = tracer
stabilization = none
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-1
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_2D.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek, with antidiffusion from superbee flux limiting
# 2D version
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
xmin = 0
xmax = 1
ny = 4
ymin = 0
ymax = 0.5
[]
[Variables]
[tracer]
[]
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
[]
[flux]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo
[]
[]
[UserObjects]
[fluo]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = superbee
u = tracer
velocity = '0.1 0 0'
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
nl_max_its = 500
timestep_tolerance = 1E-3
[]
[Outputs]
print_linear_residuals = false
[out]
type = CSV
execute_on = final
[]
[]
(modules/geochemistry/test/tests/spatial_reactor/spatial_2.i)
# demonstrating that controlled-activity can be spatially-dependent and that adding sources of such species leaves the system unchanged
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O H+ Cl-"
[]
[]
[SpatialReactionSolver]
model_definition = definition
charge_balance_species = "Cl-"
constraint_species = "H2O H+ Cl-"
constraint_value = " 55.5 1E-5 1E-5"
constraint_meaning = "bulk_composition activity bulk_composition"
constraint_unit = "moles dimensionless moles"
controlled_activity_name = 'H+'
controlled_activity_value = 'act_H+'
source_species_names = 'H+'
source_species_rates = '1.0'
[]
[VectorPostprocessors]
[pH]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
sort_by = x
num_points = 11
variable = pH
[]
[]
[AuxVariables]
[act_H+]
[]
[]
[AuxKernels]
[act_H+]
type = FunctionAux
variable = 'act_H+'
function = '10^(-5 + x)'
execute_on = timestep_begin # so the Reactor gets the correct value
[]
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmax = 1
[]
[Executioner]
type = Transient
num_steps = 1
[]
[Outputs]
csv = true
execute_on = final
[]
(modules/porous_flow/test/tests/thm_rehbinder/fixed_outer_rz.i)
# A version of fixed_outer.i that uses the RZ cylindrical coordinate system
[Mesh]
type = GeneratedMesh
dim = 2
nx = 40 # this is the r direction
ny = 1 # this is the height direction
xmin = 0.1
xmax = 1
bias_x = 1.1
ymin = 0.0
ymax = 1.0
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
biot_coefficient = 1.0
[]
[Variables]
[disp_r]
[]
[disp_z]
[]
[porepressure]
[]
[temperature]
[]
[]
[BCs]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'top bottom'
[]
[cavity_temperature]
type = DirichletBC
variable = temperature
value = 1000
boundary = left
[]
[cavity_porepressure]
type = DirichletBC
variable = porepressure
value = 1E6
boundary = left
[]
[cavity_zero_effective_stress_x]
type = Pressure
variable = disp_r
function = 1E6
boundary = left
use_displaced_mesh = false
[]
[outer_temperature]
type = DirichletBC
variable = temperature
value = 0
boundary = right
[]
[outer_pressure]
type = DirichletBC
variable = porepressure
value = 0
boundary = right
[]
[fixed_outer_disp]
type = DirichletBC
variable = disp_r
value = 0
boundary = right
[]
[]
[AuxVariables]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_pp]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[]
[stress_pp] # hoop stress
type = RankTwoAux
rank_two_tensor = stress
variable = stress_pp
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 1E12
viscosity = 1.0E-3
density0 = 1000.0
cv = 1000.0
cp = 1000.0
porepressure_coefficient = 0.0
[]
[]
[PorousFlowBasicTHM]
coupling_type = ThermoHydroMechanical
multiply_by_density = false
add_stress_aux = true
porepressure = porepressure
temperature = temperature
eigenstrain_names = thermal_contribution
gravity = '0 0 0'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1E10
poissons_ratio = 0.2
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
eigenstrain_names = thermal_contribution
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temperature
thermal_expansion_coeff = 1E-6
eigenstrain_name = thermal_contribution
stress_free_temperature = 0.0
[]
[stress]
type = ComputeLinearElasticStress
[]
[porosity]
type = PorousFlowPorosityConst # only the initial value of this is ever used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
solid_bulk_compliance = 1E-10
fluid_bulk_modulus = 1E12
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-12 0 0 0 1E-12 0 0 0 1E-12' # note this is ordered: rr, zz, angle-angle
[]
[thermal_expansion]
type = PorousFlowConstantThermalExpansionCoefficient
fluid_coefficient = 1E-6
drained_coefficient = 1E-6
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '1E6 0 0 0 1E6 0 0 0 1E6' # note this is ordered: rr, zz, angle-angle
[]
[]
[VectorPostprocessors]
[P]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = porepressure
[]
[T]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = temperature
[]
[U]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = disp_r
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_rtol'
petsc_options_value = 'gmres asm lu 1E-8'
[]
[]
[Executioner]
type = Steady
solve_type = Newton
[]
[Outputs]
file_base = fixed_outer_rz
execute_on = timestep_end
csv = true
[]
(test/tests/vectorpostprocessors/time_data/time_data.i)
###############################################################
# The following tests that the CSV output object can include an
# additional .csv file that contains the time and timestep
# data from VectorPostprocessor object.
###############################################################
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./diff_v]
type = Diffusion
variable = v
[../]
[./time]
type = TimeDerivative
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = left
value = 1
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = right
value = 0
[../]
[]
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
variable = 'u v'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = id
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
execute_on = 'initial timestep_end'
[./out]
type = CSV
time_data = true
time_step_interval = 2
[../]
[]
(modules/porous_flow/examples/thm_example/2D_c.i)
# Two phase, temperature-dependent, with mechanics and chemistry, radial with fine mesh, constant injection of cold co2 into a overburden-reservoir-underburden containing mostly water
# species=0 is water
# species=1 is co2
# phase=0 is liquid, and since massfrac_ph0_sp0 = 1, this is all water
# phase=1 is gas, and since massfrac_ph1_sp0 = 0, this is all co2
#
# The mesh used below has very high resolution, so the simulation takes a long time to complete.
# Some suggested meshes of different resolution:
# nx=50, bias_x=1.2
# nx=100, bias_x=1.1
# nx=200, bias_x=1.05
# nx=400, bias_x=1.02
# nx=1000, bias_x=1.01
# nx=2000, bias_x=1.003
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2000
bias_x = 1.003
xmin = 0.1
xmax = 5000
ny = 1
ymin = 0
ymax = 11
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
gravity = '0 0 0'
biot_coefficient = 1.0
[]
[Variables]
[pwater]
initial_condition = 18.3e6
[]
[sgas]
initial_condition = 0.0
[]
[temp]
initial_condition = 358
[]
[disp_r]
[]
[]
[AuxVariables]
[rate]
[]
[disp_z]
[]
[massfrac_ph0_sp0]
initial_condition = 1 # all H20 in phase=0
[]
[massfrac_ph1_sp0]
initial_condition = 0 # no H2O in phase=1
[]
[pgas]
family = MONOMIAL
order = FIRST
[]
[swater]
family = MONOMIAL
order = FIRST
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_tt]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[mineral_conc_m3_per_m3]
family = MONOMIAL
order = CONSTANT
initial_condition = 0.1
[]
[eqm_const]
initial_condition = 0.0
[]
[porosity]
family = MONOMIAL
order = CONSTANT
[]
[]
[Kernels]
[mass_water_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux_water]
type = PorousFlowAdvectiveFlux
fluid_component = 0
use_displaced_mesh = false
variable = pwater
[]
[mass_co2_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = sgas
[]
[flux_co2]
type = PorousFlowAdvectiveFlux
fluid_component = 1
use_displaced_mesh = false
variable = sgas
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[advection]
type = PorousFlowHeatAdvection
use_displaced_mesh = false
variable = temp
[]
[conduction]
type = PorousFlowExponentialDecay
use_displaced_mesh = false
variable = temp
reference = 358
rate = rate
[]
[grad_stress_r]
type = StressDivergenceRZTensors
temperature = temp
eigenstrain_names = thermal_contribution
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[poro_r]
type = PorousFlowEffectiveStressCoupling
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[]
[AuxKernels]
[rate]
type = FunctionAux
variable = rate
execute_on = timestep_begin
function = decay_rate
[]
[pgas]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = pgas
[]
[swater]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = swater
[]
[stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[]
[stress_tt]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_tt
index_i = 2
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 1
index_j = 1
[]
[mineral]
type = PorousFlowPropertyAux
property = mineral_concentration
mineral_species = 0
variable = mineral_conc_m3_per_m3
[]
[eqm_const_auxk]
type = ParsedAux
variable = eqm_const
coupled_variables = temp
expression = '(358 - temp) / (358 - 294)'
[]
[porosity_auxk]
type = PorousFlowPropertyAux
property = porosity
variable = porosity
[]
[]
[Functions]
[decay_rate]
# Eqn(26) of the first paper of LaForce et al.
# Ka * (rho C)_a = 10056886.914
# h = 11
type = ParsedFunction
expression = 'sqrt(10056886.914/t)/11.0'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pwater sgas disp_r'
number_fluid_phases = 2
number_fluid_components = 2
number_aqueous_kinetic = 1
aqueous_phase_number = 1
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[FluidProperties]
[water]
type = SimpleFluidProperties
bulk_modulus = 2.27e14
density0 = 970.0
viscosity = 0.3394e-3
cv = 4149.0
cp = 4149.0
porepressure_coefficient = 0.0
thermal_expansion = 0
[]
[co2]
type = SimpleFluidProperties
bulk_modulus = 2.27e14
density0 = 516.48
viscosity = 0.0393e-3
cv = 2920.5
cp = 2920.5
porepressure_coefficient = 0.0
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = pwater
phase1_saturation = sgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = water
phase = 0
[]
[gas]
type = PorousFlowSingleComponentFluid
fp = co2
phase = 1
[]
[porosity_reservoir]
type = PorousFlowPorosity
porosity_zero = 0.2
chemical = true
reference_chemistry = 0.1
initial_mineral_concentrations = 0.1
[]
[permeability_reservoir]
type = PorousFlowPermeabilityConst
permeability = '2e-12 0 0 0 0 0 0 0 0'
[]
[relperm_liquid]
type = PorousFlowRelativePermeabilityCorey
n = 4
phase = 0
s_res = 0.200
sum_s_res = 0.405
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityBC
phase = 1
s_res = 0.205
sum_s_res = 0.405
nw_phase = true
lambda = 2
[]
[thermal_conductivity_reservoir]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 1.320 0 0 0 0'
wet_thermal_conductivity = '0 0 0 0 3.083 0 0 0 0'
[]
[internal_energy_reservoir]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1100
density = 2350.0
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
shear_modulus = 6.0E9
poissons_ratio = 0.2
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
eigenstrain_names = 'thermal_contribution ini_stress'
[]
[ini_strain]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-12.8E6 0 0 0 -51.3E6 0 0 0 -12.8E6'
eigenstrain_name = ini_stress
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temp
stress_free_temperature = 358
thermal_expansion_coeff = 5E-6
eigenstrain_name = thermal_contribution
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[predis]
type = PorousFlowAqueousPreDisChemistry
num_reactions = 1
primary_concentrations = 1.0 # fixed activity
equilibrium_constants_as_log10 = true
equilibrium_constants = eqm_const
primary_activity_coefficients = 1.0 # fixed activity
reactions = 1
kinetic_rate_constant = 1E-6
molar_volume = 1.0
specific_reactive_surface_area = 1.0
activation_energy = 0.0 # no Arrhenius
[]
[mineral_conc]
type = PorousFlowAqueousPreDisMineral
initial_concentrations = 0.1
[]
[predis_nodes]
type = PorousFlowAqueousPreDisChemistry
at_nodes = true
num_reactions = 1
primary_concentrations = 1.0 # fixed activity
equilibrium_constants_as_log10 = true
equilibrium_constants = eqm_const
primary_activity_coefficients = 1.0 # fixed activity
reactions = 1
kinetic_rate_constant = 1E-6
molar_volume = 1.0
specific_reactive_surface_area = 1.0
activation_energy = 0.0 # no Arrhenius
[]
[mineral_conc_nodes]
type = PorousFlowAqueousPreDisMineral
at_nodes = true
initial_concentrations = 0.1
[]
[]
[BCs]
[outer_pressure_fixed]
type = DirichletBC
boundary = right
value = 18.3e6
variable = pwater
[]
[outer_saturation_fixed]
type = DirichletBC
boundary = right
value = 0.0
variable = sgas
[]
[outer_temp_fixed]
type = DirichletBC
boundary = right
value = 358
variable = temp
[]
[fixed_outer_r]
type = DirichletBC
variable = disp_r
value = 0
boundary = right
[]
[co2_injection]
type = PorousFlowSink
boundary = left
variable = sgas
use_mobility = false
use_relperm = false
fluid_phase = 1
flux_function = 'min(t/100.0,1)*(-2.294001475)' # 5.0E5 T/year = 15.855 kg/s, over area of 2Pi*0.1*11
[]
[cold_co2]
type = DirichletBC
boundary = left
variable = temp
value = 294
[]
[cavity_pressure_x]
type = Pressure
boundary = left
variable = disp_r
component = 0
postprocessor = p_bh # note, this lags
use_displaced_mesh = false
[]
[]
[Postprocessors]
[p_bh]
type = PointValue
variable = pwater
point = '0.1 0 0'
execute_on = timestep_begin
use_displaced_mesh = false
[]
[mineral_bh] # mineral concentration (m^3(mineral)/m^3(rock)) at the borehole
type = PointValue
variable = mineral_conc_m3_per_m3
point = '0.1 0 0'
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[ptsuss]
type = LineValueSampler
use_displaced_mesh = false
start_point = '0.1 0 0'
end_point = '5000 0 0'
sort_by = x
num_points = 50000
outputs = csv
variable = 'pwater temp sgas disp_r stress_rr stress_tt mineral_conc_m3_per_m3 porosity'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
#petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E2 1E-5 50'
[]
[mumps]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -pc_factor_mat_solver_package -pc_factor_shift_type -snes_rtol -snes_atol -snes_max_it'
petsc_options_value = 'gmres lu mumps NONZERO 1E-5 1E2 50'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1.5768e8
#dtmax = 1e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
growth_factor = 1.1
[]
[]
[Outputs]
print_linear_residuals = false
sync_times = '3600 86400 2.592E6 1.5768E8'
perf_graph = true
exodus = true
[csv]
type = CSV
sync_only = true
[]
[]
(modules/porous_flow/test/tests/hysteresis/hys_pc_1.i)
# Capillary-pressure calculation. First-order wetting curve
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
# Also, when using info_required=sat, remember that: (1) the hysteretic capillary pressure is not invertible if no high extension is used; (2) if saturation exceeds the turning point (eg sat <= 0.1) then the drying curve will be used
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0
xmax = 1
nx = 100
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = ''
[]
[]
[Variables]
[sat]
[]
[]
[ICs]
[sat]
type = FunctionIC
variable = sat
function = 'x'
[]
[]
[BCs]
[sat]
type = FunctionDirichletBC
variable = sat
function = 'x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = sat
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
initial_order = 1
previous_turning_points = 0.1
[]
[pc_calculator]
type = PorousFlowHystereticInfo
alpha_d = 10.0
alpha_w = 7.0
n_d = 1.5
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 12.0
high_ratio = 0.9
low_extension_type = none
high_extension_type = none
sat_var = sat
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[pc]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[pc]
type = PorousFlowPropertyAux
variable = pc
property = hysteretic_info
[]
[]
[VectorPostprocessors]
[pc]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 10
sort_by = x
variable = 'sat pc'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(test/tests/executioners/nullspace/singular_contaminated.i)
[Mesh]
type = GeneratedMesh
dim = 1
xmin = 0
xmax = 10
nx = 8
[]
[Problem]
null_space_dimension = 1
transpose_null_space_dimension = 1
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./eig]
type = MassEigenKernel
variable = u
eigen_postprocessor = 1.0002920196258376e+01
eigen = false
[../]
[./force]
type = CoupledForce
variable = u
v = aux_v
[../]
[]
[AuxVariables]
[./aux_v]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = eigen_mode
[../]
[../]
[]
[AuxKernels]
[./set_source]
type = FunctionAux
variable = aux_v
function = contaminated_second_harmonic
execute_on = timestep_begin
[../]
[]
[Functions]
[./eigen_mode]
type = ParsedFunction
expression = 'sqrt(2.0 / L) * sin(mode * pi * x / L)'
symbol_names = 'L mode'
symbol_values = '10 1'
[../]
[./contaminated_second_harmonic]
type = ParsedFunction
expression = 'sqrt(2.0 / L) * sin(mode * pi * x / L) + a * sqrt(2.0 / L) * sin(pi * x / L)'
symbol_names = 'L mode a'
symbol_values = '10 2 1'
[../]
[]
[BCs]
[./homogeneous]
type = DirichletBC
variable = u
boundary = '0 1'
value = 0
[../]
[]
[VectorPostprocessors]
[./sample_solution]
type = LineValueSampler
variable = u
start_point = '0 0 0'
end_point = '10 0 0'
sort_by = x
num_points = 9
execute_on = timestep_end
[../]
[]
[Preconditioning]
[./prec]
type = SMP
full = true
[../]
[]
[Executioner]
type = SteadyWithNull
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_pc_side -snes_type -ksp_norm_type'
petsc_options_value = 'hypre boomeramg left ksponly preconditioned'
nl_rel_tol = 1.0e-14
nl_abs_tol = 1.0e-14
[]
[Outputs]
execute_on = 'timestep_end'
csv = true
[]
(modules/solid_mechanics/test/tests/static_deformations/cosserat_glide.i)
# Example taken from Appendix A of
# S Forest "Mechanics of Cosserat media An introduction". Available from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.154.4476&rep=rep1&type=pdf
#
# Analytically, the displacements are
# wc_z = B sinh(w_e y)
# disp_x = (2 mu_c B / w_e / (mu + mu_c)) (1 - cosh(w_e y))
# with w_e^2 = 2 mu mu_c / be / (mu + mu_c)
# and B = arbitrary integration constant
#
# Also, the only nonzero stresses are
# m_zy = 2 B be w_e cosh(w_e y)
# si_yx = -4 mu mu_c/(mu + mu_c) B sinh(w_e y)
#
# MOOSE gives these stress components correctly.
# However, it also gives a seemingly non-zero si_xy
# component. Upon increasing the resolution of the
# mesh (ny=10000, for example), the stress components
# are seen to limit correctly to the above forumlae
#
# I use mu = 2, mu_c = 3, be = 0.6, so w_e = 2
# Also i use B = 1, so at y = 1
# wc_z = 3.626860407847
# disp_x = -1.65731741465
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 100
ymax = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./z_couple]
type = StressDivergenceTensors
variable = wc_z
displacements = 'wc_x wc_y wc_z'
component = 2
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[./z_moment]
type = MomentBalancing
variable = wc_z
component = 2
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./disp_x_zero_at_y_zero]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0
[../]
[./disp_x_fixed_at_y_max]
type = DirichletBC
variable = disp_x
boundary = top
value = -1.65731741465
[../]
[./no_dispy]
type = DirichletBC
variable = disp_y
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_dispz]
type = DirichletBC
variable = disp_z
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'back front bottom top left right'
value = 0
[../]
[./wc_z_zero_at_y_zero]
type = DirichletBC
variable = wc_z
boundary = bottom
value = 0
[../]
[./wc_z_fixed_at_y_max]
type = DirichletBC
variable = wc_z
boundary = top
value = 3.626860407847
[../]
[]
[AuxVariables]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeCosseratElasticityTensor
B_ijkl = '1.1 0.6 0.6' # In Forest notation this is alpha=1.1 (this is unimportant), beta=gamma=0.6.
fill_method_bending = 'general_isotropic'
E_ijkl = '1 2 3' # In Forest notation this is lambda=1 (this is unimportant), mu=2, mu_c=3
fill_method = 'general_isotropic'
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = y
variable = 'disp_x wc_z stress_yx couple_stress_zy'
start_point = '0 0 0'
end_point = '0 1 0'
num_points = 11
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = cosserat_glide_out
exodus = true
csv = true
[]
(modules/combined/examples/publications/rapid_dev/fig7a.i)
#
# Fig. 7 input for 10.1016/j.commatsci.2017.02.017
# D. Schwen et al./Computational Materials Science 132 (2017) 36-45
# Solid gray curve (1)
# Eigenstrain and elastic energies ar computed per phase and then interpolated.
# Supply the RADIUS parameter (10-35) on the command line to generate data
# for all curves in the plot.
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 32
xmin = 0
xmax = 100
second_order = true
[]
[Problem]
coord_type = RSPHERICAL
[]
[GlobalParams]
displacements = 'disp_r'
[]
[Functions]
[./diff]
type = ParsedFunction
expression = '${RADIUS}-pos_c'
symbol_names = pos_c
symbol_values = pos_c
[../]
[]
# AuxVars to compute the free energy density for outputting
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./cross_energy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./local_free_energy]
type = TotalFreeEnergy
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[Variables]
# Solute concentration variable
[./c]
[./InitialCondition]
type = SmoothCircleIC
invalue = 1
outvalue = 0
x1 = 0
y1 = 0
radius = ${RADIUS}
int_width = 3
[../]
[../]
[./w]
[../]
# Phase order parameter
[./eta]
[./InitialCondition]
type = SmoothCircleIC
invalue = 1
outvalue = 0
x1 = 0
y1 = 0
radius = ${RADIUS}
int_width = 3
[../]
[../]
# Mesh displacement
[./disp_r]
order = SECOND
[../]
[./Fe_fit]
order = SECOND
[../]
[]
[Kernels]
# Set up stress divergence kernels
[./TensorMechanics]
[../]
# Split Cahn-Hilliard kernels
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
args = 'eta'
kappa_name = kappa_c
w = w
[../]
[./wres]
type = SplitCHWRes
variable = w
mob_name = M
[../]
[./time]
type = CoupledTimeDerivative
variable = w
v = c
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 1
[./detadt]
type = TimeDerivative
variable = eta
[../]
[./ACBulk1]
type = AllenCahn
variable = eta
args = 'c'
mob_name = L
f_name = F
[../]
[./ACInterface]
type = ACInterface
variable = eta
mob_name = L
kappa_name = kappa_eta
[../]
[./Fe]
type = MaterialPropertyValue
prop_name = Fe
variable = Fe_fit
[../]
[./autoadjust]
type = MaskedBodyForce
variable = w
function = diff
mask = mask
[../]
[]
[Materials]
# declare a few constants, such as mobilities (L,M) and interface gradient prefactors (kappa*)
[./consts]
type = GenericConstantMaterial
prop_names = 'M L kappa_c kappa_eta'
prop_values = '1.0 1.0 0.5 1'
[../]
# forcing function mask
[./mask]
type = ParsedMaterial
property_name = mask
expression = grad/dt
material_property_names = 'grad dt'
[../]
[./grad]
type = VariableGradientMaterial
variable = c
prop = grad
[../]
[./time]
type = TimeStepMaterial
[../]
# global mechanical properties
[./elasticity_tensor_1]
type = ComputeElasticityTensor
C_ijkl = '1 1'
base_name = phase1
fill_method = symmetric_isotropic
[../]
[./elasticity_tensor_2]
type = ComputeElasticityTensor
C_ijkl = '1 1'
base_name = phase2
fill_method = symmetric_isotropic
[../]
[./strain_1]
type = ComputeRSphericalSmallStrain
base_name = phase1
[../]
[./strain_2]
type = ComputeRSphericalSmallStrain
base_name = phase2
eigenstrain_names = eigenstrain
[../]
[./stress_1]
type = ComputeLinearElasticStress
base_name = phase1
[../]
[./stress_2]
type = ComputeLinearElasticStress
base_name = phase2
[../]
# eigenstrain per phase
[./eigenstrain2]
type = ComputeEigenstrain
eigen_base = '0.05 0.05 0.05 0 0 0'
base_name = phase2
eigenstrain_name = eigenstrain
[../]
# switching functions
[./switching]
type = SwitchingFunctionMaterial
function_name = h
eta = eta
h_order = SIMPLE
[../]
[./barrier]
type = BarrierFunctionMaterial
eta = eta
[../]
# chemical free energies
[./chemical_free_energy_1]
type = DerivativeParsedMaterial
property_name = Fc1
expression = 'c^2'
coupled_variables = 'c'
derivative_order = 2
[../]
[./chemical_free_energy_2]
type = DerivativeParsedMaterial
property_name = Fc2
expression = '(1-c)^2'
coupled_variables = 'c'
derivative_order = 2
[../]
# elastic free energies
[./elastic_free_energy_1]
type = ElasticEnergyMaterial
f_name = Fe1
args = ''
base_name = phase1
derivative_order = 2
[../]
[./elastic_free_energy_2]
type = ElasticEnergyMaterial
f_name = Fe2
args = ''
base_name = phase2
derivative_order = 2
[../]
# per phase free energies
[./free_energy_1]
type = DerivativeSumMaterial
property_name = F1
sum_materials = 'Fc1 Fe1'
coupled_variables = 'c'
derivative_order = 2
[../]
[./free_energy_2]
type = DerivativeSumMaterial
property_name = F2
sum_materials = 'Fc2 Fe2'
coupled_variables = 'c'
derivative_order = 2
[../]
# global chemical free energy
[./global_free_energy]
type = DerivativeTwoPhaseMaterial
f_name = F
fa_name = F1
fb_name = F2
eta = eta
args = 'c'
W = 4
[../]
# global stress
[./global_stress]
type = TwoPhaseStressMaterial
base_A = phase1
base_B = phase2
[../]
[./elastic_free_energy]
type = DerivativeTwoPhaseMaterial
f_name = Fe
fa_name = Fe1
fb_name = Fe2
eta = eta
args = 'c'
W = 0
[../]
[]
[BCs]
[./left_r]
type = DirichletBC
variable = disp_r
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
# We monitor the total free energy and the total solute concentration (should be constant)
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
variable = local_energy
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
variable = c
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./pos_c]
type = FindValueOnLine
start_point = '0 0 0'
end_point = '100 0 0'
v = c
target = 0.582
tol = 1e-8
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./pos_eta]
type = FindValueOnLine
start_point = '0 0 0'
end_point = '100 0 0'
v = eta
target = 0.5
tol = 1e-8
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./c_min]
type = ElementExtremeValue
value_type = min
variable = c
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[]
[VectorPostprocessors]
[./line]
type = LineValueSampler
variable = 'Fe_fit c w'
start_point = '0 0 0'
end_point = '100 0 0'
num_points = 5000
sort_by = x
outputs = vpp
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
l_max_its = 30
nl_max_its = 15
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 2.0e-9
start_time = 0.0
end_time = 100000.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 7
iteration_window = 1
dt = 1
[../]
[./Adaptivity]
initial_adaptivity = 5
interval = 10
max_h_level = 5
refine_fraction = 0.9
coarsen_fraction = 0.1
[../]
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
execute_on = 'INITIAL TIMESTEP_END'
[./table]
type = CSV
delimiter = ' '
file_base = radius_${RADIUS}/energy_pp
[../]
[./vpp]
type = CSV
delimiter = ' '
sync_times = '10 50 100 500 1000 5000 10000 50000 100000'
sync_only = true
time_data = true
file_base = radius_${RADIUS}/energy_vpp
[../]
[]
(test/tests/vectorpostprocessors/line_value_sampler/line_value_sampler.i)
###########################################################
# This is a simple test of the Vector Postprocessor
# System. A LineValueSampler is placed inside of a 2D
# domain to sample solution points uniformly along a line.
#
# @Requirement F6.30
###########################################################
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./diff_v]
type = Diffusion
variable = v
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = left
value = 1
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = right
value = 0
[../]
[]
[Postprocessors]
[./u_avg]
type = ElementAverageValue
variable = u
execute_on = 'initial timestep_end'
[../]
[]
# Vector Postprocessor System
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
variable = 'u v'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = id
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
execute_on = 'timestep_end'
csv = true
[]
(python/peacock/tests/input_tab/InputTree/gold/simple_diffusion_vp.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = 'left'
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = 'right'
value = 1
[]
[]
[Executioner]
# Preconditioned JFNK (default)
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[foo]
type = LineValueSampler
num_points = 10
end_point = '1 0 0'
start_point = '0 0 0'
[]
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/rd03.i)
[Mesh]
file = gold/rd02.e
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Functions]
[dts]
type = PiecewiseLinear
y = '2E4 1E6'
x = '0 1E6'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = pressure
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.336
alpha = 1.43e-4
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e7
viscosity = 1.01e-3
density0 = 1000
thermal_expansion = 0
[]
[]
[Materials]
[massfrac]
type = PorousFlowMassFraction
[]
[temperature]
type = PorousFlowTemperature
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[relperm]
type = PorousFlowRelativePermeabilityVG
m = 0.336
seff_turnover = 0.99
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.33
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.295E-12 0 0 0 0.295E-12 0 0 0 0.295E-12'
[]
[]
[Variables]
[pressure]
initial_from_file_timestep = LATEST
initial_from_file_var = pressure
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pressure
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pressure
gravity = '-10 0 0'
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[]
[BCs]
[base]
type = DirichletBC
boundary = left
value = 0.0
variable = pressure
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10'
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = SWater
start_point = '0 0 0'
end_point = '6 0 0'
sort_by = x
num_points = 121
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 8.2944E6
[TimeStepper]
type = FunctionDT
function = dts
[]
[]
[Outputs]
file_base = rd03
[exodus]
type = Exodus
execute_on = 'initial final'
[]
[along_line]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/hysteresis/hys_sat_01.i)
# 1-phase hysteresis. Saturation calculation. Primary drying curve with low_extension_type = none
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0
xmax = 10
nx = 100
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = pp
[]
[]
[Variables]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = '1 - x'
[]
[]
[BCs]
[pp]
type = FunctionDirichletBC
variable = pp
function = '1 - x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = pp
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
[]
[saturation_calculator]
type = PorousFlow1PhaseHysP
alpha_d = 10.0
alpha_w = 10.0
n_d = 1.1
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 7.0
low_extension_type = none
porepressure = pp
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[saturation]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[saturation]
type = PorousFlowPropertyAux
variable = saturation
property = saturation
phase = 0
[]
[]
[VectorPostprocessors]
[sat]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0 0'
end_point = '9.5 0 0'
num_points = 10
sort_by = x
variable = 'saturation pp'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(modules/porous_flow/test/tests/numerical_diffusion/pffltvd_action.i)
# Using flux-limited TVD advection ala Kuzmin and Turek, employing PorousFlow Kernels and UserObjects, with superbee flux-limiter
# Using the PorousFlowFullySaturated Action
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[PorousFlowFullySaturated]
porepressure = porepressure
coupling_type = Hydro
fp = the_simple_fluid
mass_fraction_vars = tracer
stabilization = KT
flux_limiter_type = superbee
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
file_base = pffltvd_out
[out]
type = CSV
execute_on = final
[]
[]
(modules/optimization/test/tests/optimizationreporter/bc_load_linearFunction/forward.i)
[Mesh]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[heat_conduction]
type = MatDiffusion
variable = temperature
diffusivity = thermal_conductivity
[]
[]
[BCs]
[left]
type = FunctionNeumannBC
variable = temperature
boundary = left
function = left_function
[]
[right]
type = FunctionNeumannBC
variable = temperature
boundary = right
function = right_function
[]
[bottom]
type = DirichletBC
variable = temperature
boundary = bottom
value = 200
[]
[top]
type = DirichletBC
variable = temperature
boundary = top
value = 100
[]
[]
[Functions]
[left_function]
type = ParsedOptimizationFunction
expression = 'a + b*y'
param_symbol_names = 'a b'
param_vector_name = 'params_left/vals'
[]
[right_function]
type = ParsedOptimizationFunction
expression = 'a'
param_symbol_names = 'a'
param_vector_name = 'params_right/vals'
[]
[]
[Materials]
[steel]
type = GenericConstantMaterial
prop_names = thermal_conductivity
prop_values = 5
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
line_search = none
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
petsc_options_iname = '-ksp_type -pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'preonly lu superlu_dist'
[]
[VectorPostprocessors]
[vertical_1]
type = LineValueSampler
variable = 'temperature'
start_point = '0.2 0.0 0'
end_point = '0.2 2.0 0'
num_points = 21
sort_by = y
[]
[vertical_2]
type = LineValueSampler
variable = 'temperature'
start_point = '0.8 0.0 0'
end_point = '0.8 2.0 0'
num_points = 21
sort_by = y
[]
[]
[Reporters]
[measure_data]
type = OptimizationData
variable = temperature
objective_name = objective_value
variable_weight_names = weightForTemperature
[]
[params_left]
type = ConstantReporter
real_vector_names = 'vals'
real_vector_values = '0 0' # Dummy
[]
[params_right]
type = ConstantReporter
real_vector_names = 'vals'
real_vector_values = '0' # Dummy
[]
[]
[Outputs]
console = false
exodus = false
file_base = 'forward'
[]
(modules/porous_flow/test/tests/numerical_diffusion/fltvd.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek, with antidiffusion from superbee flux limiting
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[Variables]
[tracer]
[]
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
[]
[flux]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo
[]
[]
[UserObjects]
[fluo]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = superbee
u = tracer
velocity = '0.1 0 0'
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
nl_max_its = 500
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(modules/heat_transfer/test/tests/truss_heat_conduction/strip.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 1
xmax = 0.5
xmin = -0.5
ymin = -0.05
ymax = 0.05
[]
[left_line]
type = SubdomainBoundingBoxGenerator
input = gmg
bottom_left = '-0.5 0 0'
top_right = '0 0 0'
block_id = 1
block_name = 'left_strip'
location = INSIDE
[]
[right_line]
type = SubdomainBoundingBoxGenerator
input = left_line
bottom_left = '0 0 0'
top_right = '0.5 0 0'
block_id = 2
block_name = 'right_strip'
location = INSIDE
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[time_derivative]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_conduction]
type = HeatConduction
variable = temperature
[]
[]
[Materials]
[left_strip]
type = GenericConstantMaterial
block = 'left_strip'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '0.1 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[right_strip]
type = GenericConstantMaterial
block = 'right_strip'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '5.0e-3 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[]
[BCs]
[right]
type = FunctionDirichletBC
variable = temperature
boundary = 'right'
function = '10*t'
[]
[]
[VectorPostprocessors]
[center]
type = LineValueSampler
start_point = '-0.5 0 0'
end_point = '0.5 0 0'
num_points = 40
variable = 'temperature'
sort_by = id
[]
[]
[Executioner]
type = Transient
start_time = 0
dt = 1
end_time = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = 'csv/strip'
time_data = true
[]
[]
(modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_1D_adaptivity.i)
# Using flux-limited TVD advection ala Kuzmin and Turek, mploying PorousFlow Kernels and UserObjects, with superbee flux-limiter
# 1D version with adaptivity
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 1
[]
[Adaptivity]
initial_steps = 1
initial_marker = tracer_marker
marker = tracer_marker
max_h_level = 1
[Markers]
[tracer_marker]
type = ValueRangeMarker
variable = tracer
lower_bound = 0.02
upper_bound = 0.98
[]
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = tracer
[]
[flux0]
type = PorousFlowFluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = advective_flux_calculator_0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = porepressure
[]
[flux1]
type = PorousFlowFluxLimitedTVDAdvection
variable = porepressure
advective_flux_calculator = advective_flux_calculator_1
[]
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure tracer'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[advective_flux_calculator_0]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 0
[]
[advective_flux_calculator_1]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = tracer
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = the_simple_fluid
phase = 0
[]
[relperm]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/relperm/corey2.i)
# Test Corey relative permeability curve by varying saturation over the mesh
# Corey exponent n = 2 for both phases
# No residual saturation in either phase
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
family = LAGRANGE
order = FIRST
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityCorey
phase = 0
n = 2
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
phase = 1
n = 2
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-8
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/rd01.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 120
ny = 1
xmin = 0
xmax = 6
ymin = 0
ymax = 0.05
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Functions]
[dts]
type = PiecewiseLinear
y = '1E-2 1 10 500 5000 5000'
x = '0 10 100 1000 10000 100000'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = pressure
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.336
alpha = 1.43e-4
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e7
viscosity = 1.01e-3
density0 = 1000
thermal_expansion = 0
[]
[]
[Materials]
[massfrac]
type = PorousFlowMassFraction
[]
[temperature]
type = PorousFlowTemperature
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[relperm]
type = PorousFlowRelativePermeabilityVG
m = 0.336
seff_turnover = 0.99
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.33
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.295E-12 0 0 0 0.295E-12 0 0 0 0.295E-12'
[]
[]
[Variables]
[pressure]
initial_condition = -72620.4
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pressure
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pressure
gravity = '-10 0 0'
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[]
[BCs]
[base]
type = PorousFlowSink
boundary = right
flux_function = -2.315E-3
variable = pressure
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10'
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = SWater
start_point = '0 0 0'
end_point = '6 0 0'
sort_by = x
num_points = 121
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 359424
[TimeStepper]
type = FunctionDT
function = dts
[]
[]
[Outputs]
file_base = rd01
[exodus]
type = Exodus
execute_on = 'initial final'
[]
[along_line]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/pressure_pulse/pressure_pulse_1d_2phasePS_KT.i)
# Pressure pulse in 1D with 2 phases, 2components - transient
# Using KT stabilization
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 100
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[ppwater]
initial_condition = 2e6
[]
[sgas]
initial_condition = 0.3
[]
[]
[AuxVariables]
[massfrac_ph0_sp0]
initial_condition = 1
[]
[massfrac_ph1_sp0]
initial_condition = 0
[]
[ppgas]
family = MONOMIAL
order = FIRST
[]
[]
[Kernels]
[mass_component0]
type = PorousFlowMassTimeDerivative
variable = ppwater
fluid_component = 0
[]
[flux_component0_phase0]
type = PorousFlowFluxLimitedTVDAdvection
variable = ppwater
advective_flux_calculator = afc_component0_phase0
[]
[flux_component0_phase1]
type = PorousFlowFluxLimitedTVDAdvection
variable = ppwater
advective_flux_calculator = afc_component0_phase1
[]
[mass_component1]
type = PorousFlowMassTimeDerivative
variable = sgas
fluid_component = 1
[]
[flux_component1_phase0]
type = PorousFlowFluxLimitedTVDAdvection
variable = sgas
advective_flux_calculator = afc_component1_phase0
[]
[flux_component1_phase1]
type = PorousFlowFluxLimitedTVDAdvection
variable = sgas
advective_flux_calculator = afc_component1_phase1
[]
[]
[AuxKernels]
[ppgas]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = ppgas
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'ppwater sgas'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 1e5
[]
[afc_component0_phase0]
type = PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent
fluid_component = 0
phase = 0
flux_limiter_type = superbee
[]
[afc_component0_phase1]
type = PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent
fluid_component = 0
phase = 1
flux_limiter_type = superbee
[]
[afc_component1_phase0]
type = PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent
fluid_component = 1
phase = 0
flux_limiter_type = superbee
[]
[afc_component1_phase1]
type = PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent
fluid_component = 1
phase = 1
flux_limiter_type = superbee
[]
[]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 2e7
density0 = 1
thermal_expansion = 0
viscosity = 1e-5
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = ppwater
phase1_saturation = sgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1e-15 0 0 0 1e-15 0 0 0 1e-15'
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 0
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 1
[]
[]
[BCs]
[leftwater]
type = DirichletBC
boundary = left
value = 3e6
variable = ppwater
[]
[rightwater]
type = DirichletBC
boundary = right
value = 2e6
variable = ppwater
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-20 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1e3
end_time = 1e4
[]
[VectorPostprocessors]
[pp]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'ppwater ppgas'
start_point = '0 0 0'
end_point = '100 0 0'
num_points = 11
[]
[]
[Outputs]
file_base = pressure_pulse_1d_2phasePS_KT
print_linear_residuals = false
[csv]
type = CSV
execute_on = final
[]
[]
(modules/solid_mechanics/test/tests/action/reduced_eigenstrain_action.i)
#
# This test checks whether the ComputeReducedOrderEigenstrain is functioning properly
# when using the automatic_eigenstrain_names within the SolidMechanics QuasiStatic Physics. These
# results should match the results found in the eigenstrain folder for reducedOrderRZLinear.i
#
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
coord_type = RZ
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 1
xmax = 3
xmin = 1
ymax = 1
ymin = 0
#second_order = true
[]
[Problem]
solve = false
[]
[Functions]
[./tempLinear]
type = ParsedFunction
expression = '715-5*x'
[../]
[./tempQuadratic]
type = ParsedFunction
expression = '2.5*x*x-15*x+722.5'
[../]
[./tempCubic]
type = ParsedFunction
expression = '-1.25*x*x*x+11.25*x*x-33.75*x+733.75'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[AuxVariables]
[./hydro_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./hydro_first]
order = FIRST
family = MONOMIAL
[../]
[./hydro_second]
order = SECOND
family = MONOMIAL
[../]
[./sxx_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./sxx_first]
order = FIRST
family = MONOMIAL
[../]
[./sxx_second]
order = SECOND
family = MONOMIAL
[../]
[./szz_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./szz_first]
order = FIRST
family = MONOMIAL
[../]
[./szz_second]
order = SECOND
family = MONOMIAL
[../]
[./temp2]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
strain = SMALL
incremental = true
temperature = temp2
automatic_eigenstrain_names = true
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temp
[../]
[]
[AuxKernels]
[./hydro_constant_aux]
type = RankTwoScalarAux
variable = hydro_constant
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_first_aux]
type = RankTwoScalarAux
variable = hydro_first
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_second_aux]
type = RankTwoScalarAux
variable = hydro_second
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./sxx_constant_aux]
type = RankTwoAux
variable = sxx_constant
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_first_aux]
type = RankTwoAux
variable = sxx_first
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_second_aux]
type = RankTwoAux
variable = sxx_second
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./szz_constant_aux]
type = RankTwoAux
variable = szz_constant
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_first_aux]
type = RankTwoAux
variable = szz_first
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_second_aux]
type = RankTwoAux
variable = szz_second
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./temp2]
type = FunctionAux
variable = temp2
function = tempLinear
execute_on = timestep_begin
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./temp_right]
type = DirichletBC
variable = temp
boundary = right
value = 700
[../]
[./temp_left]
type = DirichletBC
variable = temp
boundary = left
value = 710
[../]
[]
[Materials]
[./fuel_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0
[../]
[./fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1
temperature = temp2
stress_free_temperature = 700.0
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./reduced_order_eigenstrain]
type = ComputeReducedOrderEigenstrain
input_eigenstrain_names = 'thermal_eigenstrain'
eigenstrain_name = 'reduced_eigenstrain'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
num_steps = 1
nl_rel_tol = 1e-8 #1e-12
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[]
[VectorPostprocessors]
[./hydro]
type = LineValueSampler
warn_discontinuous_face_values = false
num_points = 100
start_point = '1 0.07e-3 0'
end_point = '3 0.07e-3 0'
sort_by = x
variable = 'hydro_constant hydro_first hydro_second temp2 disp_x disp_y'
[../]
[]
[Outputs]
exodus = true
[]
(test/tests/auxkernels/copy_value_aux/copy_aux.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0
xmax = 3.141
ymin = 0
ymax = 3.141
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[w]
family = MONOMIAL
order = CONSTANT
[]
[u_copy]
[]
[w_copy]
family = MONOMIAL
order = CONSTANT
[]
[]
[ICs]
[u_ic]
type = FunctionIC
variable = 'u'
function = parsed_function
[]
[w_ic]
type = FunctionIC
variable = 'w'
function = 'x + y'
[]
[]
[Functions]
[parsed_function]
type = ParsedFunction
expression = 'sin(x)-cos(y/2)'
[]
[]
[AuxKernels]
[copy_u]
type = CopyValueAux
variable = u_copy
source = u
[]
[copy_w]
type = CopyValueAux
variable = w_copy
source = w
[]
[]
[VectorPostprocessors]
[results]
type = LineValueSampler
start_point = '0.0001 0.99 0'
end_point = '3.14 0.99 0'
variable = 'u w u_copy w_copy'
num_points = 17
sort_by = x
[]
[]
[Problem]
solve = false
[]
[Executioner]
type = Steady
[]
[Outputs]
csv = true
[]
(modules/combined/examples/stochastic/graphite_ring_thermomechanics.i)
# Generate 1/4 of a 2-ring disk and extrude it by half to obtain
# 1/8 of a 3D tube. Mirror boundary conditions will exist on the
# cut portions.
[Mesh]
[disk]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '1.0 1.1 1.2'
rings = '1 1 1'
has_outer_square = false
preserve_volumes = false
portion = top_right
[]
[ring]
type = BlockDeletionGenerator
input = disk
block = 1
new_boundary = 'inner'
[]
[cylinder]
type = MeshExtruderGenerator
input = ring
extrusion_vector = '0 0 1.5'
num_layers = 15
bottom_sideset = 'back'
top_sideset = 'front'
[]
[]
[Variables]
[T]
initial_condition = 300
[]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = T
[]
[TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[]
[BCs]
[temp_inner]
type = FunctionNeumannBC
variable = T
boundary = 'inner'
function = surface_source
[]
[temp_front]
type = ConvectiveHeatFluxBC
variable = T
boundary = 'front'
T_infinity = 300
heat_transfer_coefficient = 10
[]
[temp_outer]
type = ConvectiveHeatFluxBC
variable = T
boundary = 'outer'
T_infinity = 300
heat_transfer_coefficient = 10
[]
# mirror boundary conditions.
[disp_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[disp_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[disp_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0.0
[]
[]
[Materials]
[cond_inner]
type = GenericConstantMaterial
block = 2
prop_names = thermal_conductivity
prop_values = 25
[]
[cond_outer]
type = GenericConstantMaterial
block = 3
prop_names = thermal_conductivity
prop_values = 100
[]
[elasticity_tensor_inner]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
block = 2
[]
[elasticity_tensor_outer]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3.1e5
poissons_ratio = 0.2
block = 3
[]
[thermal_strain_inner]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 2e-6
temperature = T
stress_free_temperature = 300
eigenstrain_name = eigenstrain_inner
block = 2
[]
[thermal_strain_outer]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = T
stress_free_temperature = 300
eigenstrain_name = eigenstrain_outer
block = 3
[]
[strain_inner] #We use small deformation mechanics
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigenstrain_inner'
block = 2
[]
[strain_outer] #We use small deformation mechanics
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigenstrain_outer'
block = 3
[]
[stress] #We use linear elasticity
type = ComputeLinearElasticStress
[]
[]
[Functions]
[surface_source]
type = ParsedFunction
expression = 'Q_t*pi/2.0/3.0 * cos(pi/3.0*z)'
symbol_names = 'Q_t'
symbol_values = heat_source
[]
[]
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
l_max_its = 30
nl_max_its = 100
nl_abs_tol = 1e-9
l_tol = 1e-04
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Controls]
[stochastic]
type = SamplerReceiver
[]
[]
[VectorPostprocessors]
[temp_center]
type = LineValueSampler
variable = T
start_point = '1 0 0'
end_point = '1.2 0 0'
num_points = 11
sort_by = 'x'
[]
[temp_end]
type = LineValueSampler
variable = T
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[dispx_center]
type = LineValueSampler
variable = disp_x
start_point = '1 0 0'
end_point = '1.2 0 0'
num_points = 11
sort_by = 'x'
[]
[dispx_end]
type = LineValueSampler
variable = disp_x
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[dispz_end]
type = LineValueSampler
variable = disp_z
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[]
[Postprocessors]
[heat_source]
type = FunctionValuePostprocessor
function = 1
scale_factor = 10000
execute_on = linear
[]
[temp_center_inner]
type = PointValue
variable = T
point = '1 0 0'
[]
[temp_center_outer]
type = PointValue
variable = T
point = '1.2 0 0'
[]
[temp_end_inner]
type = PointValue
variable = T
point = '1 0 1.5'
[]
[temp_end_outer]
type = PointValue
variable = T
point = '1.2 0 1.5'
[]
[dispx_center_inner]
type = PointValue
variable = disp_x
point = '1 0 0'
[]
[dispx_center_outer]
type = PointValue
variable = disp_x
point = '1.2 0 0'
[]
[dispx_end_inner]
type = PointValue
variable = disp_x
point = '1 0 1.5'
[]
[dispx_end_outer]
type = PointValue
variable = disp_x
point = '1.2 0 1.5'
[]
[dispz_inner]
type = PointValue
variable = disp_z
point = '1 0 1.5'
[]
[dispz_outer]
type = PointValue
variable = disp_z
point = '1.2 0 1.5'
[]
[]
[Outputs]
exodus = false
csv = false
[]
(modules/porous_flow/test/tests/hysteresis/hys_sat_02.i)
# 1-phase hysteresis. Saturation calculation. Primary drying curve with low_extension_type = quadratic
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0
xmax = 10
nx = 100
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = pp
[]
[]
[Variables]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = '1 - x'
[]
[]
[BCs]
[pp]
type = FunctionDirichletBC
variable = pp
function = '1 - x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = pp
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
[]
[saturation_calculator]
type = PorousFlow1PhaseHysP
alpha_d = 10.0
alpha_w = 10.0
n_d = 1.1
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 7.0
low_extension_type = quadratic
porepressure = pp
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[saturation]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[saturation]
type = PorousFlowPropertyAux
variable = saturation
property = saturation
phase = 0
[]
[]
[VectorPostprocessors]
[sat]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0 0'
end_point = '9.5 0 0'
num_points = 10
sort_by = x
variable = 'saturation pp'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(modules/phase_field/test/tests/KKS_system/auxkernel.i)
#
# This test checks if the two phase and lagrange multiplier solutions can be replicated
# with a two order parameter approach, where the second order parameter eta2 is an
# auxiliary variable that is set as eta2 := 1 - eta1
# The solution is reproduced, but convergence is suboptimal, as important Jacobian
# terms for eta1 (that should come indirectly from eta2) are missing.
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 5
[]
[AuxVariables]
[Fglobal]
order = CONSTANT
family = MONOMIAL
[]
# order parameter 2
[eta2]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
[]
#
# With this approach the derivative w.r.t. eta1 is lost in all terms depending on
# eta2 a potential fix would be to make eta2 a material property with derivatives.
# This would require a major rewrite of the phase field kernels, though.
#
[AuxKernels]
[eta2]
type = ParsedAux
variable = eta2
expression = '1-eta1'
coupled_variables = eta1
[]
[]
[Variables]
# concentration
[c]
order = FIRST
family = LAGRANGE
[InitialCondition]
type = FunctionIC
function = x/5
[]
[]
# order parameter 1
[eta1]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
# phase concentration 1
[c1]
order = FIRST
family = LAGRANGE
initial_condition = 0.9
[]
# phase concentration 2
[c2]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[]
[]
[Materials]
# simple toy free energies
[f1] # = fd
type = DerivativeParsedMaterial
property_name = F1
coupled_variables = 'c1'
expression = '(0.9-c1)^2'
[]
[f2] # = fm
type = DerivativeParsedMaterial
property_name = F2
coupled_variables = 'c2'
expression = '(0.1-c2)^2'
[]
# Switching functions for each phase
[h1_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta1
function_name = h1
[]
[h2_eta]
type = DerivativeParsedMaterial
material_property_names = 'h1(eta1)'
expression = '1-h1'
property_name = h2
coupled_variables = eta1
[]
# Coefficients for diffusion equation
[Dh1]
type = DerivativeParsedMaterial
material_property_names = 'D h1(eta1)'
expression = D*h1
property_name = Dh1
coupled_variables = eta1
[]
[Dh2]
type = DerivativeParsedMaterial
material_property_names = 'D h2(eta1)'
expression = 'D*h2'
property_name = Dh2
coupled_variables = eta1
[]
# Barrier functions for each phase
[g1]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta1
function_name = g1
[]
[g2]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta2
function_name = g2
[]
# constant properties
[constants]
type = GenericConstantMaterial
prop_names = 'D L kappa'
prop_values = '0.7 0.7 0.2'
[]
[]
[Kernels]
#Kernels for diffusion equation
[diff_time]
type = TimeDerivative
variable = c
[]
[diff_c1]
type = MatDiffusion
variable = c
diffusivity = Dh1
v = c1
args = eta1
[]
[diff_c2]
type = MatDiffusion
variable = c
diffusivity = Dh2
v = c2
args = eta1
[]
# Kernels for Allen-Cahn equation for eta1
[deta1dt]
type = TimeDerivative
variable = eta1
[]
[ACBulkF1]
type = KKSMultiACBulkF
variable = eta1
Fj_names = 'F1 F2'
hj_names = 'h1 h2'
gi_name = g1
eta_i = eta1
wi = 0.2
coupled_variables = 'c1 c2 eta2'
[]
[ACBulkC1]
type = KKSMultiACBulkC
variable = eta1
Fj_names = 'F1 F2'
hj_names = 'h1 h2'
cj_names = 'c1 c2'
eta_i = eta1
coupled_variables = 'eta2'
[]
[ACInterface1]
type = ACInterface
variable = eta1
kappa_name = kappa
[]
# Phase concentration constraints
[chempot12]
type = KKSPhaseChemicalPotential
variable = c1
cb = c2
fa_name = F1
fb_name = F2
[]
[phaseconcentration]
type = KKSMultiPhaseConcentration
variable = c2
cj = 'c1 c2'
hj_names = 'h1 h2'
etas = 'eta1 eta2'
c = c
[]
[]
[AuxKernels]
[Fglobal_total]
type = KKSMultiFreeEnergy
Fj_names = 'F1 F2 '
hj_names = 'h1 h2 '
gj_names = 'g1 g2 '
variable = Fglobal
w = 0.2
interfacial_vars = 'eta1 eta2 '
kappa_names = 'kappa kappa'
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu '
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-10
nl_abs_tol = 1.0e-11
end_time = 350
dt = 10
[]
[Preconditioning]
[full]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[c]
type = LineValueSampler
variable = c
start_point = '0 0 0'
end_point = '5 0 0'
num_points = 21
sort_by = x
[]
[]
[Outputs]
csv = true
execute_on = FINAL
[]
(modules/porous_flow/test/tests/pressure_pulse/pressure_pulse_1d_2phasePS.i)
# Pressure pulse in 1D with 2 phases, 2components - transient
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 100
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[ppwater]
initial_condition = 2e6
[]
[sgas]
initial_condition = 0.3
[]
[]
[AuxVariables]
[massfrac_ph0_sp0]
family = MONOMIAL
order = FIRST
initial_condition = 1
[]
[massfrac_ph1_sp0]
family = MONOMIAL
order = FIRST
initial_condition = 0
[]
[ppgas]
family = MONOMIAL
order = FIRST
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = ppwater
[]
[flux0]
type = PorousFlowAdvectiveFlux
variable = ppwater
fluid_component = 0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = sgas
[]
[flux1]
type = PorousFlowAdvectiveFlux
variable = sgas
fluid_component = 1
[]
[]
[AuxKernels]
[ppgas]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = ppgas
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'ppwater sgas'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 1e5
[]
[]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 2e7
density0 = 1
thermal_expansion = 0
viscosity = 1e-5
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = ppwater
phase1_saturation = sgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1e-15 0 0 0 1e-15 0 0 0 1e-15'
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 0
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityCorey
n = 1
phase = 1
[]
[]
[BCs]
[leftwater]
type = DirichletBC
boundary = left
value = 3e6
variable = ppwater
[]
[rightwater]
type = DirichletBC
boundary = right
value = 2e6
variable = ppwater
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-20 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1e3
end_time = 1e4
[]
[VectorPostprocessors]
[pp]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'ppwater ppgas'
start_point = '0 0 0'
end_point = '100 0 0'
num_points = 11
[]
[]
[Outputs]
file_base = pressure_pulse_1d_2phasePS
print_linear_residuals = false
[csv]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/newton_cooling/nc06.i)
# Newton cooling from a bar. 1-phase and heat, steady
[Mesh]
type = GeneratedMesh
dim = 2
nx = 100
ny = 1
xmin = 0
xmax = 100
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pressure temp'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[Variables]
[pressure]
[]
[temp]
[]
[]
[ICs]
# have to start these reasonably close to their steady-state values
[pressure]
type = FunctionIC
variable = pressure
function = '(2-x/100)*1E6'
[]
[temperature]
type = FunctionIC
variable = temp
function = 100+0.1*x
[]
[]
[Kernels]
[flux]
type = PorousFlowAdvectiveFlux
fluid_component = 0
gravity = '0 0 0'
variable = pressure
[]
[heat_advection]
type = PorousFlowHeatAdvection
gravity = '0 0 0'
variable = temp
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1e6
density0 = 1000
thermal_expansion = 0
viscosity = 1e-3
cv = 1e6
porepressure_coefficient = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-15 0 0 0 1E-15 0 0 0 1E-15'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey # irrelevant in this fully-saturated situation
n = 2
phase = 0
[]
[]
[BCs]
[leftp]
type = DirichletBC
variable = pressure
boundary = left
value = 2E6
[]
[leftt]
type = DirichletBC
variable = temp
boundary = left
value = 100
[]
[newtonp]
type = PorousFlowPiecewiseLinearSink
variable = pressure
boundary = right
pt_vals = '0 100000 200000 300000 400000 500000 600000 700000 800000 900000 1000000 1100000 1200000 1300000 1400000 1500000 1600000 1700000 1800000 1900000 2000000'
multipliers = '0. 5.6677197748570516e-6 0.000011931518841831313 0.00001885408740732065 0.000026504708864284114 0.000034959953203725676 0.000044304443352900224 0.00005463170211001232 0.00006604508815181467 0.00007865883048198513 0.00009259917167338928 0.00010800563134618119 0.00012503240252705603 0.00014384989486488752 0.00016464644014777016 0.00018763017719085535 0.0002130311349595711 0.00024110353477682344 0.00027212833465544285 0.00030641604122040985 0.00034430981736352295'
use_mobility = false
use_relperm = false
fluid_phase = 0
flux_function = 1
[]
[newton]
type = PorousFlowPiecewiseLinearSink
variable = temp
boundary = right
pt_vals = '0 100000 200000 300000 400000 500000 600000 700000 800000 900000 1000000 1100000 1200000 1300000 1400000 1500000 1600000 1700000 1800000 1900000 2000000'
multipliers = '0. 5.6677197748570516e-6 0.000011931518841831313 0.00001885408740732065 0.000026504708864284114 0.000034959953203725676 0.000044304443352900224 0.00005463170211001232 0.00006604508815181467 0.00007865883048198513 0.00009259917167338928 0.00010800563134618119 0.00012503240252705603 0.00014384989486488752 0.00016464644014777016 0.00018763017719085535 0.0002130311349595711 0.00024110353477682344 0.00027212833465544285 0.00030641604122040985 0.00034430981736352295'
use_mobility = false
use_relperm = false
use_internal_energy = true
fluid_phase = 0
flux_function = 1
[]
[]
[VectorPostprocessors]
[porepressure]
type = LineValueSampler
variable = pressure
start_point = '0 0.5 0'
end_point = '100 0.5 0'
sort_by = x
num_points = 11
execute_on = timestep_end
[]
[temperature]
type = LineValueSampler
variable = temp
start_point = '0 0.5 0'
end_point = '100 0.5 0'
sort_by = x
num_points = 11
execute_on = timestep_end
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_max_it -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol '
petsc_options_value = 'gmres asm lu 100 NONZERO 2 1E-8 1E-15'
[]
[]
[Executioner]
type = Steady
solve_type = Newton
[]
[Outputs]
file_base = nc06
execute_on = timestep_end
[along_line]
type = CSV
execute_vector_postprocessors_on = timestep_end
[]
[]
(modules/porous_flow/test/tests/sinks/s13.i)
# Apply a PorousFlowOutflowBC to the right-hand side and watch fluid flow to it
#
# This test has a single phase with two components. The test initialises with
# the porous material fully filled with component=1. The left-hand side is fixed
# at porepressure=1 and mass-fraction of the zeroth component being unity.
# The right-hand side has
# - porepressure fixed at zero via a DirichletBC: physically this removes component=1
# to ensure that porepressure remains fixed
# - a PorousFlowOutflowBC for the component=0 to allow that component to exit the boundary freely
#
# Therefore, the zeroth fluid component will flow from left to right (down the
# pressure gradient).
#
# The important DE is
# porosity * dc/dt = (perm / visc) * grad(P) * grad(c)
# which is true for c = mass-fraction, and very large bulk modulus of the fluid.
# For grad(P) constant in time and space (as in this example) this is just the
# advection equation for c, with velocity = perm / visc / porosity. The parameters
# are chosen to velocity = 1 m/s.
# In the numerical world, and especially with full upwinding, the advection equation
# suffers from diffusion. In this example, the diffusion is obvious when plotting
# the mass-fraction along the line, but the average velocity of the front is still
# correct at 1 m/s.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[pp]
[]
[frac]
[]
[]
[PorousFlowFullySaturated]
fp = simple_fluid
porepressure = pp
mass_fraction_vars = frac
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = 1-x
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1e10 # need large in order for constant-velocity advection
density0 = 1 # irrelevant
thermal_expansion = 0
viscosity = 11
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 1.1 0 0 0 1.1'
[]
[]
[BCs]
[lhs_fixed_b]
type = DirichletBC
boundary = left
variable = pp
value = 1
[]
[rhs_fixed_b]
type = DirichletBC
boundary = right
variable = pp
value = 0
[]
[lhs_fixed_a]
type = DirichletBC
boundary = left
variable = frac
value = 1
[]
[outflow_a]
type = PorousFlowOutflowBC
boundary = right
include_relperm = false # no need for relperm in this fully-saturated simulation
mass_fraction_component = 0
variable = frac
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = 'asm lu NONZERO 2'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1E-2
end_time = 1
nl_rel_tol = 1E-12
nl_abs_tol = 1E-12
[]
[VectorPostprocessors]
[mf]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 100
sort_by = x
variable = frac
[]
[]
[Outputs]
[console]
type = Console
execute_on = 'nonlinear linear'
[]
[csv]
type = CSV
sync_times = '0.1 0.5 1'
sync_only = true
[]
time_step_interval = 10
[]
(modules/heat_transfer/tutorials/introduction/therm_step02a.i)
#
# Single block thermal input with a line value sampler
# https://mooseframework.inl.gov/modules/heat_transfer/tutorials/introduction/therm_step02.html
#
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Variables]
[T]
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 300
boundary = 'left'
[]
[t_right]
type = FunctionDirichletBC
variable = T
function = '300+5*t'
boundary = 'right'
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[VectorPostprocessors]
[t_sampler]
type = LineValueSampler
variable = T
start_point = '0 0.5 0'
end_point = '2 0.5 0'
num_points = 20
sort_by = x
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = therm_step02a_out
execute_on = final
[]
[]
(modules/porous_flow/test/tests/capillary_pressure/vangenuchten2.i)
# Test van Genuchten relative permeability curve by varying saturation over the mesh
# van Genuchten exponent m = 0.5 for both phases
# No residual saturation in either phase
[Mesh]
type = GeneratedMesh
dim = 1
nx = 500
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[p0aux]
family = MONOMIAL
order = CONSTANT
[]
[p1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[p0]
type = PorousFlowPropertyAux
property = pressure
phase = 0
variable = p0aux
[]
[p1]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = p1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1e-5
m = 0.5
sat_lr = 0.1
log_extension = true
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityVG
phase = 0
m = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityCorey
phase = 1
n = 2
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
variable = 's0aux s1aux p0aux p1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 500
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-6
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/heat_transfer/test/tests/truss_heat_conduction/rectangle_w_line.i)
[Mesh]
parallel_type = 'replicated'
[rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 50
xmin = -0.5
xmax = 0.5
ymin = -1.25
ymax = 1.25
boundary_name_prefix = rectangle
[]
[rectangle_id]
type = SubdomainIDGenerator
input = rectangle
subdomain_id = 1
[]
[line]
type = GeneratedMeshGenerator
dim = 1
xmin = -0.5
xmax = 0.5
nx = 10
boundary_name_prefix = line
boundary_id_offset = 10
[]
[line_id]
type = SubdomainIDGenerator
input = line
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'rectangle_id line_id'
[]
[blcok_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'rectangle line'
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[time_derivative]
type = HeatConductionTimeDerivative
variable = temperature
block = 'rectangle'
[]
[heat_conduction]
type = HeatConduction
variable = temperature
block = 'rectangle'
[]
[time_derivative_line]
type = TrussHeatConductionTimeDerivative
variable = temperature
area = area
block = 'line'
[]
[heat_conduction_line]
type = TrussHeatConduction
variable = temperature
area = area
block = 'line'
[]
[]
[AuxVariables]
[area]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[area]
type = ConstantAux
variable = area
value = 0.1 # strip thickness
execute_on = 'initial timestep_begin'
[]
[]
[Constraints]
[equalvalue]
type = EqualValueEmbeddedConstraint
secondary = 'line'
primary = 'rectangle'
penalty = 1e6
formulation = kinematic
primary_variable = temperature
variable = temperature
[]
[]
[Materials]
[rectangle]
type = GenericConstantMaterial
block = 'rectangle'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '1.0 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[line]
type = GenericConstantMaterial
block = 'line'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '10.0 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[]
[BCs]
[right]
type = FunctionDirichletBC
variable = temperature
boundary = 'rectangle_right line_right'
function = '10*t'
[]
[]
[VectorPostprocessors]
[x_n0_25]
type = LineValueSampler
start_point = '-0.25 0 0'
end_point = '-0.25 1.25 0'
num_points = 100
variable = 'temperature'
sort_by = id
[]
[x_0_25]
type = LineValueSampler
start_point = '0.25 0 0'
end_point = '0.25 1.25 0'
num_points = 100
variable = 'temperature'
sort_by = id
[]
[]
[Executioner]
type = Transient
start_time = 0
dt = 1
end_time = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = 'csv/rectangle_w_line'
time_data = true
[]
[]
(modules/porous_flow/test/tests/infiltration_and_drainage/bw01.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 400
ny = 1
xmin = -10
xmax = 10
ymin = 0
ymax = 0.05
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Functions]
[dts]
type = PiecewiseLinear
y = '1E-5 1E-2 1E-2 1E-1'
x = '0 1E-5 1 10'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = pressure
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureBW
Sn = 0.0
Ss = 1.0
C = 1.5
las = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
viscosity = 4
density0 = 10
thermal_expansion = 0
[]
[]
[Materials]
[massfrac]
type = PorousFlowMassFraction
[]
[temperature]
type = PorousFlowTemperature
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[relperm]
type = PorousFlowRelativePermeabilityBW
Sn = 0.0
Ss = 1.0
Kn = 0
Ks = 1
C = 1.5
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.25
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1 0 0 0 1 0 0 0 1'
[]
[]
[Variables]
[pressure]
initial_condition = -9E2
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pressure
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pressure
gravity = '-0.1 0 0'
[]
[]
[AuxVariables]
[SWater]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[SWater]
type = MaterialStdVectorAux
property = PorousFlow_saturation_qp
index = 0
variable = SWater
[]
[]
[BCs]
[recharge]
type = PorousFlowSink
variable = pressure
boundary = right
flux_function = -1.25 # corresponds to Rstar being 0.5 because i have to multiply by density*porosity
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E-10 1E-10 10000'
[]
[]
[VectorPostprocessors]
[swater]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = SWater
start_point = '-10 0 0'
end_point = '10 0 0'
sort_by = x
num_points = 101
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_converged_reason'
end_time = 8
[TimeStepper]
type = FunctionDT
function = dts
[]
[]
[Outputs]
file_base = bw01
sync_times = '0.5 2 8'
[exodus]
type = Exodus
sync_only = true
[]
[along_line]
type = CSV
sync_only = true
[]
[]
(test/tests/outputs/postprocessor_final/postprocessor_final.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = CoefDiffusion
variable = u
coef = 0.1
[../]
[./time]
type = TimeDerivative
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[VectorPostprocessors]
[./vpp]
type = LineValueSampler
variable = u
start_point = '0 0 0'
end_point = '1 1 0'
outputs = test
num_points = 10
sort_by = id
[../]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
[./test]
type = CSV
execute_on = final
[../]
[]
(modules/porous_flow/test/tests/numerical_diffusion/framework.i)
# Using framework objects: no mass lumping or upwinding
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[Variables]
[tracer]
[]
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = TimeDerivative
variable = tracer
[]
[flux]
type = ConservativeAdvection
velocity = '0.1 0 0'
variable = tracer
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-1
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_3D.i)
# Using flux-limited TVD advection ala Kuzmin and Turek, employing PorousFlow Kernels and UserObjects, with superbee flux-limiter
# 3D version
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
xmin = 0
xmax = 1
ny = 4
ymin = 0
ymax = 0.5
nz = 3
zmin = 0
zmax = 2
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = tracer
[]
[flux0]
type = PorousFlowFluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = advective_flux_calculator_0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = porepressure
[]
[flux1]
type = PorousFlowFluxLimitedTVDAdvection
variable = porepressure
advective_flux_calculator = advective_flux_calculator_1
[]
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure tracer'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[advective_flux_calculator_0]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 0
[]
[advective_flux_calculator_1]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = tracer
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = the_simple_fluid
phase = 0
[]
[relperm]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0.5 2'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 0.3
dt = 6E-2
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
print_linear_residuals = false
[out]
type = CSV
execute_on = final
[]
[]
(modules/porous_flow/test/tests/relperm/brooks_corey2.i)
# Test Brooks-Corey relative permeability curve by varying saturation over the mesh
# Exponent lambda = 2 for both phases
# Residual saturation of phase 0: s0r = 0.2
# Residual saturation of phase 1: s1r = 0.3
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[p0]
initial_condition = 1e6
[]
[s1]
[]
[]
[AuxVariables]
[s0aux]
family = MONOMIAL
order = CONSTANT
[]
[s1aux]
family = MONOMIAL
order = CONSTANT
[]
[kr0aux]
family = MONOMIAL
order = CONSTANT
[]
[kr1aux]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s0]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = s0aux
[]
[s1]
type = PorousFlowPropertyAux
property = saturation
phase = 1
variable = s1aux
[]
[kr0]
type = PorousFlowPropertyAux
property = relperm
phase = 0
variable = kr0aux
[]
[kr1]
type = PorousFlowPropertyAux
property = relperm
phase = 1
variable = kr1aux
[]
[]
[Functions]
[s1]
type = ParsedFunction
expression = x
[]
[]
[ICs]
[s1]
type = FunctionIC
variable = s1
function = s1
[]
[]
[Kernels]
[p0]
type = Diffusion
variable = p0
[]
[s1]
type = Diffusion
variable = s1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p0 s1'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = p0
phase1_saturation = s1
capillary_pressure = pc
[]
[kr0]
type = PorousFlowRelativePermeabilityBC
phase = 0
lambda = 2
s_res = 0.2
sum_s_res = 0.5
[]
[kr1]
type = PorousFlowRelativePermeabilityBC
phase = 1
lambda = 2
nw_phase = true
s_res = 0.3
sum_s_res = 0.5
[]
[]
[VectorPostprocessors]
[vpp]
type = LineValueSampler
warn_discontinuous_face_values = false
variable = 's0aux s1aux kr0aux kr1aux'
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 20
sort_by = id
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-8
[]
[BCs]
[sleft]
type = DirichletBC
variable = s1
value = 0
boundary = left
[]
[sright]
type = DirichletBC
variable = s1
value = 1
boundary = right
[]
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(modules/porous_flow/test/tests/newton_cooling/nc04.i)
# Newton cooling from a bar. Heat conduction
[Mesh]
type = GeneratedMesh
dim = 2
nx = 100
ny = 1
xmin = 0
xmax = 100
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp'
number_fluid_phases = 0
number_fluid_components = 0
[]
[]
[Variables]
[temp]
[]
[]
[ICs]
[temp]
type = FunctionIC
variable = temp
function = '2-x/100'
[]
[]
[Kernels]
[conduction]
type = PorousFlowHeatConduction
variable = temp
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[thermal_conductivity_irrelevant]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '1E2 0 0 0 1E2 0 0 0 1E2'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = left
value = 2
[]
[newton]
type = PorousFlowPiecewiseLinearSink
variable = temp
boundary = right
pt_vals = '0 1 2'
multipliers = '-1 0 1'
flux_function = 1
[]
[]
[VectorPostprocessors]
[temp]
type = LineValueSampler
variable = temp
start_point = '0 0.5 0'
end_point = '100 0.5 0'
sort_by = x
num_points = 11
execute_on = timestep_end
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_max_it -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol '
petsc_options_value = 'gmres asm lu 100 NONZERO 2 1E-14 1E-12'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
file_base = nc04
execute_on = timestep_end
exodus = false
[along_line]
type = CSV
execute_vector_postprocessors_on = timestep_end
[]
[]
(modules/combined/examples/publications/rapid_dev/fig6.i)
#
# Fig. 6 input for 10.1016/j.commatsci.2017.02.017
# D. Schwen et al./Computational Materials Science 132 (2017) 36-45
# Three phase interface simulation demonstrating the interfacial stability
# w.r.t. formation of a tspurious third phase
#
[Mesh]
type = GeneratedMesh
dim = 2
nx = 120
ny = 120
nz = 0
xmin = 0
xmax = 40
ymin = 0
ymax = 40
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Variables]
# concentration
[./c]
[../]
# order parameter 1
[./eta1]
[../]
# order parameter 2
[./eta2]
[../]
# order parameter 3
[./eta3]
[../]
# phase concentration 1
[./c1]
initial_condition = 0.4
[../]
# phase concentration 2
[./c2]
initial_condition = 0.5
[../]
# phase concentration 3
[./c3]
initial_condition = 0.8
[../]
# Lagrange multiplier
[./lambda]
initial_condition = 0.0
[../]
[]
[AuxVariables]
[./T]
[./InitialCondition]
type = FunctionIC
function = 'x-10'
[../]
[../]
[]
[Functions]
[./ic_func_eta1]
type = ParsedFunction
expression = '0.5*(1.0+tanh((x-10)/sqrt(2.0))) * 0.5*(1.0+tanh((y-10)/sqrt(2.0)))'
[../]
[./ic_func_eta2]
type = ParsedFunction
expression = '0.5*(1.0-tanh((x-10)/sqrt(2.0)))'
[../]
[./ic_func_eta3]
type = ParsedFunction
expression = '1 - 0.5*(1.0-tanh((x-10)/sqrt(2.0)))
- 0.5*(1.0+tanh((x-10)/sqrt(2.0))) * 0.5*(1.0+tanh((y-10)/sqrt(2.0)))'
[../]
[./ic_func_c]
type = ParsedFunction
expression = '0.5 * 0.5*(1.0-tanh((x-10)/sqrt(2.0)))
+ 0.4 * 0.5*(1.0+tanh((x-10)/sqrt(2.0))) * 0.5*(1.0+tanh((y-10)/sqrt(2.0)))
+ 0.8 * (1 - 0.5*(1.0-tanh((x-10)/sqrt(2.0)))
- 0.5*(1.0+tanh((x-10)/sqrt(2.0))) * 0.5*(1.0+tanh((y-10)/sqrt(2.0))))'
[../]
[]
[ICs]
[./eta1]
variable = eta1
type = FunctionIC
function = ic_func_eta1
[../]
[./eta2]
variable = eta2
type = FunctionIC
function = ic_func_eta2
[../]
[./eta3]
variable = eta3
type = FunctionIC
function = ic_func_eta3
[../]
[./c]
variable = c
type = FunctionIC
function = ic_func_c
[../]
[]
[Materials]
# simple toy free energies
[./f1]
type = DerivativeParsedMaterial
property_name = F1
coupled_variables = 'c1'
expression = '20*(c1-0.4)^2'
[../]
[./f2]
type = DerivativeParsedMaterial
property_name = F2
coupled_variables = 'c2 T'
expression = '20*(c2-0.5)^2 + 0.01*T'
[../]
[./f3]
type = DerivativeParsedMaterial
property_name = F3
coupled_variables = 'c3'
expression = '20*(c3-0.8)^2'
[../]
# Switching functions for each phase
# h1(eta1, eta2, eta3)
[./h1]
type = SwitchingFunction3PhaseMaterial
eta_i = eta1
eta_j = eta2
eta_k = eta3
f_name = h1
[../]
# h2(eta1, eta2, eta3)
[./h2]
type = SwitchingFunction3PhaseMaterial
eta_i = eta2
eta_j = eta3
eta_k = eta1
f_name = h2
[../]
# h3(eta1, eta2, eta3)
[./h3]
type = SwitchingFunction3PhaseMaterial
eta_i = eta3
eta_j = eta1
eta_k = eta2
f_name = h3
[../]
# Coefficients for diffusion equation
[./Dh1]
type = DerivativeParsedMaterial
material_property_names = 'D h1'
expression = D*h1
property_name = Dh1
[../]
[./Dh2]
type = DerivativeParsedMaterial
material_property_names = 'D h2'
expression = D*h2
property_name = Dh2
[../]
[./Dh3]
type = DerivativeParsedMaterial
material_property_names = 'D h3'
expression = D*h3
property_name = Dh3
[../]
# Barrier functions for each phase
[./g1]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta1
function_name = g1
[../]
[./g2]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta2
function_name = g2
[../]
[./g3]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta3
function_name = g3
[../]
# constant properties
[./constants]
type = GenericConstantMaterial
prop_names = 'L kappa D'
prop_values = '1.0 1.0 1'
[../]
[]
[Kernels]
#Kernels for diffusion equation
[./diff_time]
type = TimeDerivative
variable = c
[../]
[./diff_c1]
type = MatDiffusion
variable = c
diffusivity = Dh1
v = c1
[../]
[./diff_c2]
type = MatDiffusion
variable = c
diffusivity = Dh2
v = c2
[../]
[./diff_c3]
type = MatDiffusion
variable = c
diffusivity = Dh3
v = c3
[../]
# Kernels for Allen-Cahn equation for eta1
[./deta1dt]
type = TimeDerivative
variable = eta1
[../]
[./ACBulkF1]
type = KKSMultiACBulkF
variable = eta1
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
gi_name = g1
eta_i = eta1
wi = 1.0
args = 'c1 c2 c3 eta2 eta3'
[../]
[./ACBulkC1]
type = KKSMultiACBulkC
variable = eta1
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
cj_names = 'c1 c2 c3'
eta_i = eta1
args = 'eta2 eta3'
[../]
[./ACInterface1]
type = ACInterface
variable = eta1
kappa_name = kappa
[../]
[./multipler1]
type = MatReaction
variable = eta1
v = lambda
reaction_rate = L
[../]
# Kernels for Allen-Cahn equation for eta2
[./deta2dt]
type = TimeDerivative
variable = eta2
[../]
[./ACBulkF2]
type = KKSMultiACBulkF
variable = eta2
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
gi_name = g2
eta_i = eta2
wi = 1.0
args = 'c1 c2 c3 eta1 eta3'
[../]
[./ACBulkC2]
type = KKSMultiACBulkC
variable = eta2
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
cj_names = 'c1 c2 c3'
eta_i = eta2
args = 'eta1 eta3'
[../]
[./ACInterface2]
type = ACInterface
variable = eta2
kappa_name = kappa
[../]
[./multipler2]
type = MatReaction
variable = eta2
v = lambda
reaction_rate = L
[../]
# Kernels for the Lagrange multiplier equation
[./mult_lambda]
type = MatReaction
variable = lambda
reaction_rate = 3
[../]
[./mult_ACBulkF_1]
type = KKSMultiACBulkF
variable = lambda
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
gi_name = g1
eta_i = eta1
wi = 1.0
mob_name = 1
args = 'c1 c2 c3 eta2 eta3'
[../]
[./mult_ACBulkC_1]
type = KKSMultiACBulkC
variable = lambda
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
cj_names = 'c1 c2 c3'
eta_i = eta1
args = 'eta2 eta3'
mob_name = 1
[../]
[./mult_CoupledACint_1]
type = SimpleCoupledACInterface
variable = lambda
v = eta1
kappa_name = kappa
mob_name = 1
[../]
[./mult_ACBulkF_2]
type = KKSMultiACBulkF
variable = lambda
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
gi_name = g2
eta_i = eta2
wi = 1.0
mob_name = 1
args = 'c1 c2 c3 eta1 eta3'
[../]
[./mult_ACBulkC_2]
type = KKSMultiACBulkC
variable = lambda
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
cj_names = 'c1 c2 c3'
eta_i = eta2
args = 'eta1 eta3'
mob_name = 1
[../]
[./mult_CoupledACint_2]
type = SimpleCoupledACInterface
variable = lambda
v = eta2
kappa_name = kappa
mob_name = 1
[../]
[./mult_ACBulkF_3]
type = KKSMultiACBulkF
variable = lambda
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
gi_name = g3
eta_i = eta3
wi = 1.0
mob_name = 1
args = 'c1 c2 c3 eta1 eta2'
[../]
[./mult_ACBulkC_3]
type = KKSMultiACBulkC
variable = lambda
Fj_names = 'F1 F2 F3'
hj_names = 'h1 h2 h3'
cj_names = 'c1 c2 c3'
eta_i = eta3
args = 'eta1 eta2'
mob_name = 1
[../]
[./mult_CoupledACint_3]
type = SimpleCoupledACInterface
variable = lambda
v = eta3
kappa_name = kappa
mob_name = 1
[../]
# Kernels for constraint equation eta1 + eta2 + eta3 = 1
# eta3 is the nonlinear variable for the constraint equation
[./eta3reaction]
type = MatReaction
variable = eta3
reaction_rate = 1
[../]
[./eta1reaction]
type = MatReaction
variable = eta3
v = eta1
reaction_rate = 1
[../]
[./eta2reaction]
type = MatReaction
variable = eta3
v = eta2
reaction_rate = 1
[../]
[./one]
type = BodyForce
variable = eta3
value = -1.0
[../]
# Phase concentration constraints
[./chempot12]
type = KKSPhaseChemicalPotential
variable = c1
cb = c2
fa_name = F1
fb_name = F2
[../]
[./chempot23]
type = KKSPhaseChemicalPotential
variable = c2
cb = c3
fa_name = F2
fb_name = F3
[../]
[./phaseconcentration]
type = KKSMultiPhaseConcentration
variable = c3
cj = 'c1 c2 c3'
hj_names = 'h1 h2 h3'
etas = 'eta1 eta2 eta3'
c = c
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm ilu nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-10
nl_abs_tol = 1.0e-11
num_steps = 1000
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.2
optimal_iterations = 10
iteration_window = 2
[../]
[]
[Preconditioning]
active = 'full'
[./full]
type = SMP
full = true
[../]
[./mydebug]
type = FDP
full = true
[../]
[]
[Outputs]
exodus = true
checkpoint = true
print_linear_residuals = false
[./csv]
type = CSV
execute_on = 'final'
[../]
[]
#[VectorPostprocessors]
# [./c]
# type = LineValueSampler
# start_point = '-25 0 0'
# end_point = '25 0 0'
# variable = c
# num_points = 151
# sort_by = id
# execute_on = timestep_end
# [../]
# [./eta1]
# type = LineValueSampler
# start_point = '-25 0 0'
# end_point = '25 0 0'
# variable = eta1
# num_points = 151
# sort_by = id
# execute_on = timestep_end
# [../]
# [./eta2]
# type = LineValueSampler
# start_point = '-25 0 0'
# end_point = '25 0 0'
# variable = eta2
# num_points = 151
# sort_by = id
# execute_on = timestep_end
# [../]
# [./eta3]
# type = LineValueSampler
# start_point = '-25 0 0'
# end_point = '25 0 0'
# variable = eta3
# num_points = 151
# sort_by = id
# execute_on = timestep_end
# [../]
#[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_2.i)
# SubApp with 2D model to test multi app vectorpostprocessor to aux var transfer
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.150080 0.0'
variable = 'axial_strain temp'
num_points = 21
sort_by = 'y'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(modules/porous_flow/test/tests/thm_rehbinder/fixed_outer.i)
[Mesh]
[annular]
type = AnnularMeshGenerator
nr = 40
nt = 16
rmin = 0.1
rmax = 1
dmin = 0.0
dmax = 90
growth_r = 1.1
[]
[make3D]
input = annular
type = MeshExtruderGenerator
bottom_sideset = bottom
top_sideset = top
extrusion_vector = '0 0 1'
num_layers = 1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
biot_coefficient = 1.0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[temperature]
[]
[]
[BCs]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'top bottom'
[]
[ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = dmin
[]
[xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = dmax
[]
[cavity_temperature]
type = DirichletBC
variable = temperature
value = 1000
boundary = rmin
[]
[cavity_porepressure]
type = DirichletBC
variable = porepressure
value = 1E6
boundary = rmin
[]
[cavity_zero_effective_stress_x]
type = Pressure
variable = disp_x
function = 1E6
boundary = rmin
use_displaced_mesh = false
[]
[cavity_zero_effective_stress_y]
type = Pressure
variable = disp_y
function = 1E6
boundary = rmin
use_displaced_mesh = false
[]
[outer_temperature]
type = DirichletBC
variable = temperature
value = 0
boundary = rmax
[]
[outer_pressure]
type = DirichletBC
variable = porepressure
value = 0
boundary = rmax
[]
[fixed_outer_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = rmax
[]
[fixed_outer_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = rmax
[]
[]
[AuxVariables]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_pp]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_rr
scalar_type = RadialStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[stress_pp]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_pp
scalar_type = HoopStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 1E12
viscosity = 1.0E-3
density0 = 1000.0
cv = 1000.0
cp = 1000.0
porepressure_coefficient = 0.0
[]
[]
[PorousFlowBasicTHM]
coupling_type = ThermoHydroMechanical
multiply_by_density = false
add_stress_aux = true
porepressure = porepressure
temperature = temperature
eigenstrain_names = thermal_contribution
gravity = '0 0 0'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1E10
poissons_ratio = 0.2
[]
[strain]
type = ComputeSmallStrain
eigenstrain_names = thermal_contribution
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temperature
thermal_expansion_coeff = 1E-6
eigenstrain_name = thermal_contribution
stress_free_temperature = 0.0
[]
[stress]
type = ComputeLinearElasticStress
[]
[porosity]
type = PorousFlowPorosityConst # only the initial value of this is ever used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
solid_bulk_compliance = 1E-10
fluid_bulk_modulus = 1E12
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-12 0 0 0 1E-12 0 0 0 1E-12'
[]
[thermal_expansion]
type = PorousFlowConstantThermalExpansionCoefficient
fluid_coefficient = 1E-6
drained_coefficient = 1E-6
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '1E6 0 0 0 1E6 0 0 0 1E6'
[]
[]
[VectorPostprocessors]
[P]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = porepressure
[]
[T]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = temperature
[]
[U]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = disp_x
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_rtol'
petsc_options_value = 'gmres asm lu 1E-8'
[]
[]
[Executioner]
type = Steady
solve_type = Newton
[]
[Outputs]
file_base = fixed_outer
execute_on = timestep_end
csv = true
[]
(modules/heat_transfer/tutorials/introduction/therm_step03a.i)
#
# Single block thermal input with time derivative and volumetric heat source terms
# https://mooseframework.inl.gov/modules/heat_transfer/tutorials/introduction/therm_step03.html
#
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Variables]
[T]
initial_condition = 300.0
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[time_derivative]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = HeatSource
variable = T
value = 1e4
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
specific_heat = 0.5
[]
[density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 8000.0
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 300
boundary = 'left'
[]
[t_right]
type = FunctionDirichletBC
variable = T
function = '300+5*t'
boundary = 'right'
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[VectorPostprocessors]
[t_sampler]
type = LineValueSampler
variable = T
start_point = '0 0.5 0'
end_point = '2 0.5 0'
num_points = 20
sort_by = x
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = therm_step03a_out
execute_on = final
[]
[]
(test/tests/vectorpostprocessors/line_value_sampler/csv_delimiter.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[AuxVariables]
[./v]
initial_condition = 1.23456789
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
variable = 'u v'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = id
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[./csv]
type = CSV
delimiter = ' '
precision = 5
[../]
[]
(modules/phase_field/test/tests/KKS_system/nonlinear.i)
#
# This test checks if the thwo phase and lagrange multiplier solutions can be replicated
# with a two order parameter approach, where the second order parameter eta2 is a
# nonlinear variable that is set as eta2 := 1 - eta1 (using Reaction, CoupledForce, and BodyForce)
# The solution is reproduced.
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 5
[]
[AuxVariables]
[Fglobal]
order = CONSTANT
family = MONOMIAL
[]
[]
[Variables]
# concentration
[c]
order = FIRST
family = LAGRANGE
[InitialCondition]
type = FunctionIC
function = x/5
[]
[]
# order parameter 1
[eta1]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
# order parameter 2
[eta2]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[]
# phase concentration 1
[c1]
order = FIRST
family = LAGRANGE
initial_condition = 0.9
[]
# phase concentration 2
[c2]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[]
[]
[Materials]
# simple toy free energies
[f1] # = fd
type = DerivativeParsedMaterial
property_name = F1
coupled_variables = 'c1'
expression = '(0.9-c1)^2'
[]
[f2] # = fm
type = DerivativeParsedMaterial
property_name = F2
coupled_variables = 'c2'
expression = '(0.1-c2)^2'
[]
# Switching functions for each phase
[h1_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta1
function_name = h1
[]
[h2_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta2
function_name = h2
[]
# Coefficients for diffusion equation
[Dh1]
type = DerivativeParsedMaterial
material_property_names = 'D h1(eta1)'
expression = D*h1
property_name = Dh1
coupled_variables = eta1
[]
[Dh2]
type = DerivativeParsedMaterial
material_property_names = 'D h2(eta2)'
expression = D*h2
property_name = Dh2
coupled_variables = eta2
[]
# Barrier functions for each phase
[g1]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta1
function_name = g1
[]
[g2]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta2
function_name = g2
[]
# constant properties
[constants]
type = GenericConstantMaterial
prop_names = 'D L kappa'
prop_values = '0.7 0.7 0.2'
[]
[]
[Kernels]
#Kernels for diffusion equation
[diff_time]
type = TimeDerivative
variable = c
[]
[diff_c1]
type = MatDiffusion
variable = c
diffusivity = Dh1
v = c1
args = 'eta1'
[]
[diff_c2]
type = MatDiffusion
variable = c
diffusivity = Dh2
v = c2
args = 'eta2'
[]
# Kernels for Allen-Cahn equation for eta1
[deta1dt]
type = TimeDerivative
variable = eta1
[]
[ACBulkF1]
type = KKSMultiACBulkF
variable = eta1
Fj_names = 'F1 F2 '
hj_names = 'h1 h2 '
gi_name = g1
eta_i = eta1
wi = 0.2
coupled_variables = 'c1 c2 eta2'
[]
[ACBulkC1]
type = KKSMultiACBulkC
variable = eta1
Fj_names = 'F1 F2'
hj_names = 'h1 h2'
cj_names = 'c1 c2'
eta_i = eta1
coupled_variables = 'eta2'
[]
[ACInterface1]
type = ACInterface
variable = eta1
kappa_name = kappa
[]
# Phase concentration constraints
[chempot12]
type = KKSPhaseChemicalPotential
variable = c1
cb = c2
fa_name = F1
fb_name = F2
[]
[phaseconcentration]
type = KKSMultiPhaseConcentration
variable = c2
cj = 'c1 c2'
hj_names = 'h1 h2'
etas = 'eta1 eta2'
c = c
[]
# equation for eta2 = 1 - eta1
# 0 = eta2 + eta1 -1
[constraint_eta1] # eta2
type = Reaction
variable = eta2
[]
[constraint_eta2] # + eta1
type = CoupledForce
variable = eta2
coef = -1
v = eta1
[]
[constraint_one] # - 1
type = BodyForce
variable = eta2
[]
[]
[AuxKernels]
[Fglobal_total]
type = KKSMultiFreeEnergy
Fj_names = 'F1 F2 '
hj_names = 'h1 h2 '
gj_names = 'g1 g2 '
variable = Fglobal
w = 0.2
interfacial_vars = 'eta1 eta2 '
kappa_names = 'kappa kappa'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'lu nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-10
nl_abs_tol = 1.0e-11
end_time = 350
dt = 10
[]
[VectorPostprocessors]
[c]
type = LineValueSampler
variable = c
start_point = '0 0 0'
end_point = '5 0 0'
num_points = 21
sort_by = x
[]
[]
[Outputs]
csv = true
execute_on = FINAL
[]
(modules/phase_field/examples/multiphase/GrandPotential3Phase.i)
# This is an example of implementation of the multi-phase, multi-order parameter
# grand potential based phase-field model described in Phys. Rev. E, 98, 023309
# (2018). It includes 3 phases with 1 grain of each phase. This example was used
# to generate the results shown in Fig. 3 of the paper.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 60
xmin = -15
xmax = 15
[]
[Variables]
[./w]
[../]
[./etaa0]
[../]
[./etab0]
[../]
[./etad0]
[../]
[]
[ICs]
[./IC_etaa0]
type = FunctionIC
variable = etaa0
function = ic_func_etaa0
[../]
[./IC_etab0]
type = FunctionIC
variable = etab0
function = ic_func_etab0
[../]
[./IC_etad0]
type = ConstantIC
variable = etad0
value = 0.1
[../]
[./IC_w]
type = FunctionIC
variable = w
function = ic_func_w
[../]
[]
[Functions]
[./ic_func_etaa0]
type = ParsedFunction
expression = '0.9*0.5*(1.0-tanh((x)/sqrt(2.0)))'
[../]
[./ic_func_etab0]
type = ParsedFunction
expression = '0.9*0.5*(1.0+tanh((x)/sqrt(2.0)))'
[../]
[./ic_func_w]
type = ParsedFunction
expression = 0
[../]
[]
[Kernels]
# Order parameter eta_alpha0
[./ACa0_bulk]
type = ACGrGrMulti
variable = etaa0
v = 'etab0 etad0'
gamma_names = 'gab gad'
[../]
[./ACa0_sw]
type = ACSwitching
variable = etaa0
Fj_names = 'omegaa omegab omegad'
hj_names = 'ha hb hd'
coupled_variables = 'etab0 etad0 w'
[../]
[./ACa0_int]
type = ACInterface
variable = etaa0
kappa_name = kappa
[../]
[./ea0_dot]
type = TimeDerivative
variable = etaa0
[../]
# Order parameter eta_beta0
[./ACb0_bulk]
type = ACGrGrMulti
variable = etab0
v = 'etaa0 etad0'
gamma_names = 'gab gbd'
[../]
[./ACb0_sw]
type = ACSwitching
variable = etab0
Fj_names = 'omegaa omegab omegad'
hj_names = 'ha hb hd'
coupled_variables = 'etaa0 etad0 w'
[../]
[./ACb0_int]
type = ACInterface
variable = etab0
kappa_name = kappa
[../]
[./eb0_dot]
type = TimeDerivative
variable = etab0
[../]
# Order parameter eta_delta0
[./ACd0_bulk]
type = ACGrGrMulti
variable = etad0
v = 'etaa0 etab0'
gamma_names = 'gad gbd'
[../]
[./ACd0_sw]
type = ACSwitching
variable = etad0
Fj_names = 'omegaa omegab omegad'
hj_names = 'ha hb hd'
coupled_variables = 'etaa0 etab0 w'
[../]
[./ACd0_int]
type = ACInterface
variable = etad0
kappa_name = kappa
[../]
[./ed0_dot]
type = TimeDerivative
variable = etad0
[../]
#Chemical potential
[./w_dot]
type = SusceptibilityTimeDerivative
variable = w
f_name = chi
coupled_variables = 'etaa0 etab0 etad0'
[../]
[./Diffusion]
type = MatDiffusion
variable = w
diffusivity = Dchi
args = ''
[../]
[./coupled_etaa0dot]
type = CoupledSwitchingTimeDerivative
variable = w
v = etaa0
Fj_names = 'rhoa rhob rhod'
hj_names = 'ha hb hd'
coupled_variables = 'etaa0 etab0 etad0'
[../]
[./coupled_etab0dot]
type = CoupledSwitchingTimeDerivative
variable = w
v = etab0
Fj_names = 'rhoa rhob rhod'
hj_names = 'ha hb hd'
coupled_variables = 'etaa0 etab0 etad0'
[../]
[./coupled_etad0dot]
type = CoupledSwitchingTimeDerivative
variable = w
v = etad0
Fj_names = 'rhoa rhob rhod'
hj_names = 'ha hb hd'
coupled_variables = 'etaa0 etab0 etad0'
[../]
[]
[Materials]
[./ha_test]
type = SwitchingFunctionMultiPhaseMaterial
h_name = ha
all_etas = 'etaa0 etab0 etad0'
phase_etas = 'etaa0'
[../]
[./hb_test]
type = SwitchingFunctionMultiPhaseMaterial
h_name = hb
all_etas = 'etaa0 etab0 etad0'
phase_etas = 'etab0'
[../]
[./hd_test]
type = SwitchingFunctionMultiPhaseMaterial
h_name = hd
all_etas = 'etaa0 etab0 etad0'
phase_etas = 'etad0'
[../]
[./omegaa]
type = DerivativeParsedMaterial
coupled_variables = 'w'
property_name = omegaa
material_property_names = 'Vm ka caeq'
expression = '-0.5*w^2/Vm^2/ka-w/Vm*caeq'
derivative_order = 2
[../]
[./omegab]
type = DerivativeParsedMaterial
coupled_variables = 'w'
property_name = omegab
material_property_names = 'Vm kb cbeq'
expression = '-0.5*w^2/Vm^2/kb-w/Vm*cbeq'
derivative_order = 2
[../]
[./omegad]
type = DerivativeParsedMaterial
coupled_variables = 'w'
property_name = omegad
material_property_names = 'Vm kd cdeq'
expression = '-0.5*w^2/Vm^2/kd-w/Vm*cdeq'
derivative_order = 2
[../]
[./rhoa]
type = DerivativeParsedMaterial
coupled_variables = 'w'
property_name = rhoa
material_property_names = 'Vm ka caeq'
expression = 'w/Vm^2/ka + caeq/Vm'
derivative_order = 2
[../]
[./rhob]
type = DerivativeParsedMaterial
coupled_variables = 'w'
property_name = rhob
material_property_names = 'Vm kb cbeq'
expression = 'w/Vm^2/kb + cbeq/Vm'
derivative_order = 2
[../]
[./rhod]
type = DerivativeParsedMaterial
coupled_variables = 'w'
property_name = rhod
material_property_names = 'Vm kd cdeq'
expression = 'w/Vm^2/kd + cdeq/Vm'
derivative_order = 2
[../]
[./c]
type = ParsedMaterial
material_property_names = 'Vm rhoa rhob rhod ha hb hd'
expression = 'Vm * (ha * rhoa + hb * rhob + hd * rhod)'
property_name = c
[../]
[./const]
type = GenericConstantMaterial
prop_names = 'kappa_c kappa L D Vm ka caeq kb cbeq kd cdeq gab gad gbd mu tgrad_corr_mult'
prop_values = '0 1 1.0 1.0 1.0 10.0 0.1 10.0 0.9 10.0 0.5 1.5 1.5 1.5 1.0 0.0'
[../]
[./Mobility]
type = DerivativeParsedMaterial
property_name = Dchi
material_property_names = 'D chi'
expression = 'D*chi'
derivative_order = 2
[../]
[./chi]
type = DerivativeParsedMaterial
property_name = chi
material_property_names = 'Vm ha(etaa0,etab0,etad0) ka hb(etaa0,etab0,etad0) kb hd(etaa0,etab0,etad0) kd'
expression = '(ha/ka + hb/kb + hd/kd) / Vm^2'
coupled_variables = 'etaa0 etab0 etad0'
derivative_order = 2
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[VectorPostprocessors]
[./etaa0]
type = LineValueSampler
variable = etaa0
start_point = '-15 0 0'
end_point = '15 0 0'
num_points = 61
sort_by = x
execute_on = 'initial timestep_end final'
[../]
[./etab0]
type = LineValueSampler
variable = etab0
start_point = '-15 0 0'
end_point = '15 0 0'
num_points = 61
sort_by = x
execute_on = 'initial timestep_end final'
[../]
[./etad0]
type = LineValueSampler
variable = etad0
start_point = '-15 0 0'
end_point = '15 0 0'
num_points = 61
sort_by = x
execute_on = 'initial timestep_end final'
[../]
[]
[Executioner]
type = Transient
nl_max_its = 15
scheme = bdf2
solve_type = PJFNK
petsc_options_iname = -pc_type
petsc_options_value = asm
l_max_its = 15
l_tol = 1.0e-3
nl_rel_tol = 1.0e-8
start_time = 0.0
num_steps = 20
nl_abs_tol = 1e-10
dt = 1.0
[]
[Outputs]
[./exodus]
type = Exodus
execute_on = 'initial timestep_end final'
time_step_interval = 1
[../]
[./csv]
type = CSV
execute_on = 'initial timestep_end final'
time_step_interval = 1
[../]
[]
(modules/porous_flow/test/tests/thm_rehbinder/free_outer.i)
[Mesh]
[annular]
type = AnnularMeshGenerator
nr = 40
nt = 16
rmin = 0.1
rmax = 1
dmin = 0.0
dmax = 90
growth_r = 1.1
[]
[make3D]
input = annular
type = MeshExtruderGenerator
bottom_sideset = bottom
top_sideset = top
extrusion_vector = '0 0 1'
num_layers = 1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
biot_coefficient = 1.0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[temperature]
[]
[]
[BCs]
# sideset 1 = outer
# sideset 2 = cavity
# sideset 3 = ymin
# sideset 4 = xmin
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'top bottom'
[]
[ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = dmin
[]
[xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = dmax
[]
[cavity_temperature]
type = DirichletBC
variable = temperature
value = 1000
boundary = rmin
[]
[cavity_porepressure]
type = DirichletBC
variable = porepressure
value = 1E6
boundary = rmin
[]
[cavity_zero_effective_stress_x]
type = Pressure
variable = disp_x
function = 1E6
boundary = rmin
use_displaced_mesh = false
[]
[cavity_zero_effective_stress_y]
type = Pressure
variable = disp_y
function = 1E6
boundary = rmin
use_displaced_mesh = false
[]
[outer_temperature]
type = DirichletBC
variable = temperature
value = 0
boundary = rmax
[]
[outer_pressure]
type = DirichletBC
variable = porepressure
value = 0
boundary = rmax
[]
[]
[AuxVariables]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_pp]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_rr
scalar_type = RadialStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[stress_pp]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_pp
scalar_type = HoopStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 1E12
viscosity = 1.0E-3
density0 = 1000.0
cv = 1000.0
cp = 1000.0
porepressure_coefficient = 0.0
[]
[]
[PorousFlowBasicTHM]
coupling_type = ThermoHydroMechanical
multiply_by_density = false
add_stress_aux = true
porepressure = porepressure
temperature = temperature
eigenstrain_names = thermal_contribution
gravity = '0 0 0'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1E10
poissons_ratio = 0.2
[]
[strain]
type = ComputeSmallStrain
eigenstrain_names = thermal_contribution
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temperature
thermal_expansion_coeff = 1E-6
eigenstrain_name = thermal_contribution
stress_free_temperature = 0.0
[]
[stress]
type = ComputeLinearElasticStress
[]
[porosity]
type = PorousFlowPorosityConst # only the initial value of this is ever used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
solid_bulk_compliance = 1E-10
fluid_bulk_modulus = 1E12
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-12 0 0 0 1E-12 0 0 0 1E-12'
[]
[thermal_expansion]
type = PorousFlowConstantThermalExpansionCoefficient
fluid_coefficient = 1E-6
drained_coefficient = 1E-6
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '1E6 0 0 0 1E6 0 0 0 1E6'
[]
[]
[VectorPostprocessors]
[P]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = porepressure
[]
[T]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = temperature
[]
[U]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = disp_x
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_rtol'
petsc_options_value = 'gmres asm lu 1E-8'
[]
[]
[Executioner]
type = Steady
solve_type = Newton
[]
[Outputs]
file_base = free_outer
execute_on = timestep_end
csv = true
[]
(modules/porous_flow/test/tests/dirackernels/bh07.i)
# Comparison with analytical solution for cylindrically-symmetric situation
[Mesh]
type = FileMesh
file = bh07_input.e
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Functions]
[dts]
type = PiecewiseLinear
y = '1000 10000'
x = '100 1000'
[]
[]
[Variables]
[pp]
initial_condition = 1E7
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[fflux]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pp
gravity = '0 0 0'
[]
[]
[BCs]
[fix_outer]
type = DirichletBC
boundary = perimeter
variable = pp
value = 1E7
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp'
number_fluid_phases = 1
number_fluid_components = 1
[]
[borehole_total_outflow_mass]
type = PorousFlowSumQuantity
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
viscosity = 1e-3
density0 = 1000
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-11 0 0 0 1E-11 0 0 0 1E-11'
[]
[relperm]
type = PorousFlowRelativePermeabilityFLAC
m = 2
phase = 0
[]
[]
[DiracKernels]
[bh]
type = PorousFlowPeacemanBorehole
variable = pp
SumQuantityUO = borehole_total_outflow_mass
point_file = bh07.bh
fluid_phase = 0
bottom_p_or_t = 0
unit_weight = '0 0 0'
use_mobility = true
re_constant = 0.1594 # use Chen and Zhang version
character = 2 # double the strength because bh07.bh only fills half the mesh
[]
[]
[Postprocessors]
[bh_report]
type = PorousFlowPlotQuantity
uo = borehole_total_outflow_mass
execute_on = 'initial timestep_end'
[]
[fluid_mass]
type = PorousFlowFluidMass
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[pp]
type = LineValueSampler
variable = pp
start_point = '0 0 0'
end_point = '300 0 0'
sort_by = x
num_points = 300
execute_on = timestep_end
[]
[]
[Preconditioning]
[usual]
type = SMP
full = true
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -ksp_max_it'
petsc_options_value = 'bcgs bjacobi 1E-10 1E-10 10000 30'
[]
[]
[Executioner]
type = Transient
end_time = 1E3
solve_type = NEWTON
[TimeStepper]
# get only marginally better results for smaller time steps
type = FunctionDT
function = dts
[]
[]
[Outputs]
file_base = bh07
[along_line]
type = CSV
execute_on = final
[]
[exodus]
type = Exodus
execute_on = 'initial final'
[]
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp2_uo_transfer.i)
# This test involves only thermal expansion strains on a 2x2x2 cube of approximate
# steel material. An initial temperature of 25 degrees C is given for the material,
# and an auxkernel is used to calculate the temperature in the entire cube to
# raise the temperature each time step. After the first timestep,in which the
# temperature jumps, the temperature increases by 6.25C each timestep.
# The thermal strain increment should therefore be
# 6.25 C * 1.3e-5 1/C = 8.125e-5 m/m.
# This test is also designed to be used to identify problems with restart files
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(1000.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.150080 0.0'
variable = axial_strain
num_points = 11
sort_by = 'id'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(modules/stochastic_tools/test/tests/surrogates/nearest_point/sub_vector.i)
L = 1
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 1
nx = 100
xmax = ${L}
elem_type = EDGE3
[]
[]
[Variables]
[T]
order = SECOND
family = LAGRANGE
[]
[]
[Kernels]
[diff]
type = MatDiffusion
variable = T
diffusivity = k
[]
[source]
type = BodyForce
variable = T
value = 10000
[]
[]
[Materials]
[conductivity]
type = GenericConstantMaterial
prop_names = k
prop_values = 2.0
[]
[]
[BCs]
[right]
type = DirichletBC
variable = T
boundary = right
value = 300
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[VectorPostprocessors]
[T_vec]
type = LineValueSampler
variable = T
start_point = '0 0 0'
end_point = '${L} 0 0'
num_points = 10
sort_by = x
[]
[]
(modules/navier_stokes/test/tests/auxkernels/liquid-fraction-aux/liquid-fraction-fv-aux.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 1
nx = 5
[]
[]
[AuxVariables]
[fl]
type = MooseVariableFVReal
[]
[T]
type = MooseVariableFVReal
[]
[]
[ICs]
[FunctionIC]
type = FunctionIC
variable = T
function = '10 + x'
[]
[]
[AuxKernels]
[liquid_fraction]
type = NSLiquidFractionAux
variable = fl
temperature = T
T_liquidus = 20
T_solidus = 10
[]
[]
[VectorPostprocessors]
[T]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '0.9 0 0'
num_points = 5
variable = T
sort_by = x
[]
[fl]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '0.9 0 0'
num_points = 5
variable = fl
sort_by = x
[]
[]
[Problem]
solve = false
[]
[Executioner]
type = Steady
[]
[Outputs]
csv = true
[]
(modules/stochastic_tools/test/tests/surrogates/polynomial_regression/sub_vector.i)
L = 1
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 1
nx = 100
xmax = ${L}
elem_type = EDGE3
[]
[]
[Variables]
[T]
order = SECOND
family = LAGRANGE
[]
[]
[Kernels]
[diff]
type = MatDiffusion
variable = T
diffusivity = k
[]
[source]
type = BodyForce
variable = T
value = 10000
[]
[]
[Materials]
[conductivity]
type = GenericConstantMaterial
prop_names = k
prop_values = 2.0
[]
[]
[BCs]
[right]
type = DirichletBC
variable = T
boundary = right
value = 300
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[VectorPostprocessors]
[T_vec]
type = LineValueSampler
variable = T
start_point = '0 0 0'
end_point = '${L} 0 0'
num_points = 10
sort_by = x
[]
[]
(modules/rdg/test/tests/advection_1d/rdgP0.i)
# This test demonstrates the advection of a tracer in 1D using the RDG module.
# There is no slope limiting. Changing the SlopeLimiting scheme to minmod, mc,
# or superbee means that a linear reconstruction is performed, and the slope
# limited according to the scheme chosen. Doing this produces RDG(P0P1) and
# substantially reduces numerical diffusion
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[Variables]
[./tracer]
order = CONSTANT
family = MONOMIAL
[../]
[]
[ICs]
[./tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[../]
[]
[UserObjects]
[./lslope]
type = AEFVSlopeLimitingOneD
execute_on = 'linear'
scheme = 'none' #none | minmod | mc | superbee
u = tracer
[../]
[./internal_side_flux]
type = AEFVUpwindInternalSideFlux
execute_on = 'linear'
velocity = 0.1
[../]
[./free_outflow_bc]
type = AEFVFreeOutflowBoundaryFlux
execute_on = 'linear'
velocity = 0.1
[../]
[]
[Kernels]
[./dot]
type = TimeDerivative
variable = tracer
[../]
[]
[DGKernels]
[./concentration]
type = AEFVKernel
variable = tracer
component = 'concentration'
flux = internal_side_flux
u = tracer
[../]
[]
[BCs]
[./concentration]
type = AEFVBC
boundary = 'left right'
variable = tracer
component = 'concentration'
flux = free_outflow_bc
u = tracer
[../]
[]
[Materials]
[./aefv]
type = AEFVMaterial
slope_limiting = lslope
u = tracer
[../]
[]
[VectorPostprocessors]
[./tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 100
sort_by = x
variable = tracer
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
end_time = 6
dt = 6E-1
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
#exodus = true
csv = true
execute_on = final
[]
(modules/stochastic_tools/test/tests/surrogates/cross_validation/sub_vector.i)
L = 1
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 1
nx = 100
xmax = ${L}
elem_type = EDGE3
[]
[]
[Variables]
[T]
order = SECOND
family = LAGRANGE
[]
[]
[Kernels]
[diff]
type = MatDiffusion
variable = T
diffusivity = k
[]
[source]
type = BodyForce
variable = T
value = 10000
[]
[]
[Materials]
[conductivity]
type = GenericConstantMaterial
prop_names = k
prop_values = 2.0
[]
[]
[BCs]
[right]
type = DirichletBC
variable = T
boundary = right
value = 300
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[VectorPostprocessors]
[T_vec]
type = LineValueSampler
variable = T
start_point = '0 0 0'
end_point = '${L} 0 0'
num_points = 10
sort_by = x
[]
[]
(modules/porous_flow/test/tests/buckley_leverett/bl01.i)
# Buckley-Leverett 1-phase.
# The front starts at (around) x=5, and at t=50 it should
# have moved to x=9.6. The version below has a nonzero
# suction function, and at t=50, the front sits between
# (about) x=9.6 and x=9.9. Changing the van-Genuchten
# al parameter to 1E-4 softens the front so it sits between
# (about) x=9.7 and x=10.4, and the simulation runs much faster.
# With al=1E-2 and nx=600, the front sits between x=9.6 and x=9.8,
# but takes about 100 times longer to run.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 150
xmin = 0
xmax = 15
[]
[GlobalParams]
PorousFlowDictator = dictator
compute_enthalpy = false
compute_internal_energy = false
[]
[Variables]
[pp]
[InitialCondition]
type = FunctionIC
function = 'max((1000000-x/5*1000000)-20000,-20000)'
[]
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pp
gravity = '0 0 0'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = pp
boundary = left
value = 980000
[]
[]
[AuxVariables]
[sat]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[sat]
type = MaterialStdVectorAux
variable = sat
execute_on = timestep_end
index = 0
property = PorousFlow_saturation_qp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-3
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e6
viscosity = 1e-3
density0 = 1000
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-10 0 0 0 1E-10 0 0 0 1E-10'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.15
[]
[]
[Preconditioning]
active = andy
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres bjacobi 1E-10 1E-10 20'
[]
[]
[Functions]
[timestepper]
type = PiecewiseLinear
x = '0 0.01 0.1 1 1.5 2 20 30 40 50'
y = '0.01 0.1 0.2 0.3 0.1 0.3 0.3 0.4 0.4 0.5'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 50
[TimeStepper]
type = FunctionDT
function = timestepper
[]
[]
[VectorPostprocessors]
[pp]
type = LineValueSampler
start_point = '0 0 0'
end_point = '15 0 0'
num_points = 150
sort_by = x
variable = pp
[]
[sat]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0 0 0'
end_point = '15 0 0'
num_points = 150
sort_by = x
variable = sat
[]
[]
[Outputs]
file_base = bl01
[csv]
type = CSV
sync_only = true
sync_times = '0.01 50'
[]
[exodus]
type = Exodus
execute_on = 'initial final'
[]
[]
(modules/porous_flow/test/tests/flux_limited_TVD_pflow/pffltvd_1D.i)
# Using flux-limited TVD advection ala Kuzmin and Turek, mploying PorousFlow Kernels and UserObjects, with superbee flux-limiter
# 1D version
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[porepressure]
[]
[tracer]
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '1 - x'
[]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.3,0,1))'
[]
[]
[Kernels]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = tracer
[]
[flux0]
type = PorousFlowFluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = advective_flux_calculator_0
[]
[mass1]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = porepressure
[]
[flux1]
type = PorousFlowFluxLimitedTVDAdvection
variable = porepressure
advective_flux_calculator = advective_flux_calculator_1
[]
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1
boundary = left
[]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_component_1]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 1
use_mobility = true
flux_function = 1E3
[]
[remove_component_0]
type = PorousFlowPiecewiseLinearSink
variable = tracer
boundary = right
fluid_phase = 0
pt_vals = '0 1E3'
multipliers = '0 1E3'
mass_fraction_component = 0
use_mobility = true
flux_function = 1E3
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
thermal_expansion = 0
viscosity = 1.0
density0 = 1000.0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure tracer'
number_fluid_phases = 1
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[advective_flux_calculator_0]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 0
[]
[advective_flux_calculator_1]
type = PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent
flux_limiter_type = superbee
fluid_component = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = tracer
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = the_simple_fluid
phase = 0
[]
[relperm]
type = PorousFlowRelativePermeabilityConst
phase = 0
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-2 0 0 0 1E-2 0 0 0 1E-2'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 11
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
nl_abs_tol = 1E-8
timestep_tolerance = 1E-3
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(modules/stochastic_tools/examples/parameter_study/diffusion_time.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables/T]
initial_condition = 300
[]
[Kernels]
[time]
type = ADTimeDerivative
variable = T
[]
[diff]
type = ADMatDiffusion
variable = T
diffusivity = diffusivity
[]
[source]
type = ADBodyForce
variable = T
value = 100
function = 1
[]
[]
[BCs]
[left]
type = ADDirichletBC
variable = T
boundary = left
value = 300
[]
[right]
type = ADNeumannBC
variable = T
boundary = right
value = -100
[]
[]
[Materials/constant]
type = ADGenericConstantMaterial
prop_names = 'diffusivity'
prop_values = 1
[]
[Executioner]
type = Transient
num_steps = 4
dt = 0.25
[]
[Postprocessors]
[T_avg]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[q_left]
type = ADSideDiffusiveFluxAverage
variable = T
boundary = left
diffusivity = diffusivity
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[T_vec]
type = LineValueSampler
variable = T
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = x
execute_on = 'initial timestep_end'
[]
[]
[Controls/stochastic]
type = SamplerReceiver
[]
[Outputs]
[]
(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
[]
[]
[Problem]
# massfrac0 has an initial condition despite the restart
allow_initial_conditions_with_restart = true
[]
[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
[]
[]
[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
[]
(modules/porous_flow/test/tests/newton_cooling/nc08.i)
# Newton cooling from a bar. 1-phase ideal fluid and heat, steady
[Mesh]
type = GeneratedMesh
dim = 2
nx = 100
ny = 1
xmin = 0
xmax = 100
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pressure temp'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[Variables]
[pressure]
[]
[temp]
[]
[]
[ICs]
# have to start these reasonably close to their steady-state values
[pressure]
type = FunctionIC
variable = pressure
function = '200-0.5*x'
[]
[temperature]
type = FunctionIC
variable = temp
function = 180+0.1*x
[]
[]
[Kernels]
[flux]
type = PorousFlowAdvectiveFlux
fluid_component = 0
gravity = '0 0 0'
variable = pressure
[]
[heat_advection]
type = PorousFlowHeatAdvection
gravity = '0 0 0'
variable = temp
[]
[]
[FluidProperties]
[idealgas]
type = IdealGasFluidProperties
molar_mass = 1.4
gamma = 1.2
mu = 1.2
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[dens0]
type = PorousFlowSingleComponentFluid
fp = idealgas
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 1.1 0 0 0 1.1'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey # irrelevant in this fully-saturated situation
n = 2
phase = 0
[]
[]
[BCs]
[leftp]
type = DirichletBC
variable = pressure
boundary = left
value = 200
[]
[leftt]
type = DirichletBC
variable = temp
boundary = left
value = 180
[]
[newtonp]
type = PorousFlowPiecewiseLinearSink
variable = pressure
boundary = right
pt_vals = '-200 0 200'
multipliers = '-200 0 200'
use_mobility = true
use_relperm = true
fluid_phase = 0
flux_function = 0.005 # 1/2/L
[]
[newtont]
type = PorousFlowPiecewiseLinearSink
variable = temp
boundary = right
pt_vals = '-200 0 200'
multipliers = '-200 0 200'
use_mobility = true
use_relperm = true
use_enthalpy = true
fluid_phase = 0
flux_function = 0.005 # 1/2/L
[]
[]
[VectorPostprocessors]
[porepressure]
type = LineValueSampler
variable = pressure
start_point = '0 0.5 0'
end_point = '100 0.5 0'
sort_by = x
num_points = 11
execute_on = timestep_end
[]
[temperature]
type = LineValueSampler
variable = temp
start_point = '0 0.5 0'
end_point = '100 0.5 0'
sort_by = x
num_points = 11
execute_on = timestep_end
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = Newton
nl_rel_tol = 1E-10
nl_abs_tol = 1E-15
[]
[Outputs]
file_base = nc08
execute_on = timestep_end
[along_line]
type = CSV
execute_vector_postprocessors_on = timestep_end
[]
[]
(modules/porous_flow/test/tests/flux_limited_TVD_advection/fltvd_2D_trimesh.i)
# Using Flux-Limited TVD Advection ala Kuzmin and Turek, with antidiffusion from superbee flux limiting
# 2D version
[Mesh]
type = FileMesh
file = trimesh.msh
[]
[GlobalParams]
block = '50'
[]
[Variables]
[tracer]
[]
[]
[ICs]
[tracer]
type = FunctionIC
variable = tracer
function = 'if(x<0.1,0,if(x>0.305,0,1))'
[]
[]
[Kernels]
[mass_dot]
type = MassLumpedTimeDerivative
variable = tracer
[]
[flux]
type = FluxLimitedTVDAdvection
variable = tracer
advective_flux_calculator = fluo
[]
[]
[UserObjects]
[fluo]
type = AdvectiveFluxCalculatorConstantVelocity
flux_limiter_type = superbee
u = tracer
velocity = '0.1 0 0'
[]
[]
[BCs]
[no_tracer_on_left]
type = DirichletBC
variable = tracer
value = 0
boundary = left
[]
[remove_tracer]
# Ideally, an OutflowBC would be used, but that does not exist in the framework
# In 1D VacuumBC is the same as OutflowBC, with the alpha parameter being twice the velocity
type = VacuumBC
boundary = right
alpha = 0.2 # 2 * velocity
variable = tracer
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[VectorPostprocessors]
[tracer]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0.04 0'
num_points = 101
sort_by = x
variable = tracer
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 6
dt = 6E-2
timestep_tolerance = 1E-3
[]
[Outputs]
print_linear_residuals = false
[out]
type = CSV
execute_on = final
[]
[]
(modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZLinear.i)
#
# This test checks whether the ComputeReducedOrderEigenstrain is functioning properly.
#
# If instead of 'reduced_eigenstrain', 'thermal_eigenstrain' is given to
# eigenstrain_names in the Physics/SolidMechanics/QuasiStatic/all block, the output will be
# quite different.
#
# Open the reducedOrderRZLinear_out_hydro_0001.csv file and plot the hydro variables as
# a function of x. For the reduced order case, the values are smooth across each of the
# two elements with a jump upward from the left element to the right element. However,
# when not using 'reduced_order_eigenstrain', a jump downward appears from the left
# element to the right element.
#
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
coord_type = RZ
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 1
xmax = 3
xmin = 1
ymax = 1
ymin = 0
#second_order = true
[]
[Functions]
[./tempLinear]
type = ParsedFunction
expression = '715-5*x'
[../]
[./tempQuadratic]
type = ParsedFunction
expression = '2.5*x*x-15*x+722.5'
[../]
[./tempCubic]
type = ParsedFunction
expression = '-1.25*x*x*x+11.25*x*x-33.75*x+733.75'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[AuxVariables]
[./hydro_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./hydro_first]
order = FIRST
family = MONOMIAL
[../]
[./hydro_second]
order = SECOND
family = MONOMIAL
[../]
[./sxx_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./sxx_first]
order = FIRST
family = MONOMIAL
[../]
[./sxx_second]
order = SECOND
family = MONOMIAL
[../]
[./szz_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./szz_first]
order = FIRST
family = MONOMIAL
[../]
[./szz_second]
order = SECOND
family = MONOMIAL
[../]
[./temp2]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
add_variables = true
strain = SMALL
incremental = true
temperature = temp2
eigenstrain_names = 'reduced_eigenstrain' #'thermal_eigenstrain'
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temp
[../]
[]
[AuxKernels]
[./hydro_constant_aux]
type = RankTwoScalarAux
variable = hydro_constant
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_first_aux]
type = RankTwoScalarAux
variable = hydro_first
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_second_aux]
type = RankTwoScalarAux
variable = hydro_second
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./sxx_constant_aux]
type = RankTwoAux
variable = sxx_constant
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_first_aux]
type = RankTwoAux
variable = sxx_first
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_second_aux]
type = RankTwoAux
variable = sxx_second
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./szz_constant_aux]
type = RankTwoAux
variable = szz_constant
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_first_aux]
type = RankTwoAux
variable = szz_first
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_second_aux]
type = RankTwoAux
variable = szz_second
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./temp2]
type = FunctionAux
variable = temp2
function = tempLinear
execute_on = timestep_begin
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./temp_right]
type = DirichletBC
variable = temp
boundary = right
value = 700
[../]
[./temp_left]
type = DirichletBC
variable = temp
boundary = left
value = 710
[../]
[]
[Materials]
[./fuel_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0
[../]
[./fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1
temperature = temp2
stress_free_temperature = 700.0
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./reduced_order_eigenstrain]
type = ComputeReducedOrderEigenstrain
input_eigenstrain_names = 'thermal_eigenstrain'
eigenstrain_name = 'reduced_eigenstrain'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
num_steps = 1
nl_rel_tol = 1e-8 #1e-12
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[]
[VectorPostprocessors]
[./hydro]
type = LineValueSampler
warn_discontinuous_face_values = false
num_points = 100
start_point = '1 0.07e-3 0'
end_point = '3 0.07e-3 0'
sort_by = x
variable = 'hydro_constant hydro_first hydro_second temp2 disp_x disp_y'
[../]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_4.i)
# SubApp with 2D model to test multi app vectorpostprocessor to aux var transfer
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.1 0.0'
variable = axial_strain
num_points = 21
sort_by = 'id'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(test/tests/outputs/csv_final_and_latest/final.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = CoefDiffusion
variable = u
coef = 0.1
[../]
[./time]
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 = 10
dt = 0.25
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
# Vector Postprocessor System
[VectorPostprocessors]
[./line_sample]
type = LineValueSampler
execute_on = 'timestep_end final'
variable = 'u'
start_point = '0 0.5 0'
end_point = '1 0.5 0'
num_points = 11
sort_by = id
[../]
[]
[Outputs]
[./out]
type = CSV
execute_on = 'TIMESTEP_END FINAL'
create_final_symlink = true
[../]
[]
(test/tests/fvbcs/fv_functor_dirichlet/fv_other_side.i)
[Mesh]
[cmg]
type = CartesianMeshGenerator
dim = 2
dx = '1 2'
dy = '1.3'
ix = '5 10'
iy = '3'
subdomain_id = '0 1'
[]
[mid]
type = SideSetsBetweenSubdomainsGenerator
input = 'cmg'
primary_block = '0'
paired_block = '1'
new_boundary = 'mid'
[]
[]
[Variables]
[u]
type = MooseVariableFVReal
block = 0
[]
[v]
type = MooseVariableFVReal
block = 1
[]
[]
[FVKernels]
[diffu]
type = FVDiffusion
variable = u
coeff = 1
[]
[diffv]
type = FVDiffusion
variable = v
coeff = 2
block = 1
[]
[source]
type = FVBodyForce
variable = v
value = 1
[]
[]
[FVBCs]
[left]
type = FVDirichletBC
variable = u
boundary = left
value = 4
[]
[mid]
type = FVADFunctorDirichletBC
variable = u
functor = v
functor_only_defined_on_other_side = true
ghost_layers = 3
boundary = mid
[]
[right]
type = FVDirichletBC
variable = v
boundary = right
value = 0.5
[]
[]
[Executioner]
type = Steady
solve_type = 'Newton'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_abs_tol = 1e-12
[]
[VectorPostprocessors]
[u_sample]
type = LineValueSampler
variable = 'u'
start_point = '0.01 0.3 0'
end_point = '0.99 0.3 0'
num_points = 4
sort_by = x
[]
[v_sample]
type = LineValueSampler
variable = 'v'
start_point = '1.01 0.3 0'
end_point = '1.99 0.3 0'
num_points = 4
sort_by = x
[]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/heat_transfer/test/tests/truss_heat_conduction/rectangle_w_strip.i)
[Mesh]
[rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 50
xmin = -0.5
xmax = 0.5
ymin = -1.25
ymax = 1.25
[]
[strip]
type = SubdomainBoundingBoxGenerator
input = rectangle
bottom_left = '-0.5 -0.05 0'
top_right = '0.5 0.05 0'
block_id = 2
block_name = 'strip'
location = INSIDE
[]
[top_bottom_layers]
type = SubdomainBoundingBoxGenerator
input = strip
bottom_left = '-0.5 -0.05 0'
top_right = '0.5 0.05 0'
block_id = 1
block_name = 'rectangle'
location = OUTSIDE
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[time_derivative]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_conduction]
type = HeatConduction
variable = temperature
[]
[]
[Materials]
[block]
type = GenericConstantMaterial
block = 'rectangle'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '1.0 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[strip]
type = GenericConstantMaterial
block = 'strip'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '10.0 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[]
[BCs]
[right]
type = FunctionDirichletBC
variable = temperature
boundary = 'right'
function = '10*t'
[]
[]
[VectorPostprocessors]
[x_n0_25]
type = LineValueSampler
start_point = '-0.25 0 0'
end_point = '-0.25 1.25 0'
num_points = 100
variable = 'temperature'
sort_by = id
[]
[x_0_25]
type = LineValueSampler
start_point = '0.25 0 0'
end_point = '0.25 1.25 0'
num_points = 100
variable = 'temperature'
sort_by = id
[]
[]
[Executioner]
type = Transient
start_time = 0
dt = 1
end_time = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = 'csv/rectangle_w_strip'
time_data = true
[]
[]
(modules/porous_flow/test/tests/dirackernels/theis_rz.i)
# Theis problem: Flow to single sink using BasicTHM
# SinglePhase
# RZ mesh
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 100
bias_x = 1.05
coord_type = RZ
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[pp]
initial_condition = 20E6
[]
[]
[PorousFlowBasicTHM]
dictator_name = dictator
add_darcy_aux = false
fp = simple_fluid
gravity = '0 0 0'
multiply_by_density = false
porepressure = pp
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
viscosity = 0.001
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.05
[]
[biot_mod]
type = PorousFlowConstantBiotModulus
fluid_bulk_modulus = 2E9
biot_coefficient = 1.0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-14 0 0 0 1E-14 0 0 0 1E-14'
[]
[]
[DiracKernels]
[sink]
type = PorousFlowSquarePulsePointSource
point = '0 0 0'
mass_flux = -0.16E-3 # recall this is a volumetric flux because multiply_by_density = false in the Action, so this corresponds to a mass_flux of 0.16 kg/s/m because density=1000
variable = pp
[]
[]
[VectorPostprocessors]
[pp]
type = LineValueSampler
num_points = 25
start_point = '0 0 0'
end_point = '100 0 0'
sort_by = x
variable = pp
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 200
end_time = 1E3
nl_abs_tol = 1e-10
[]
[Outputs]
perf_graph = true
[csv]
type = CSV
execute_on = final
[]
[]
(modules/navier_stokes/test/tests/finite_volume/materials/mixture_material/mixture.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 1
nx = 5
[]
[]
[AuxVariables]
[fl]
type = MooseVariableFVReal
[]
[cp]
type = MooseVariableFVReal
[]
[k]
type = MooseVariableFVReal
[]
[]
[ICs]
[FunctionIC]
type = FunctionIC
variable = fl
function = 'x'
[]
[]
[AuxKernels]
[cp_aux]
type = FunctorAux
functor = cp_mixture
variable = cp
[]
[k_aux]
type = FunctorAux
functor = k_mixture
variable = k
[]
[]
[VectorPostprocessors]
[cp]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '0.9 0 0'
num_points = 5
variable = cp
sort_by = x
[]
[k]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '0.9 0 0'
num_points = 5
variable = k
sort_by = x
[]
[fl]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '0.9 0 0'
num_points = 5
variable = fl
sort_by = x
[]
[]
[Functions]
[cp_solid]
type = ADParsedFunction
expression = '1 - x'
[]
[cp_liquid]
type = ADParsedFunction
expression = 'x'
[]
[k_solid]
type = ADParsedFunction
expression = '2 - 3*x'
[]
[k_liquid]
type = ADParsedFunction
expression = '3*x'
[]
[]
[FunctorMaterials]
[eff_cp]
type = NSFVMixtureFunctorMaterial
phase_2_names = 'cp_solid k_solid'
phase_1_names = 'cp_liquid k_liquid'
prop_names = 'cp_mixture k_mixture'
phase_1_fraction = fl
[]
[]
[Problem]
solve = false
[]
[Executioner]
type = Steady
[]
[Outputs]
csv = true
[]
(modules/porous_flow/test/tests/heat_advection/heat_advection_1d_fully_saturated.i)
# 1phase, heat advecting with a moving fluid
# Using the FullySaturated Kernel
[Mesh]
type = GeneratedMesh
dim = 1
nx = 50
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 0'
[]
[Variables]
[temp]
initial_condition = 200
[]
[pp]
[]
[]
[ICs]
[pp]
type = FunctionIC
variable = pp
function = '1-x'
[]
[]
[BCs]
[pp0]
type = DirichletBC
variable = pp
boundary = left
value = 1
[]
[pp1]
type = DirichletBC
variable = pp
boundary = right
value = 0
[]
[spit_heat]
type = DirichletBC
variable = temp
boundary = left
value = 300
[]
[suck_heat]
type = DirichletBC
variable = temp
boundary = right
value = 200
[]
[]
[Kernels]
[mass_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[advection]
type = PorousFlowFullySaturatedDarcyBase
variable = pp
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[convection]
type = PorousFlowFullySaturatedHeatAdvection
variable = temp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pp'
number_fluid_phases = 1
number_fluid_components = 1
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 100
density0 = 1000
viscosity = 4.4
thermal_expansion = 0
cv = 2
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.0
density = 125
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.1 0 0 0 2 0 0 0 3'
[]
[massfrac]
type = PorousFlowMassFraction
[]
[PS]
type = PorousFlow1PhaseFullySaturated
porepressure = pp
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres bjacobi 1E-15 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 0.01
end_time = 0.6
[]
[VectorPostprocessors]
[T]
type = LineValueSampler
start_point = '0 0 0'
end_point = '1 0 0'
num_points = 51
sort_by = x
variable = temp
[]
[]
[Outputs]
file_base = heat_advection_1d_fully_saturated
[csv]
type = CSV
sync_times = '0.1 0.6'
sync_only = true
[]
[]
(modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/forward.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 1
ymax = 1.4
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[heat_conduction]
type = MatDiffusion
variable = temperature
diffusivity = thermal_conductivity
[]
[]
[DiracKernels]
[pt]
type = ReporterPointSource
variable = temperature
x_coord_name = 'point_source/x'
y_coord_name = 'point_source/y'
z_coord_name = 'point_source/z'
value_name = 'point_source/value'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temperature
boundary = left
value = 300
[]
[right]
type = DirichletBC
variable = temperature
boundary = right
value = 300
[]
[bottom]
type = DirichletBC
variable = temperature
boundary = bottom
value = 300
[]
[top]
type = DirichletBC
variable = temperature
boundary = top
value = 300
[]
[]
[Materials]
[steel]
type = GenericConstantMaterial
prop_names = thermal_conductivity
prop_values = 5
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-6
nl_rel_tol = 1e-8
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[VectorPostprocessors]
[point_source]
type = ConstantVectorPostprocessor
vector_names = 'x y z value'
value = '0.2 0.7 0.4;
0.2 0.56 1;
0 0 0;
-1000 120 500'
execute_on = LINEAR
[]
[vertical]
type = LineValueSampler
variable = 'temperature'
start_point = '0.5 0 0'
end_point = '0.5 1.4 0'
num_points = 21
sort_by = y
[]
[]
[Reporters]
[measure_data]
type = OptimizationData
variable = temperature
objective_name = misfit_norm
measurement_points = ${measurement_points}
measurement_values = ${measurement_values}
[]
[]
[Outputs]
console = false
file_base = 'forward'
[]
(modules/porous_flow/test/tests/hysteresis/hys_pc_3.i)
# Capillary-pressure calculation. Third-order curve
# When comparing the results with a by-hand computation, remember the MOOSE results are averaged over an element
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
xmin = 0.4
xmax = 0.9
nx = 50
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
number_fluid_phases = 1
number_fluid_components = 1
porous_flow_vars = ''
[]
[]
[Variables]
[sat]
[]
[]
[ICs]
[sat]
type = FunctionIC
variable = sat
function = 'x'
[]
[]
[BCs]
[sat]
type = FunctionDirichletBC
variable = sat
function = 'x'
boundary = 'left right'
[]
[]
[Kernels]
[dummy]
type = Diffusion
variable = sat
[]
[]
[Materials]
[hys_order]
type = PorousFlowHysteresisOrder
initial_order = 3
previous_turning_points = '0.1 0.9 0.4'
[]
[pc_calculator]
type = PorousFlowHystereticInfo
alpha_d = 10.0
alpha_w = 7.0
n_d = 1.5
n_w = 1.9
S_l_min = 0.1
S_lr = 0.2
S_gr_max = 0.3
Pc_max = 12.0
high_ratio = 0.9
low_extension_type = none
high_extension_type = none
sat_var = sat
[]
[]
[AuxVariables]
[hys_order]
family = MONOMIAL
order = CONSTANT
[]
[pc]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[hys_order]
type = PorousFlowPropertyAux
variable = hys_order
property = hysteresis_order
[]
[pc]
type = PorousFlowPropertyAux
variable = pc
property = hysteretic_info
[]
[]
[VectorPostprocessors]
[pc]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.4 0 0'
end_point = '0.9 0 0'
num_points = 8
sort_by = x
variable = 'sat pc'
[]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 1
end_time = 1
[]
[Outputs]
csv = true
[]
(test/tests/auxkernels/functor_elemental_gradient/functor_gradient.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0
xmax = 3.141
ymin = 0
ymax = 3.141
[]
[Variables]
[u]
[]
[v]
[]
[w]
type = MooseVariableFVReal
[]
[]
[ICs]
[u_ic]
type = FunctionIC
variable = 'u'
function = parsed_function
[]
[v_ic]
type = FunctionIC
variable = 'v'
function = 'x'
[]
[w_ic]
type = FunctionIC
variable = 'w'
function = 'x + y'
[]
[]
[Functions]
[parsed_function]
type = ParsedFunction
value = 'sin(x)-cos(y/2)'
[]
[parsed_grad_function]
type = ParsedVectorFunction
expression_x = 'cos(x)'
expression_y = 'sin(y/2)/2'
[]
[parsed_gradx_function]
type = ParsedFunction
value = 'cos(x)'
[]
[]
[AuxVariables]
[funcGrad_u]
order = CONSTANT
family = MONOMIAL_VEC
[]
[auxGrad_u]
order = CONSTANT
family = MONOMIAL_VEC
[]
[auxGrad_v]
order = CONSTANT
family = MONOMIAL_VEC
[]
[auxGrad_fv]
order = CONSTANT
family = MONOMIAL_VEC
[]
[auxGrad_function]
order = CONSTANT
family = MONOMIAL_VEC
[]
[funcGrad_u_x]
order = CONSTANT
family = MONOMIAL
[]
[auxGrad_u_x]
order = CONSTANT
family = MONOMIAL
[]
[auxGrad_v_x]
order = CONSTANT
family = MONOMIAL
[]
[auxGrad_fv_x]
order = CONSTANT
family = MONOMIAL
[]
[auxGrad_function_x]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
# Verification
[vec]
type = VectorFunctionAux
variable = funcGrad_u
function = parsed_grad_function
[]
# Finite element variables with and without scaling by material
[grad_u]
type = ADFunctorElementalGradientAux
variable = auxGrad_u
functor = u
[]
[grad_v]
type = ADFunctorElementalGradientAux
variable = auxGrad_v
functor = v
factor_matprop = 'trig_material'
[]
# Finite volume variable
[grad_w]
type = ADFunctorElementalGradientAux
variable = auxGrad_fv
functor = w
factor = w
[]
# Functions
[grad_function]
type = FunctorElementalGradientAux
variable = auxGrad_function
functor = parsed_gradx_function
[]
# Output a component, line sampler does not do vector variables
[funcGrad_u_x]
type = VectorVariableComponentAux
variable = funcGrad_u_x
vector_variable = funcGrad_u
component = 'x'
[]
[auxGrad_u_x]
type = VectorVariableComponentAux
variable = auxGrad_u_x
vector_variable = auxGrad_u
component = 'x'
[]
[auxGrad_v_x]
type = VectorVariableComponentAux
variable = auxGrad_v_x
vector_variable = auxGrad_v
component = 'x'
[]
[funcGrad_fv_x]
type = VectorVariableComponentAux
variable = auxGrad_fv_x
vector_variable = auxGrad_fv
component = 'x'
[]
[auxGrad_function_x]
type = VectorVariableComponentAux
variable = auxGrad_function_x
vector_variable = auxGrad_function
component = 'x'
[]
[]
[Materials]
[steel]
type = ADGenericFunctionMaterial
prop_names = 'trig_material'
prop_values = 'parsed_gradx_function'
[]
[]
[VectorPostprocessors]
[results]
type = LineValueSampler
start_point = '0 1 0'
end_point = '3.141 1 0'
variable = 'funcGrad_u_x auxGrad_u_x auxGrad_v_x auxGrad_fv_x auxGrad_function_x'
num_points = 20
sort_by = x
[]
[]
[Problem]
solve = false
[]
[Executioner]
type = Steady
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/bc_load_linearFunction/homogeneous_forward.i)
[Mesh]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[heat_conduction]
type = MatDiffusion
variable = temperature
diffusivity = thermal_conductivity
[]
[]
[BCs]
[left]
type = FunctionNeumannBC
variable = temperature
boundary = left
function = left_function
[]
[right]
type = FunctionNeumannBC
variable = temperature
boundary = right
function = right_function
[]
[bottom]
type = DirichletBC
variable = temperature
boundary = bottom
value = 0
[]
[top]
type = DirichletBC
variable = temperature
boundary = top
value = 0
[]
[]
[Functions]
[left_function]
type = ParsedOptimizationFunction
expression = 'a + b*y'
param_symbol_names = 'a b'
param_vector_name = 'params_left/vals'
[]
[right_function]
type = ParsedOptimizationFunction
expression = 'a'
param_symbol_names = 'a'
param_vector_name = 'params_right/vals'
[]
[]
[Materials]
[steel]
type = GenericConstantMaterial
prop_names = thermal_conductivity
prop_values = 5
[]
[]
[Executioner]
type = Steady
line_search = none
solve_type = NEWTON
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
petsc_options_iname = '-ksp_type -pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'preonly lu superlu_dist'
[]
[VectorPostprocessors]
[vertical_1]
type = LineValueSampler
variable = 'temperature'
start_point = '0.2 0.0 0'
end_point = '0.2 2.0 0'
num_points = 21
sort_by = y
[]
[vertical_2]
type = LineValueSampler
variable = 'temperature'
start_point = '0.8 0.0 0'
end_point = '0.8 2.0 0'
num_points = 21
sort_by = y
[]
[]
[Reporters]
[measure_data]
type = OptimizationData
variable_weight_names = weightForTemperature
variable = temperature
[]
[params_left]
type = ConstantReporter
real_vector_names = 'vals'
real_vector_values = '0 0' # Dummy
[]
[params_right]
type = ConstantReporter
real_vector_names = 'vals'
real_vector_values = '0' # Dummy
[]
[]
[Outputs]
console = false
exodus = false
file_base = 'homogenous'
[]
(test/tests/outputs/debug/show_execution_userobjects.i)
[Mesh]
[cmg]
type = CartesianMeshGenerator
dim = 2
dx = '1.5 2.4'
dy = '1.3 0.9'
ix = '3 2'
iy = '2 3'
subdomain_id = '0 1
1 0'
[]
[add_interface]
type = SideSetsBetweenSubdomainsGenerator
input = 'cmg'
primary_block = 0
paired_block = 1
new_boundary = 'interface'
[]
second_order = true
[]
[Functions]
[forcing_fnu]
type = ParsedFunction
expression = -5.8*(x+y)+x*x*x-x+y*y*y-y
[]
[forcing_fnv]
type = ParsedFunction
expression = -4
[]
[slnu]
type = ParsedGradFunction
expression = x*x*x-x+y*y*y-y
grad_x = 3*x*x-1
grad_y = 3*y*y-1
[]
[slnv]
type = ParsedGradFunction
expression = x*x+y*y
grad_x = 2*x
grad_y = 2*y
[]
# NeumannBC functions
[bc_fnut]
type = ParsedFunction
expression = 3*y*y-1
[]
[bc_fnub]
type = ParsedFunction
expression = -3*y*y+1
[]
[bc_fnul]
type = ParsedFunction
expression = -3*x*x+1
[]
[bc_fnur]
type = ParsedFunction
expression = 3*x*x-1
[]
[]
[Variables]
[u]
order = SECOND
family = HIERARCHIC
[]
[v]
order = SECOND
family = LAGRANGE
initial_condition = 1
[]
[]
[AuxVariables]
[v_elem]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
active = 'diff1 diff2 test1 forceu forcev react'
[diff1]
type = Diffusion
variable = u
[]
[test1]
type = CoupledConvection
variable = u
velocity_vector = v
[]
[diff2]
type = Diffusion
variable = v
[]
[react]
type = Reaction
variable = u
[]
[forceu]
type = BodyForce
variable = u
function = forcing_fnu
[]
[forcev]
type = BodyForce
variable = v
function = forcing_fnv
[]
[]
[AuxKernels]
[set_v_elem]
type = FunctionAux
variable = v_elem
# selected not to be the solution for no particular reason
function = forcing_fnv
[]
[]
[BCs]
[bc_v]
type = FunctionDirichletBC
variable = v
function = slnv
boundary = 'left right top bottom'
[]
[bc_u_tb]
type = CoupledKernelGradBC
variable = u
var2 = v
vel = '0.1 0.1'
boundary = 'top bottom left right'
[]
[bc_ul]
type = FunctionNeumannBC
variable = u
function = bc_fnul
boundary = 'left'
[]
[bc_ur]
type = FunctionNeumannBC
variable = u
function = bc_fnur
boundary = 'right'
[]
[bc_ut]
type = FunctionNeumannBC
variable = u
function = bc_fnut
boundary = 'top'
[]
[bc_ub]
type = FunctionNeumannBC
variable = u
function = bc_fnub
boundary = 'bottom'
[]
[]
[Postprocessors]
# Global user objects
[dofs]
type = NumDOFs
[]
[h]
type = AverageElementSize
[]
# Elemental user objects
[L2u]
type = ElementL2Error
variable = u
function = slnu
# Testing an option
force_preic = true
[]
[L2v]
type = ElementL2Error
variable = v
function = slnv
# Testing an option
force_preaux = true
[]
[H1error]
type = ElementH1Error
variable = u
function = slnu
[]
[H1Semierror]
type = ElementH1SemiError
variable = u
function = slnu
[]
[L2v_elem]
type = ElementL2Error
variable = v_elem
function = slnv
[]
[f_integral]
type = FunctionElementIntegral
function = slnv
[]
[int_v]
type = ElementIntegralVariablePostprocessor
variable = v
block = 1
execute_on = 'TIMESTEP_END transfer'
[]
[int_v_elem]
type = ElementIntegralVariablePostprocessor
variable = v_elem
block = 1
execute_on = 'TIMESTEP_END transfer'
[]
# Side user objects
[integral_v]
type = SideIntegralVariablePostprocessor
variable = v
boundary = 0
[]
[]
[VectorPostprocessors]
# General UOs
[memory]
type = VectorMemoryUsage
[]
[line]
type = LineValueSampler
variable = v
num_points = 10
start_point = '0 0 0'
end_point = '0.5 0.5 0'
sort_by = 'x'
[]
# Nodal UOs
[nodal_sampler_y]
type = NodalValueSampler
variable = v
sort_by = 'y'
[]
[nodal_sampler_x]
type = NodalValueSampler
variable = v
sort_by = 'x'
[]
# Element UO
[elem_sample]
type = ElementValueSampler
variable = v_elem
sort_by = 'x'
[]
[]
[UserObjects]
# Nodal user objects
[find_node]
type = NearestNodeNumberUO
point = '0.5 0.5 0'
[]
# Side user objects
[side_int]
type = LayeredSideIntegral
variable = v
boundary = 0
direction = y
num_layers = 4
[]
[side_int_2]
type = NearestPointLayeredSideIntegral
variable = v
boundary = 0
direction = x
num_layers = 3
points = '1 1 0'
[]
# Interface user objects
[values]
type = InterfaceQpValueUserObject
var = v
boundary = interface
[]
inactive = 'prime_1 prime_2'
# Threaded general user objects
[prime_2]
type = PrimeProductUserObject
[]
[prime_1]
type = PrimeProductUserObject
[]
# Domain user objects
[domain_2]
type = InterfaceDomainUserObject
u = u
v = v
block = '0'
robin_boundaries = 'left'
interface_boundaries = 'interface'
interface_penalty = 1e-10
nl_abs_tol = 1e1
[]
[domain_1]
type = InterfaceDomainUserObject
u = u
v = v
block = '0 1'
robin_boundaries = 'left'
interface_boundaries = 'interface'
interface_penalty = 1e-10
nl_abs_tol = 1e1
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_tol = 1e-5
[]
[Problem]
kernel_coverage_check = false
[]
[MultiApps]
active = ''
[full_solve]
type = FullSolveMultiApp
execute_on = 'initial timestep_end final'
input_files = show_execution_userobjects.i
cli_args = 'Problem/solve=false'
[]
[]
[Transfers]
active = ''
[conservative]
type = MultiAppNearestNodeTransfer
from_multi_app = full_solve
source_variable = v
variable = v_elem
from_postprocessors_to_be_preserved = int_v
to_postprocessors_to_be_preserved = int_v_elem
[]
[]
[Debug]
show_execution_order = 'ALWAYS INITIAL NONLINEAR LINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL'
[]
(modules/heat_transfer/test/tests/truss_heat_conduction/block_w_bar.i)
[Mesh]
[whole]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 50
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -1.25
ymax = 1.25
zmin = -0.04
zmax = 0.04
[]
[bar]
type = SubdomainBoundingBoxGenerator
input = whole
bottom_left = '-0.6 -0.05 -0.04'
top_right = '0.6 0.05 0.04'
block_id = 2
block_name = 'bar'
location = INSIDE
[]
[block]
type = SubdomainBoundingBoxGenerator
input = bar
bottom_left = '-0.6 -0.05 -0.04'
top_right = '0.6 0.05 0.04'
block_id = 1
block_name = 'block'
location = OUTSIDE
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[time_derivative]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_conduction]
type = HeatConduction
variable = temperature
[]
[]
[Materials]
[block]
type = GenericConstantMaterial
block = 'block'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '1.0 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[line]
type = GenericConstantMaterial
block = 'bar'
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '10.0 1.0 1.0' # W/(cm K), J/(g K), g/cm^3
[]
[]
[BCs]
[right]
type = FunctionDirichletBC
variable = temperature
boundary = 'right'
function = '10*t'
[]
[]
[VectorPostprocessors]
[x_n0_25]
type = LineValueSampler
start_point = '-0.25 0 0'
end_point = '-0.25 1.25 0'
num_points = 100
variable = 'temperature'
sort_by = id
[]
[x_0_25]
type = LineValueSampler
start_point = '0.25 0 0'
end_point = '0.25 1.25 0'
num_points = 100
variable = 'temperature'
sort_by = id
[]
[]
[Executioner]
type = Transient
start_time = 0
dt = 1
end_time = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = 'csv/block_w_bar'
time_data = true
[]
[]
(test/include/vectorpostprocessors/DynamicPointValueSampler.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
// MOOSE includes
#include "LineValueSampler.h"
class DynamicPointValueSampler : public LineValueSampler
{
public:
static InputParameters validParams();
DynamicPointValueSampler(const InputParameters & parameters);
virtual void initialize() override;
protected:
const unsigned int _adder;
const bool _use_transfer;
};