From 304abab1ff05fde021f60f4433e62fa63f3bcf1d Mon Sep 17 00:00:00 2001 From: Andrea Rovinelli Date: Mon, 10 Feb 2020 12:25:03 -0600 Subject: [PATCH] finlized refactoring, updated documentation. close #14680 --- .../auxkernels/InterfaceValueUserObjectAux.md | 2 +- .../InterfaceQpMaterialPropertyRealUO.md | 33 ++ .../userobject/InterfaceQpValueUserObject.md | 6 +- ...nterfaceQpMaterialPropertyBaseUserObject.h | 49 ++- .../InterfaceQpMaterialPropertyRealUO.h | 11 +- .../userobject/InterfaceQpUserObjectBase.h | 18 +- .../userobject/InterfaceQpValueUserObject.h | 11 +- .../InterfaceQpMaterialPropertyRealUO.C | 35 +- .../userobject/InterfaceQpUserObjectBase.C | 9 +- .../userobject/InterfaceQpValueUserObject.C | 26 +- ...inearNonLinearIterationInterfaceMaterial.C | 2 +- .../LinearNonLinearIterationMaterial.C | 2 +- .../interface_mp_real_user_object_QP_out.e | Bin 0 -> 6904 bytes ..._value_rate_increment_user_object_QP_out.e | Bin 0 -> 63632 bytes .../interface_mp_rate_user_object_QP.i | 295 ----------------- .../interface_mp_real_user_object_QP.i | 194 +++++++++++ .../interface_mp_user_object_QP.i | 295 ----------------- .../interface_userobject_material_value.i | 2 +- ...face_value_rate_increment_user_object_QP.i | 236 ++++++++++++++ .../interface_value_rate_user_object_QP.i | 308 ------------------ .../userobjects/interface_user_object/tests | 21 +- 21 files changed, 586 insertions(+), 969 deletions(-) create mode 100644 framework/doc/content/source/userobject/InterfaceQpMaterialPropertyRealUO.md create mode 100644 test/tests/userobjects/interface_user_object/gold/interface_mp_real_user_object_QP_out.e create mode 100644 test/tests/userobjects/interface_user_object/gold/interface_value_rate_increment_user_object_QP_out.e delete mode 100644 test/tests/userobjects/interface_user_object/interface_mp_rate_user_object_QP.i create mode 100644 test/tests/userobjects/interface_user_object/interface_mp_real_user_object_QP.i delete mode 100644 test/tests/userobjects/interface_user_object/interface_mp_user_object_QP.i create mode 100644 test/tests/userobjects/interface_user_object/interface_value_rate_increment_user_object_QP.i delete mode 100644 test/tests/userobjects/interface_user_object/interface_value_rate_user_object_QP.i diff --git a/framework/doc/content/source/auxkernels/InterfaceValueUserObjectAux.md b/framework/doc/content/source/auxkernels/InterfaceValueUserObjectAux.md index 1ef8c2541b99..5bd8405499fa 100644 --- a/framework/doc/content/source/auxkernels/InterfaceValueUserObjectAux.md +++ b/framework/doc/content/source/auxkernels/InterfaceValueUserObjectAux.md @@ -11,7 +11,7 @@ It requires three inputs: * `boundary` = the name of the boundary to which this AuxKernel applies * `interface_uo_name` = the name of interface UserObject where data are stored -The optional argument `return_side_average` retrieve element side average values from the specified UserObject. +The optional argument `return_side_average` retrieves element side average values from the specified UserObject. ## Example Input File Syntax diff --git a/framework/doc/content/source/userobject/InterfaceQpMaterialPropertyRealUO.md b/framework/doc/content/source/userobject/InterfaceQpMaterialPropertyRealUO.md new file mode 100644 index 000000000000..a70f897b0f66 --- /dev/null +++ b/framework/doc/content/source/userobject/InterfaceQpMaterialPropertyRealUO.md @@ -0,0 +1,33 @@ +# InterfaceQpMaterialPropertyRealUO + +## IMPORTANT NOTES +*** This userobejct only support multiprocessing. Threading is not supported at this time *** + + +## Description +!syntax description /UserObjects/InterfaceQpMaterialPropertyRealUO + +InterfaceQpMaterialPropertyRealUO is a user object computing and storing average `real` material property values, rates, or increments across an interface for each quadrature point. The kind of average value are the one available in [InterfaceValueTools](/InterfaceValueTools.md). +The user object only stores one type of value. For example to get both the material property value and material property rate the user must add two separate user objects in the input file. + +The InterfaceQpMaterialPropertyRealUO can provide two types of values to other MOOSE systems: + +* a qp value by calling `getQpValue` +* an element side average value by calling `getSideAverageValue` + +The stored value can be converted into an AuxVariable by using [InterfaceValueUserObjectAux](/InterfaceValueUserObjectAux.md) AuxKernel. + + +## Example Input File Syntax + +listing test/tests/userobjects/interface_user_object/interface_mp_real_user_object_QP.i block=UserObjects/interface_value_uo +listing test/tests/userobjects/interface_user_object/interface_mp_real_user_object_QP.i block=UserObjects/interface_value_rate_uo +listing test/tests/userobjects/interface_user_object/interface_mp_real_user_object_QP.i block=UserObjects/interface_value_increment_uo + +!syntax description /UserObjects/InterfaceQpMaterialPropertyRealUO + +!syntax parameters /UserObjects/InterfaceQpMaterialPropertyRealUO + +!syntax inputs /UserObjects/InterfaceQpMaterialPropertyRealUO + +!syntax children /UserObjects/InterfaceQpMaterialPropertyRealUO diff --git a/framework/doc/content/source/userobject/InterfaceQpValueUserObject.md b/framework/doc/content/source/userobject/InterfaceQpValueUserObject.md index 1c4606f8305f..346d3956f919 100644 --- a/framework/doc/content/source/userobject/InterfaceQpValueUserObject.md +++ b/framework/doc/content/source/userobject/InterfaceQpValueUserObject.md @@ -8,7 +8,7 @@ !syntax description /UserObjects/InterfaceQpValueUserObject InterfaceQpValueUserObject is a user object computing and storing average variable values or rates across an interface for each quadrature. The kind of average value are the one available in [InterfaceValueTools](/InterfaceValueTools.md). -The rate is computed if `compute_rate=true` is set in the input file. Note that this choice is exclusive, to get both the interface value and interface value rate the user must add two separate user objects in the input file. +The user object only stores one type of value. For example to get both the variable value and variable rate the user must add two separate user objects in the input file. The InterfaceQpValueUserObject can provide two types of values to other MOOSE systems: @@ -22,6 +22,10 @@ The stored value can be converted into an AuxVariable by using [InterfaceValueUs listing test/tests/userobjects/interface_user_object/interface_value_user_object_QP.i block=UserObjects/interface_value_uo +listing test/tests/userobjects/interface_user_object/interface_value_rate_increment_user_object_QP.i block=UserObjects/interface_avg_value_rate_uo + +listing test/tests/userobjects/interface_user_object/interface_value_rate_increment_user_object_QP.i block=UserObjects/interface_avg_value_increment_uo + !syntax description /UserObjects/InterfaceQpValueUserObject !syntax parameters /UserObjects/InterfaceQpValueUserObject diff --git a/framework/include/userobject/InterfaceQpMaterialPropertyBaseUserObject.h b/framework/include/userobject/InterfaceQpMaterialPropertyBaseUserObject.h index b3359b1bfd42..e4b92100ef4f 100644 --- a/framework/include/userobject/InterfaceQpMaterialPropertyBaseUserObject.h +++ b/framework/include/userobject/InterfaceQpMaterialPropertyBaseUserObject.h @@ -19,9 +19,8 @@ template <> InputParameters validParams>(); /** - * This userobject collect values of a variable across an interface for each QP and compute a - * scalar. The computed scalar value depends on the given parameter _interface_value_type\ - * _interface_value_type (see IntervafeValueTools). + * Specialization of InterfaceQpUserObjectBase for material properties. Material property type + * specialization is achieved by specializing computeScalarMaterialProperty in derived classes. */ template class InterfaceQpMaterialPropertyBaseUserObject : public InterfaceQpUserObjectBase @@ -37,12 +36,47 @@ class InterfaceQpMaterialPropertyBaseUserObject : public InterfaceQpUserObjectBa virtual ~InterfaceQpMaterialPropertyBaseUserObject(){}; protected: - virtual Real computeRealValueMaster(const unsigned int /*qp*/) override = 0; - virtual Real computeRealValueSlave(const unsigned int /*qp*/) override = 0; + /* method computing the real value*/ + virtual Real computeRealValue(const unsigned int qp) override final + { + if (!_compute_rate && !_compute_increment) + { + return computeInterfaceValueType(computeScalarMaterialProperty(&_prop, qp), + computeScalarMaterialProperty(&_prop_neighbor, qp)); + } + else + { + + Real value_master = 0; + Real value_slave = 0; + if (_dt != 0) + { + + value_master = (computeScalarMaterialProperty(&_prop, qp) - + computeScalarMaterialProperty(_prop_old, qp)); + value_slave = (computeScalarMaterialProperty(&_prop_neighbor, qp) - + computeScalarMaterialProperty(_prop_neighbor_old, qp)); + if (_compute_rate) + { + value_master /= _dt; + value_slave /= _dt; + } + } + return computeInterfaceValueType(value_master, value_slave); + } + }; + + /*template for computing a scalar material property value*/ + virtual Real computeScalarMaterialProperty(const MaterialProperty *, + const unsigned int qp) = 0; + + /// the material property and neighbor material property current and old value + ///@{ const MaterialProperty & _prop; const MaterialProperty & _prop_neighbor; const MaterialProperty * _prop_old; const MaterialProperty * _prop_neighbor_old; + ///@} }; template @@ -67,8 +101,9 @@ InterfaceQpMaterialPropertyBaseUserObject::InterfaceQpMaterialPropertyBaseUse _prop_neighbor(parameters.isParamSetByUser("property_neighbor") ? getNeighborMaterialProperty("property_neighbor") : getNeighborMaterialProperty("property")), - _prop_old(_compute_rate ? &getMaterialPropertyOld("property") : nullptr), - _prop_neighbor_old(_compute_rate + _prop_old(_compute_rate || _compute_increment ? &getMaterialPropertyOld("property") + : nullptr), + _prop_neighbor_old(_compute_rate || _compute_increment ? (parameters.isParamSetByUser("property_neighbor") ? &getNeighborMaterialPropertyOld("property_neighbor") : &getNeighborMaterialPropertyOld("property")) diff --git a/framework/include/userobject/InterfaceQpMaterialPropertyRealUO.h b/framework/include/userobject/InterfaceQpMaterialPropertyRealUO.h index 9ff67119a7ba..db5c8fef1ee6 100644 --- a/framework/include/userobject/InterfaceQpMaterialPropertyRealUO.h +++ b/framework/include/userobject/InterfaceQpMaterialPropertyRealUO.h @@ -18,8 +18,7 @@ template <> InputParameters validParams(); /** - * This userobject works on Real material properties. It returns the interface value (see - * IntervafeValueTools) or its rate. + * Specialization of InterfaceQpMaterialPropertyBaseUserObject for Real material properties. */ class InterfaceQpMaterialPropertyRealUO : public InterfaceQpMaterialPropertyBaseUserObject { @@ -34,6 +33,10 @@ class InterfaceQpMaterialPropertyRealUO : public InterfaceQpMaterialPropertyBase virtual ~InterfaceQpMaterialPropertyRealUO(){}; protected: - virtual Real computeRealValueMaster(const unsigned int /*qp*/) override; - virtual Real computeRealValueSlave(const unsigned int /*qp*/) override; + /// return the material property value at the give qp + virtual Real computeScalarMaterialProperty(const MaterialProperty * p, + const unsigned int qp) override final + { + return (*p)[qp]; + } }; diff --git a/framework/include/userobject/InterfaceQpUserObjectBase.h b/framework/include/userobject/InterfaceQpUserObjectBase.h index 5bd9753cbc98..101df6345d17 100644 --- a/framework/include/userobject/InterfaceQpUserObjectBase.h +++ b/framework/include/userobject/InterfaceQpUserObjectBase.h @@ -18,11 +18,11 @@ InputParameters validParams(); /** * This is a base class for userobjects collecting values of variables or material properites across - * an interface at each QP. This userobejct class always return a scalar value and compute both the - * current value or its rate. The computed scalar value depends on the given parameter - * interface_value_type paramters (see IntervafeValueTools). Also, it provides two output options to - * all other MOOSE systems, a qp value (getQpValue) or an element side average value - * (getSideAverageValue). + * an interface at each QP. This userobejct class always return a scalar value and can compute the + * current value or current rate or the current increment. The computed scalar depends on the + * given interface_value_type paramters (see IntervafeValueTools). Also, it provides two + * output options to all other MOOSE systems as a qp value (getQpValue) or an element side average + * value (getSideAverageValue). */ class InterfaceQpUserObjectBase : public InterfaceValueUserObject { @@ -37,15 +37,17 @@ class InterfaceQpUserObjectBase : public InterfaceValueUserObject virtual void finalize() { return; }; virtual void threadJoin(const UserObject & /*uo*/) { return; }; + /// function returning the quadrature point value Real getQpValue(const dof_id_type elem, const unsigned int side, unsigned int qp) const; - + /// function returning the element side average value Real getSideAverageValue(const dof_id_type elem, const unsigned int side) const; protected: + /// boolealn varaibles deciding which type of value to return const bool _compute_rate; + const bool _compute_increment; /// this map is used to store QP data. std::map, std::vector> _map_values; std::map, std::vector> _map_JxW; - virtual Real computeRealValueMaster(const unsigned int /*qp*/) = 0; - virtual Real computeRealValueSlave(const unsigned int /*qp*/) = 0; + virtual Real computeRealValue(const unsigned int /*qp*/) = 0; }; diff --git a/framework/include/userobject/InterfaceQpValueUserObject.h b/framework/include/userobject/InterfaceQpValueUserObject.h index df10c7dda32b..bb21b3d33164 100644 --- a/framework/include/userobject/InterfaceQpValueUserObject.h +++ b/framework/include/userobject/InterfaceQpValueUserObject.h @@ -17,9 +17,7 @@ template <> InputParameters validParams(); /** - * This userobject collect values of a variable across an interface for each QP and compute a - * scalar. The computed scalar value depends on the given parameter _interface_value_type\ - * _interface_value_type (see IntervafeValueTools). + * Specialization of InterfaceQpUserObjectBase for scalar variables. */ class InterfaceQpValueUserObject : public InterfaceQpUserObjectBase { @@ -29,8 +27,11 @@ class InterfaceQpValueUserObject : public InterfaceQpUserObjectBase virtual ~InterfaceQpValueUserObject(){}; protected: - virtual Real computeRealValueMaster(const unsigned int qp) override { return _u[qp]; }; - virtual Real computeRealValueSlave(const unsigned int qp) override { return _u_neighbor[qp]; }; + virtual Real computeRealValue(const unsigned int qp) override; + + /// the variable and neighbor variable values or rate + ///@{ const VariableValue & _u; const VariableValue & _u_neighbor; + ///@} }; diff --git a/framework/src/userobject/InterfaceQpMaterialPropertyRealUO.C b/framework/src/userobject/InterfaceQpMaterialPropertyRealUO.C index e753f4481c46..def7501d403a 100644 --- a/framework/src/userobject/InterfaceQpMaterialPropertyRealUO.C +++ b/framework/src/userobject/InterfaceQpMaterialPropertyRealUO.C @@ -17,9 +17,10 @@ InputParameters InterfaceQpMaterialPropertyRealUO::validParams() { InputParameters params = InterfaceQpMaterialPropertyBaseUserObject::validParams(); - params.addClassDescription("Computes the value or rate of a Real Material property across an " - "interface. The value or rate is computed according to the provided " - "interface_value_type parameter"); + params.addClassDescription( + "Computes the value, rate or increment of a Real Material property across an " + "interface. The value or rate is computed according to the provided " + "interface_value_type parameter"); return params; } @@ -29,31 +30,3 @@ InterfaceQpMaterialPropertyRealUO::InterfaceQpMaterialPropertyRealUO( { } - -Real -InterfaceQpMaterialPropertyRealUO::computeRealValueMaster(const unsigned int qp) -{ - if (_compute_rate) - { - if (_dt != 0) - return (_prop[qp] - (*_prop_old)[qp]) / _dt; - else - return 0; - } - else - return _prop[qp]; -} - -Real -InterfaceQpMaterialPropertyRealUO::computeRealValueSlave(const unsigned int qp) -{ - if (_compute_rate) - { - if (_dt != 0) - return (_prop_neighbor[qp] - (*_prop_neighbor_old)[qp]) / _dt; - else - return 0; - } - else - return _prop_neighbor[qp]; -} diff --git a/framework/src/userobject/InterfaceQpUserObjectBase.C b/framework/src/userobject/InterfaceQpUserObjectBase.C index c24e4752e9b1..e6890f0d47ab 100644 --- a/framework/src/userobject/InterfaceQpUserObjectBase.C +++ b/framework/src/userobject/InterfaceQpUserObjectBase.C @@ -18,13 +18,18 @@ InterfaceQpUserObjectBase::validParams() InputParameters params = InterfaceValueUserObject::validParams(); params.addClassDescription("Base class to compute a scalar value or rate across an interface"); params.addParam("compute_rate", false, "if true, compute the rate of the value."); + params.addParam("compute_increment", false, "if true, compute the finite increment."); return params; } InterfaceQpUserObjectBase::InterfaceQpUserObjectBase(const InputParameters & parameters) - : InterfaceValueUserObject(parameters), _compute_rate(getParam("compute_rate")) + : InterfaceValueUserObject(parameters), + _compute_rate(getParam("compute_rate")), + _compute_increment(getParam("compute_increment")) { + if (_compute_rate && _compute_increment) + mooseError("InterfaceQpUserObjectBase cannot compute both the rate and the increment"); } void @@ -74,7 +79,7 @@ InterfaceQpUserObjectBase::execute() for (unsigned int qp = 0; qp < _qrule->n_points(); ++qp) { // compute average value at qp - vec[qp] = computeInterfaceValueType(computeRealValueMaster(qp), computeRealValueSlave(qp)); + vec[qp] = computeRealValue(qp); jxw[qp] = _JxW[qp]; } } diff --git a/framework/src/userobject/InterfaceQpValueUserObject.C b/framework/src/userobject/InterfaceQpValueUserObject.C index 9bd6740bd48a..8cd98f236326 100644 --- a/framework/src/userobject/InterfaceQpValueUserObject.C +++ b/framework/src/userobject/InterfaceQpValueUserObject.C @@ -18,8 +18,8 @@ InterfaceQpValueUserObject::validParams() { InputParameters params = InterfaceQpUserObjectBase::validParams(); params.addRequiredCoupledVar("var", "The variable name"); - params.addCoupledVar("var_neighbor", "The variable name"); - params.addClassDescription("Computes the variable value or rate across an " + params.addCoupledVar("var_neighbor", "The neighbor variable name"); + params.addClassDescription("Computes the variable value, rate or increment across an " "interface. The value or rate is computed according to the provided " "interface_value_type parameter"); return params; @@ -27,12 +27,22 @@ InterfaceQpValueUserObject::validParams() InterfaceQpValueUserObject::InterfaceQpValueUserObject(const InputParameters & parameters) : InterfaceQpUserObjectBase(parameters), - _u(_compute_rate ? coupledDot("var") : coupledValue("var")), - _u_neighbor( - parameters.isParamSetByUser("var_neighbor") - ? (_compute_rate ? coupledNeighborValueDot("var_neighbor") - : coupledNeighborValue("var_neighbor")) - : (_compute_rate ? coupledNeighborValueDot("var") : coupledNeighborValue("var"))) + _u(_compute_rate || _compute_increment ? coupledDot("var") : coupledValue("var")), + _u_neighbor(parameters.isParamSetByUser("var_neighbor") + ? (_compute_rate || _compute_increment ? coupledNeighborValueDot("var_neighbor") + : coupledNeighborValue("var_neighbor")) + : (_compute_rate || _compute_increment ? coupledNeighborValueDot("var") + : coupledNeighborValue("var"))) { } + +Real +InterfaceQpValueUserObject::computeRealValue(const unsigned int qp) +{ + Real val = computeInterfaceValueType(_u[qp], _u_neighbor[qp]); + if (_compute_increment) + val *= _dt; + + return val; +} diff --git a/test/src/materials/LinearNonLinearIterationInterfaceMaterial.C b/test/src/materials/LinearNonLinearIterationInterfaceMaterial.C index ede5902e0ba2..96571a12d0f9 100644 --- a/test/src/materials/LinearNonLinearIterationInterfaceMaterial.C +++ b/test/src/materials/LinearNonLinearIterationInterfaceMaterial.C @@ -20,7 +20,7 @@ LinearNonLinearIterationInterfaceMaterial::validParams() params.addRequiredParam("prop_name", "The name of the property"); params.addParam("prefactor", 1, "the prefactor to apply to the new material value"); params.addClassDescription( - "Material whose property is equal to (t_step+n_linear*n_nonlinear)*prefactor"); + "Interface material whose property is equal to (t_step+n_linear*n_nonlinear)*prefactor"); return params; } diff --git a/test/src/materials/LinearNonLinearIterationMaterial.C b/test/src/materials/LinearNonLinearIterationMaterial.C index 2bf50352a906..a6e40365a041 100644 --- a/test/src/materials/LinearNonLinearIterationMaterial.C +++ b/test/src/materials/LinearNonLinearIterationMaterial.C @@ -20,7 +20,7 @@ LinearNonLinearIterationMaterial::validParams() params.addRequiredParam("prop_name", "The name of the property"); params.addParam("prefactor", 1, "the prefactor to apply to the new material value"); params.addClassDescription( - "Material whose property is equal to (t_step+n_linear*n_nonlinear)*prefactor"); + "Material whose property is equal to (t_step+n_linear*n_nonlinear)*prefactor"); return params; } diff --git a/test/tests/userobjects/interface_user_object/gold/interface_mp_real_user_object_QP_out.e b/test/tests/userobjects/interface_user_object/gold/interface_mp_real_user_object_QP_out.e new file mode 100644 index 0000000000000000000000000000000000000000..07d71cbb2cb8d2e72de66d12065b2f93c6065123 GIT binary patch literal 6904 zcmbtYYitx%6yC~fx3oZueSn~#2%0nq6cGqAOKf~mL#v`hB-3p>Z5Q|D?({*8q!@mf zhy)`cKw=`nME-~-n24zleuzO+4N(FZ_<@N=5{;3>AO0}L@4GW+dv|tcXVH_~IrpCX zo$sD==H9#0KGgQ`Eum0o3R*SVz0?USW#;T`Jk^g;D6|+YOj{zJve55Do7$Hi%u=I8 z?0C|GgO$O+6@^d5lEl-0Mrtr=_QsQ(=6Vs1Q|VqSM+?SiVcM*OMG$$bow3=ScmX5F zuU7oboMpSdHJDTOT)Y=?6xe6E9Pt!sRw^FmI@{$jGgcOBstK-Hh+n1fRmFHUL3|B) zoON>~VQ#vOK(DP8Hgf8?)g^5Am+)Ov!uCK3-?b%h>s*^wtK7;JFqX1ArBbmM;GL4F z_-9HDQz~_}hcuf)veuf7se5ru-D_j&UK>+a@o0QZ-D_j&UK>+aHdS-%I}1 zKpx>=g#JvlC|b3;6NU%U?qZCKwGo+)4)cIC&%q;Nbx#J2vE)erg=@I@IiIi(d?uUD z@O=rE_W=7--Ft`mO?j*h&qDt%Fpi{hMeFen65)F8(U>!Vei(RtJz|5_6aT+~jpT~g z<9#cltyk9qV;FdSJz^_dukLwZr}w0>b4CYttsM`naV0S4?IqU@>Sa+6} z`-=7DJ7Mf1w6!^d`UTLen~rDQJoqZc0IBc7gL&(C=Iw)@`y1w}nP=X^iHYaT<0COO zup%}5-7$H2C1V+ky*bl&2^yq9?X{kCDuvU)y~g~w$N4VU=o?Yz-`z=bl#vImu+sa{i=?X9NBGz3KJ*Ni38^u_7gRtDE!YjX^tKVsyaizcGiw+lw$4Z;o(>&D9;Lh{~$2b=&95!+{J6-kExlh0nk+V?&{sZFOxL5KbfslWm>NyXc|1?Z_{tEDC zh!=hyDhT=KtDf^9KO3a+93FZ83h)!ahn;&fe{bAICRfPI`wP-|9uL9F`Q~qdh>pDq zqhRICE)*cNj=ip7@ zojzFBN3gP2@AAPefjuJcLfd<^i)eLgYJoA2*Y?ug0*2P{j5Uwf_Qp~ld>ibwL$L&Y zx$$9*?_hTg{LB}eAFRv zzu+Cedobtq>!la`4&qU#audImR<|cVeh-K+SLQ`^0*^x9RTcZ5De`Tt*!OagFJku8 zmfsvAjM?4a&3~X@6mx~Xe--&6=E{84HRycD;MJIRtQ%Z>e~gRoM}+Umt#1?8;~mFF zk^aqS@#9+DtK{eRBWuEMD6Y?MR(^-_J>Lws#3g5dT(rp=+_L~>HXu*m0+J(=n1^0h+ciOho>fb&-EZKPffbBD<%yv3cZaNf7Sbb#)%6oIx z3DUIF=8DqbNq~Fyy)ed5#@`8&03ZKQC>g_l(6TGc$v?JilwlQA^`}Mhvwy!Eww!*C2+CW5ElD=yEvva9&!ev8=~A<}7(jZgQV< zJz_Z)9*)INk5Rw3b!Tvt{`9OU8j41MeSs z{6nP=e|<>VhgLml?BConKI>e_cy0TYeO2=h(C_@#b=S!A-HwJA)wrXs-7gNWJ<6|l zh-hboap#!oiq6}8>Ll}CZG7LVMC`_)iT2;Sp1o=uU2F9Iu%KCu&F$YBhn~9r>9Kb< z7)N$4j68Cz%F&s5j(xb%ICMI;e|XP`ad7WX$Gb;P((lsntZ&HE+Hn4=8V}WfChG+0 Y=mrNNTJX`>7`s)X^LC#)$-Gzp3oIN!=>Px# literal 0 HcmV?d00001 diff --git a/test/tests/userobjects/interface_user_object/gold/interface_value_rate_increment_user_object_QP_out.e b/test/tests/userobjects/interface_user_object/gold/interface_value_rate_increment_user_object_QP_out.e new file mode 100644 index 0000000000000000000000000000000000000000..bd6f006a60adeea200343e21cc8eea5e7b670d87 GIT binary patch literal 63632 zcmeHQZHy#Gd0vOFJ97qXjC~N3G&zE8@U3_E&gVOeVR!F#&urM+U3>Q~C=P0RW_otp zH#0r-%&Rg~*A56cLe#A1FaU1V4yG6iY#fkNohj zD9=;f)zjbI)zfEgxGC*ybyrtC{nlG=z4iU}g_VoHG&3{vO8joe@16A9W>@bI9ILyF zyP27{;dg{#ZL4eI`U(7A*|LWYef*9Ntd5BUW)C->6Y;x7hw+*IHQixHZ(1Eb=KGHF zzH2wlK0|Pi-w}qHZIh7%J?_0;Z(n5;k?szePVbuoFYPfr6XAWU2|7aIuk$dhE@9>c z&MWZ$^&XDiGabBBJm5RS@fSq=+v4%X1I9l_9QVC_f-rBvFh-1qokAEfgYix$ggugw z_Dn+9qX}uxCd51Eg#~!kpPxfuQn<^i5zl2FU6u&?Un_ao6lmn^aS3)tVhF`^=KHgF2V%QA$K}xX4XkxFpSxbhA|_deC!(zf`p8Uw3J!h z4P-na$5yvx~N?_`TNXS^B=|^ewxK+nHD4ciYluZ?D0BO-lIjR@*iPsEK;d zwz>oTn(Z_pZ`WC`D1VfrBlsO{S#8L^`ylX4$QcrzIgJWx42G;SG94~wUNx`=ZGyp3 zPERAQ>9mZ7i43)ertTO6Q@6Se$LyGR|FDnxV%MKG8w34`E!`dtW<}~Zc8mk7!#a&R zuR~ev4)%yC-=*RDwfJ4Y?{=XtuI<_0i%BE-Cf%!X!92nJlq%(@SsxLPdzoiOpyNBd z_;>y;uMxlJ*gck|jLS0M^(#G{#Js*@Z3X|s=|6(|quqY&ebi6V@qJ#kx$`+(A3^-! z`xrOxeKP&uBks|D{C(8L(gol5Lj)c{{NVc-x8VEkx({(*-LN4=2LhfvA-|>L^?Ti$ zyVl{maSugER@{#x2Ki3*QpU(%mI-N>j$teA&0XJvPre1?lW&puw>{^^f1}3u$agS4 z^PLj^?$6`d?aZg2!lj9IE|NylbPpBBF}6uM6_zj;v~R}`?j9j)4ZGV#Wstg` zGS0H#k7ZkOczDz~^%e>m35;){2t?bbk9?fz!Cq=;>!IO#6Ligk6$4EGmJ0sS*hTN z{}yrO{v$qraQFTp{`vR?;y;J@M_j$>>y2L~lIMs^{RMaL$M8?amGztTLb_nwKSQ95 zE9>lAWkmSFxStEemG$sfQsRCo5Lec%UrmYol|WosU$jWvBkujZUk}8Ub>M9&alaXe zE9LsvQsRCu5Le3TiIliMK=@Hv76I9NdnCRrj~@o(2W08jQ{ulAj31DVcO=I@&N8|K zJxR3O=yaox?7f3+8~c1IeUG0~#zX16cjcw~N;Dk>2QDYw&sc_`_fd%8^3rV~&M|gM zWd6J~_rqu2r6bNq+?(TXfPaTbBPyjgnsDFs0G>tDHNA8nhkvKwrA#+()+796|3fK(;c&c-gO`MO!FXq)V0zf>_0x}-n^M| zz-RKgyjJlE#rS*|>l0~WAD4V&KaVuCU(LQUWkUsMo39NGt)6J1L(|Qu0T#8M92}0%6bPF zmGxL=GfH~kK9`e)`H-5;+~SV$AwZwF9MO%e+Z_&i64c?`uq%Hnnvu@o3A=?vS&+eGQL1OchU? zoqgE->)3YR)CXpNaMJD#w3C)LY90#AFV9*hPR!2E&YaM$xYOp^8oF2|sZz;-a@>m! z#sHX{zbYtnI+(M!yN@Zuj1st#;${0WZRB>Xf!082(QBPM^Ju-P*sY zKQRK5SL;^&lG)#roE$-(oqy!)xyHQFsGmLa=$S{1Ib;6Z+4=gTEwlB=sfDxVx%pQ8 z+=A!@ODy4Ut?q0$;&7UFYIc5MHcttJpxm47_0_F(z?8-^0ml!zFmxP zmBU)MHymgevBGpSR=uY_P%*nSC@G^cu=dSStqWb%vA5mOs8wM`&CP%Dk&-PHSMX{her)CJ4tRMYzz-dk<4<F zDhNFtb~R0{VPWb_NvuJ;c>~rfT=2e(1#a*C!-E7q60qL38&`Rec)z8acyIH{r=>f6b>a3qlz-L#VRrbrK<%VkLuA7TRxH<(>dl~=wN3RcPSaz?_ul) z6l6_P>);TuZ(>xD=E?wKcLz3U^?PmX|7hx1$=?g0mjT2Cs+B4@HI1B08^Xo;NcA=Q za4AI<2fHC5sS0*97FAQVWdBsb280loQw5tVyJXleq=FsQqo}H7mZu7qTo^f5!H#&A zr)noy!HU^HHQg#|5t%hrup^P-)l|XWx(Zg*qo{86Ysyr?Mr#Utu$e0nAyJwT1-n15 z_eb{kvg&DOAuakI=)U7UaA!BU<>$HSVozPy8lqG-aj`(!|@U+@84nJia6 z3c$vnp4}B&vs|iz|H~}H<&Oenk#I+Qjw3OqwQEKfZG9rkEFo3ij7qUV)|(KZ@B(C+ zQpO=@?2n1Bvx;o116JHf<&>HFV_#!`s5g$D9=(`+nrdvnl6Yb>)z~8mNxUMTWL+LL z0aJ~AFxA+J^5O+jY;IMJ?afq=t+vU-sm3N3MsC{2&Z>3d8JRWJ*dvkQmDr3o)!13G zLpI%t8hd|!Y(?#}l{}nkY;s}bYS=6KWbqk-8K#`hiond+w2ytu^|5IurMP2Fxg|CB z!c=3k>^)azLNaF_d#bT>Y9U!a?PE&`bp2bhkFB&`Jwry_+!}iV7F*9>xH;EYeU%}m z?uXU2Q9^8T4zJzsn-ak>H`>w>#!56{9wr}j1DBZG7bIBzoed094-TD zTK^DB%~_VA{A$Mwrpj3XzhX3o!_N5&p>(M?1bn&A>*X4U2~kT5QzVd&IQP}XIaRFL zhmxh=Fpbgf?HRmCa%JSOX&JlNFSt)D*D=g8H6;y8fR_TS_L%2HtS|5XoEoY5KqECD zZkk4N$&#ElQsI;3Wdz%tHc}ytQ$~GF8>tWr(Wc}YC>vE|Tru^uk&5zAy^me-QHY8g zsR zgvB^esA>j;rA%{k4LxyfO1)j?9@C-t=!?6()-hqRWQcvXb+ctVCM62rSkmi_ej#ev zRdNA6`oPUb!0<_lQfA)^2D-%esPMff!)fg4M!RiagVB<<(Wy5L9cJ1{UZF`aw=)+7 zY!7T%)Ma>>VSlGgO~Dif?WjnB@yn!ZI~~2TXTlzlis)!sGkGL0g&SZ>Cj1BpftJbR zKI*dhu2aQ@TL31E$b4jV3Nv>Sm(ez6x2bdZ>eCdyP|tE(H|l-Nk4eD`To2t;#N!%6rCRcy&*uo zXEd&ctSphj9zGD)h-ED;K!f$I1O1?dFMJJqO&kM`Qd!eZFPu9KL!1le3gsJstrp}a z)jVEJyVgsiCMjIg__aR684P>y&0egmRTKkX06T>7-rpZnzz^1jIM4Tr! zCzZMmBFil3*076qE$%>}VogDov+7<=Q>e(YP#m)@ia06XrFcld%tDzvnmF$ck#Nne`#MY!qo18XrFugzl!*ky3?i%m z2ZaZQ>`wL?Ze`~MKCH(HdGy!Z4y7YilsDBBq0lwY7y)b#wf+#Ft!xizt8I`rN#*7p zfNmEvtzl6Y8xIhDL3|{T{f{ss)wPWWm{wcV#l{0n6K;`ZCBX)gaUeSAUI_+^q>Nw- zK=f9zlSAz z4m#=MfD(lwq%gJHUIx%Knup?xp|GB54zT7LJXAO)py=6!Mj2xQqPfRpLvRSLUMS=q zznpC0n_d_MMYI>xm+Jgs5K!be3^^8H7|Ipza)7cw9N`}!G1Xw6oIjmX(c-~a4CYLf zF6&FM)`@HNQg(+Y?ob8&3$j!YTsL=Fe@XyCYjt4Z+%kGSJ>Ima1H$HQ9f!PQdG!KR z0ViNm*S9Twvl<2$JAz{NrN@|nW?5#=6RY=a0QfSS1mD6`QG0Ocm)?riY7P0>?iD*> z;+R>^*#s5ia9kqHp)1tT(D-gzFn^LKr_6ca{Z`StRFE!E7H_?vi7483J zZJ79m{(^0`T3eje@SAv_WAO`Sd4>PdT)_oLADK8gHiC*T&JdM=IX#C$9flBv!G@kM z2)Q!)aJnCR{JnE>aw}9A^5zEg9MpF^SKlsIyASpj+&*1#yXyU{O-9Kz z$EXO3`!XZ?inmWsL?hL=hg|-yWGqF-PkbYF-fkXVJrklO(9c* z?iaI7;SR0P0&6(S*tYu4ggN>Ysbt!le=7{?PXNWU2;%mfh>?3u}=yz?FJ#Hb3#iyP%O-KngGPrm3glX5pw%-nRG`4VTLlWlu>J*AoTY$sP@jAAXMfV}9x62J2?Q?9a z$*rm`A590_q;UvR^cmIVa8y(Ls^QiYzv3v(-Q-?|;$FTum&%23qhF19B3t*{ad zl#6;z;nwSRo5wX04-VC|mDP*Om)Ca^Yi>Lc=K@9*BtV#dS<{+k%fRlxc-q7e0w$G3 z0PwUT4_!cSTO*n)9KPBOeAEX=!%XZbOr+*z2^6apb;mTW%4Y9yyzVD?mDxj7?;ip% ztKCyq4!Ks0&XXbMy&lkJcY9cG;(W5zeOy-mP}wlcDSZY$Dx(i`R4hLKRJg?>sU#v( zBbMQz)x{BOA}6^Tc5z|nt}}-o4?LV1%AQoKe7{YogsQj^H3j;Ayy_94glwDmn&Q<6 zvq^zWt{#yr*Da&3rya5`BZmSopi@KQSQ_wp2xfFs1~6wgi+Wwo>@Jnrz+<*?HaNLe zE~maK*Ea6D9_d8ySSXcU(~*4>_0AGTd&Uq47ut5+fI&xb9c*RI)BXb{N_j;zrM))R}ROrdbSEMr^3+Q##mV>-bGwODbM?*Ji3}2m2$=E>lR!NE?RhnzKYh^^mtSCmCl=@PsqbckIEK(ap8EPl&9*eFu#%_R$j^zpuRST z11xb>_dO(-V(!6oKvPe$!O7mS`kX@mQ0KN5BRrf^9|Z`@S3MhJi%56fy;Y~MVYlPk zB}Ullqfzc=f&HfuMEI%{Aokm|h{j+mcF{Nl4@-OtIG#=bC|}#GE-G8Z0ky}H#eeC zborh1|5Va`_OFTq!@%b7D@q)>IIu2{?8H&RSH1F+E4tKYnE z!nEQoM(+3jbgLy~N9UwA_HForsm?=Kh-+bW(CFrUpQKj!;m#^(a z*GWrIc-V!7TUwh-ps!3#fd$2CmBaoZz5o!QRXxiGO(T##c3B26cCIIgstPy({ll&B zcS*)yuJAQuMHgb=vwdl+GRjz>nXQU?n*zX>d3PTeqQGBfIcIG&A_qC(E+G02P}IAQ zJ&YN)f&*W1k36-|dX`WqwCOntqSMmZC5Sh<-@O zmi+jD=z9iFK$Zc_v_Gv5Sn=G~1hjgW`=+y5e;TJzs+$?fuI-9XMXM)6A=XTHpxf3>wLsEB{oBwM3^7OH1exle!((Ox-yNF1mrmliR1f4vnoks z!knJNs1W)xRfbQ%%6C;|P6Y)fg4WkIR+pdDHa0iBD}QF_{OaRt8`{q7?CeZnvPiqQ zwz0gPI%SlR&EO+uxpLzMBi-QYh0w<5ng-LU4!*b)BqQUR6lR`aE+aNLm`~hf2m3Zk z-7lihwy`vW8$$(Pp^wZ-E>yl2Ab~6MQ=0%*Y+X(J3!=!gX%jGcO+c~6Ny;5dIj0Fw zs(CXmV8(Y8YudC4klau4$-`+AKrW2jvaNkIKn>xm2RntHh$G_kPMq z%jj6`HVc}d*Qg#_uCd-x2A4;)7)|qNKl;9hUU=QtW)}bGsqa2_+gm=y zblbc{tFe| zdDLJ0_fvFUu4iTzpa1&$kMuuyY4KBM7n|RG_E~ZN+duij;`7@t{=;9s^+$`JeEO|N zFP{Bh;je!ATO$0^pZ)ye^ItYTy8oSjTKxD&e(;(4iyKV$?frMZNSss0&s-Gu{m=bH p^!;h~ODpb^v3+kfZ)sfr-5x!jFX>(~o)MSQ_rp`lO+JtM{||Fsao7L= literal 0 HcmV?d00001 diff --git a/test/tests/userobjects/interface_user_object/interface_mp_rate_user_object_QP.i b/test/tests/userobjects/interface_user_object/interface_mp_rate_user_object_QP.i deleted file mode 100644 index 21e71c13db9d..000000000000 --- a/test/tests/userobjects/interface_user_object/interface_mp_rate_user_object_QP.i +++ /dev/null @@ -1,295 +0,0 @@ -[Mesh] - [gen] - type = GeneratedMeshGenerator - dim = 2 - nx = 2 - xmax = 2 - ny = 2 - ymax = 2 - [] - [./subdomain1] - input = gen - type = SubdomainBoundingBoxGenerator - bottom_left = '0 0 0' - top_right = '1 1 0' - block_id = 1 - [../] - [./master0_interface] - type = SideSetsBetweenSubdomainsGenerator - input = subdomain1 - master_block = '0' - paired_block = '1' - new_boundary = 'master0_interface' - [../] - [./break_boundary] - input = master0_interface - type = BreakBoundaryOnSubdomainGenerator - [../] -[] - -[Variables] - [./u] - order = FIRST - family = LAGRANGE - block = 0 - [../] - - [./v] - order = FIRST - family = LAGRANGE - block = 1 - [../] -[] - -[Kernels] - [./diff_u] - type = CoeffParamDiffusion - variable = u - D = 2 - block = 0 - [../] - [./diff_v] - type = CoeffParamDiffusion - variable = v - D = 4 - block = 1 - [../] - [./source_u] - type = BodyForce - variable = u - function = 0.1*t - [../] -[] - -[InterfaceKernels] - [./master0_interface] - type = PenaltyInterfaceDiffusionDot - variable = u - neighbor_var = v - boundary = master0_interface - penalty = 1e6 - [../] -[] - -[BCs] - [./u] - type = VacuumBC - variable = u - boundary = 'left_to_0 bottom_to_0 right top' - [../] - [./v] - type = VacuumBC - variable = v - boundary = 'left_to_1 bottom_to_1' - [../] -[] - -[Preconditioning] - [./SMP] - type = SMP - full = TRUE - [../] -[] - -[Executioner] - type = Transient - solve_type = 'NEWTON' - - petsc_options_iname = '-pc_type -pc_factor_mat_solver_package' - petsc_options_value = ' lu superlu_dist ' - dt = 1 - num_steps = 3 - dtmin = 1 - line_search = none -[] - -[Outputs] - exodus = true -[] - -[UserObjects] - [./interface_value_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = average - compute_rate = true - [../] - [./interface_master_minus_slave_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_master_minus_slave - compute_rate = true - [../] - [./interface_slave_minus_master_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_slave_minus_master - compute_rate = true - [../] - [./interface_absolute_jump_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_abs - compute_rate = true - [../] - [./interface_master_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = master - compute_rate = true - [../] - [./interface_slave_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = slave - compute_rate = true - [../] -[] - -[Materials] - [./stateful1] - type = StatefulMaterial - block = 0 - initial_diffusivity = 5 - [../] - [./stateful2] - type = StatefulMaterial - block = 1 - initial_diffusivity = 2 - [../] -[] - -[AuxKernels] - [./interface_avg_qp_aux] - type = InterfaceValueUserObjectAux - variable = avg_qp - boundary = 'master0_interface' - interface_uo_name = interface_value_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [] - [./interface_master_minus_slave_qp_aux] - type = InterfaceValueUserObjectAux - variable = master_minus_slave_qp - boundary = 'master0_interface' - interface_uo_name = interface_master_minus_slave_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./interface_slave_minus_master_qp_aux] - type = InterfaceValueUserObjectAux - variable = slave_minus_master_qp - boundary = 'master0_interface' - interface_uo_name = interface_slave_minus_master_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./interface_absolute_jump_qp_aux] - type = InterfaceValueUserObjectAux - variable = abs_jump_qp - boundary = 'master0_interface' - interface_uo_name = interface_absolute_jump_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./interface_master_qp_aux] - type = InterfaceValueUserObjectAux - variable = master_qp - boundary = 'master0_interface' - interface_uo_name = interface_master_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./interface_slave_qp_aux] - type = InterfaceValueUserObjectAux - variable = slave_qp - boundary = 'master0_interface' - interface_uo_name = interface_slave_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - - -[] - -[AuxVariables] - [./diffusivity] - family = MONOMIAL - order = CONSTANT - [] - [./avg_qp] - family = MONOMIAL - order = CONSTANT - [] - [./master_minus_slave_qp] - family = MONOMIAL - order = CONSTANT - [] - [./slave_minus_master_qp] - family = MONOMIAL - order = CONSTANT - [] - [./abs_jump_qp] - family = MONOMIAL - order = CONSTANT - [] - [./master_qp] - family = MONOMIAL - order = CONSTANT - [] - [./slave_qp] - family = MONOMIAL - order = CONSTANT - [] -[] - -[Postprocessors] - [./interface_average_PP] - type = SideAverageValue - boundary = master0_interface - variable = avg_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./master_minus_slave_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = master_minus_slave_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./slave_minus_master_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = slave_minus_master_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./abs_jump_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = abs_jump_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./master_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = master_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./slave_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = slave_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] -[] diff --git a/test/tests/userobjects/interface_user_object/interface_mp_real_user_object_QP.i b/test/tests/userobjects/interface_user_object/interface_mp_real_user_object_QP.i new file mode 100644 index 000000000000..e9529b67106f --- /dev/null +++ b/test/tests/userobjects/interface_user_object/interface_mp_real_user_object_QP.i @@ -0,0 +1,194 @@ +[Mesh] + [gen] + type = GeneratedMeshGenerator + dim = 2 + nx = 2 + xmax = 2 + ny = 2 + ymax = 2 + [] + [./subdomain1] + input = gen + type = SubdomainBoundingBoxGenerator + bottom_left = '0 0 0' + top_right = '1 1 0' + block_id = 1 + [../] + [./master0_interface] + type = SideSetsBetweenSubdomainsGenerator + input = subdomain1 + master_block = '0' + paired_block = '1' + new_boundary = 'master0_interface' + [../] + [./break_boundary] + input = master0_interface + type = BreakBoundaryOnSubdomainGenerator + [../] +[] + +[Variables] + [./u] + order = FIRST + family = LAGRANGE + block = 0 + [../] + + [./v] + order = FIRST + family = LAGRANGE + block = 1 + [../] +[] + +[Kernels] + [./diff_u] + type = CoeffParamDiffusion + variable = u + D = 2 + block = 0 + [../] + [./diff_v] + type = CoeffParamDiffusion + variable = v + D = 4 + block = 1 + [../] + [./source_u] + type = BodyForce + variable = u + function = 0.1*t + [../] +[] + +[InterfaceKernels] + [./master0_interface] + type = PenaltyInterfaceDiffusionDot + variable = u + neighbor_var = v + boundary = master0_interface + penalty = 1e6 + [../] +[] + +[BCs] + [./u] + type = VacuumBC + variable = u + boundary = 'left_to_0 bottom_to_0 right top' + [../] + [./v] + type = VacuumBC + variable = v + boundary = 'left_to_1 bottom_to_1' + [../] +[] + +[Preconditioning] + [./SMP] + type = SMP + full = TRUE + [../] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + + petsc_options_iname = '-pc_type -pc_factor_mat_solver_package' + petsc_options_value = ' lu superlu_dist ' + dt = 0.1 + num_steps = 3 + dtmin = 0.1 + line_search = none +[] + +[Outputs] + [./out] + type = Exodus + sync_only = true + sync_times = '0.1 0.2 0.3' + execute_on = 'TIMESTEP_END' + [] +[] + +[UserObjects] + [./interface_value_uo] + type = InterfaceQpMaterialPropertyRealUO + property = diffusivity + property_neighbor = diffusivity + boundary = 'master0_interface' + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + interface_value_type = average + [../] + [./interface_value_rate_uo] + type = InterfaceQpMaterialPropertyRealUO + property = diffusivity + property_neighbor = diffusivity + boundary = 'master0_interface' + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + interface_value_type = average + compute_rate = true + [../] + [./interface_value_increment_uo] + type = InterfaceQpMaterialPropertyRealUO + property = diffusivity + property_neighbor = diffusivity + boundary = 'master0_interface' + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + interface_value_type = average + compute_increment = true + [../] +[] + +[Materials] + [./stateful1] + type = StatefulMaterial + block = 0 + initial_diffusivity = 5 + [../] + [./stateful2] + type = StatefulMaterial + block = 1 + initial_diffusivity = 2 + [../] +[] + +[AuxKernels] + [./interface_avg_value_aux] + type = InterfaceValueUserObjectAux + variable = avg + boundary = 'master0_interface' + interface_uo_name = interface_value_uo + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + [] + [./interface_avg_value_rate_aux] + type = InterfaceValueUserObjectAux + variable = avg_rate + boundary = 'master0_interface' + interface_uo_name = interface_value_rate_uo + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + [] + [./interface_avg_value_increment_aux] + type = InterfaceValueUserObjectAux + variable = avg_increment + boundary = 'master0_interface' + interface_uo_name = interface_value_increment_uo + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + [] +[] + +[AuxVariables] + [./avg] + family = MONOMIAL + order = CONSTANT + [] + [./avg_rate] + family = MONOMIAL + order = CONSTANT + [] + [./avg_increment] + family = MONOMIAL + order = CONSTANT + [] +[] diff --git a/test/tests/userobjects/interface_user_object/interface_mp_user_object_QP.i b/test/tests/userobjects/interface_user_object/interface_mp_user_object_QP.i deleted file mode 100644 index ea1d07911044..000000000000 --- a/test/tests/userobjects/interface_user_object/interface_mp_user_object_QP.i +++ /dev/null @@ -1,295 +0,0 @@ -[Mesh] - [gen] - type = GeneratedMeshGenerator - dim = 2 - nx = 2 - xmax = 2 - ny = 2 - ymax = 2 - [] - [./subdomain1] - input = gen - type = SubdomainBoundingBoxGenerator - bottom_left = '0 0 0' - top_right = '1 1 0' - block_id = 1 - [../] - [./master0_interface] - type = SideSetsBetweenSubdomainsGenerator - input = subdomain1 - master_block = '0' - paired_block = '1' - new_boundary = 'master0_interface' - [../] - [./break_boundary] - input = master0_interface - type = BreakBoundaryOnSubdomainGenerator - [../] -[] - -[Variables] - [./u] - order = FIRST - family = LAGRANGE - block = 0 - [../] - - [./v] - order = FIRST - family = LAGRANGE - block = 1 - [../] -[] - -[Kernels] - [./diff_u] - type = CoeffParamDiffusion - variable = u - D = 2 - block = 0 - [../] - [./diff_v] - type = CoeffParamDiffusion - variable = v - D = 4 - block = 1 - [../] - [./source_u] - type = BodyForce - variable = u - function = 0.1*t - [../] -[] - -[InterfaceKernels] - [./master0_interface] - type = PenaltyInterfaceDiffusionDot - variable = u - neighbor_var = v - boundary = master0_interface - penalty = 1e6 - [../] -[] - -[BCs] - [./u] - type = VacuumBC - variable = u - boundary = 'left_to_0 bottom_to_0 right top' - [../] - [./v] - type = VacuumBC - variable = v - boundary = 'left_to_1 bottom_to_1' - [../] -[] - -[Preconditioning] - [./SMP] - type = SMP - full = TRUE - [../] -[] - -[Executioner] - type = Transient - solve_type = 'NEWTON' - - petsc_options_iname = '-pc_type -pc_factor_mat_solver_package' - petsc_options_value = ' lu superlu_dist ' - dt = 1 - num_steps = 3 - dtmin = 1 - line_search = none -[] - -[Outputs] - exodus = true -[] - -[UserObjects] - [./interface_value_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = average - compute_rate = false - [../] - [./interface_master_minus_slave_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_master_minus_slave - compute_rate = false - [../] - [./interface_slave_minus_master_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_slave_minus_master - compute_rate = false - [../] - [./interface_absolute_jump_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_abs - compute_rate = false - [../] - [./interface_master_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = master - compute_rate = false - [../] - [./interface_slave_uo] - type = InterfaceQpMaterialPropertyRealUO - property = diffusivity - property_neighbor = diffusivity - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = slave - compute_rate = false - [../] -[] - -[Materials] - [./stateful1] - type = StatefulMaterial - block = 0 - initial_diffusivity = 5 - [../] - [./stateful2] - type = StatefulMaterial - block = 1 - initial_diffusivity = 2 - [../] -[] - -[AuxKernels] - [./interface_avg_qp_aux] - type = InterfaceValueUserObjectAux - variable = avg_qp - boundary = 'master0_interface' - interface_uo_name = interface_value_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [] - [./interface_master_minus_slave_qp_aux] - type = InterfaceValueUserObjectAux - variable = master_minus_slave_qp - boundary = 'master0_interface' - interface_uo_name = interface_master_minus_slave_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./interface_slave_minus_master_qp_aux] - type = InterfaceValueUserObjectAux - variable = slave_minus_master_qp - boundary = 'master0_interface' - interface_uo_name = interface_slave_minus_master_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./interface_absolute_jump_qp_aux] - type = InterfaceValueUserObjectAux - variable = abs_jump_qp - boundary = 'master0_interface' - interface_uo_name = interface_absolute_jump_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./interface_master_qp_aux] - type = InterfaceValueUserObjectAux - variable = master_qp - boundary = 'master0_interface' - interface_uo_name = interface_master_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./interface_slave_qp_aux] - type = InterfaceValueUserObjectAux - variable = slave_qp - boundary = 'master0_interface' - interface_uo_name = interface_slave_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - - -[] - -[AuxVariables] - [./diffusivity] - family = MONOMIAL - order = CONSTANT - [] - [./avg_qp] - family = MONOMIAL - order = CONSTANT - [] - [./master_minus_slave_qp] - family = MONOMIAL - order = CONSTANT - [] - [./slave_minus_master_qp] - family = MONOMIAL - order = CONSTANT - [] - [./abs_jump_qp] - family = MONOMIAL - order = CONSTANT - [] - [./master_qp] - family = MONOMIAL - order = CONSTANT - [] - [./slave_qp] - family = MONOMIAL - order = CONSTANT - [] -[] - -[Postprocessors] - [./interface_average_PP] - type = SideAverageValue - boundary = master0_interface - variable = avg_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./master_minus_slave_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = master_minus_slave_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./slave_minus_master_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = slave_minus_master_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./abs_jump_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = abs_jump_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./master_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = master_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./slave_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = slave_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] -[] diff --git a/test/tests/userobjects/interface_user_object/interface_userobject_material_value.i b/test/tests/userobjects/interface_user_object/interface_userobject_material_value.i index 74b487d6409b..a1acb1da0f6f 100644 --- a/test/tests/userobjects/interface_user_object/interface_userobject_material_value.i +++ b/test/tests/userobjects/interface_user_object/interface_userobject_material_value.i @@ -128,7 +128,7 @@ property_boundary = 'boundary_prop' property_interface = 'interface_prop' boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_end final' + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' [../] [] diff --git a/test/tests/userobjects/interface_user_object/interface_value_rate_increment_user_object_QP.i b/test/tests/userobjects/interface_user_object/interface_value_rate_increment_user_object_QP.i new file mode 100644 index 000000000000..67db2c379a8b --- /dev/null +++ b/test/tests/userobjects/interface_user_object/interface_value_rate_increment_user_object_QP.i @@ -0,0 +1,236 @@ +[Mesh] + [gen] + type = GeneratedMeshGenerator + dim = 2 + nx = 2 + xmax = 2 + ny = 2 + ymax = 2 + [] + [./subdomain1] + input = gen + type = SubdomainBoundingBoxGenerator + bottom_left = '0 0 0' + top_right = '1 1 0' + block_id = 1 + [../] + [./master0_interface] + type = SideSetsBetweenSubdomainsGenerator + input = subdomain1 + master_block = '0' + paired_block = '1' + new_boundary = 'master0_interface' + [../] + [./break_boundary] + input = master0_interface + type = BreakBoundaryOnSubdomainGenerator + [../] +[] + +[Variables] + [./u] + order = FIRST + family = LAGRANGE + block = 0 + [../] + + [./v] + order = FIRST + family = LAGRANGE + block = 1 + [../] +[] + + +[Kernels] + [./diff_u] + type = CoeffParamDiffusion + variable = u + D = 2 + block = 0 + [../] + [./diff_v] + type = CoeffParamDiffusion + variable = v + D = 4 + block = 1 + [../] + [./source_u] + type = BodyForce + variable = u + function = 0.1*t + [../] +[] + +[InterfaceKernels] + [./master0_interface] + type = PenaltyInterfaceDiffusionDot + variable = u + neighbor_var = v + boundary = master0_interface + penalty = 1e6 + [../] +[] + +[BCs] + [./u] + type = VacuumBC + variable = u + boundary = 'left_to_0 bottom_to_0 right top' + [../] + [./v] + type = VacuumBC + variable = v + boundary = 'left_to_1 bottom_to_1' + [../] +[] + +[Preconditioning] + [./SMP] + type = SMP + full = TRUE + [../] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + + petsc_options_iname = '-pc_type -pc_factor_mat_solver_package' + petsc_options_value = ' lu superlu_dist ' + dt = 0.1 + num_steps = 3 + dtmin = 0.1 + line_search = none +[] + +[Outputs] + exodus = true +[] + +[UserObjects] + [./interface_avg_value_uo] + type = InterfaceQpValueUserObject + var = v1 + var_neighbor = v2 + boundary = 'master0_interface' + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + interface_value_type = average + [../] + [./interface_avg_value_rate_uo] + type = InterfaceQpValueUserObject + var = v1 + var_neighbor = v2 + boundary = 'master0_interface' + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + interface_value_type = average + compute_rate = true + [../] + [./interface_avg_value_increment_uo] + type = InterfaceQpValueUserObject + var = v1 + var_neighbor = v2 + boundary = 'master0_interface' + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + interface_value_type = average + compute_increment = true + [../] +[] + +[AuxKernels] + [./v1_saux] + type = StatefulAux + coupled = v1 + variable = v1 + [../] + [./v2_saux] + type = StatefulAux + coupled = v2 + variable = v2 + [../] + [./interface_avg_value_aux] + type = InterfaceValueUserObjectAux + variable = avg_qp + boundary = 'master0_interface' + interface_uo_name = interface_avg_value_uo + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + [] + [./interface_avg_value_rate_aux] + type = InterfaceValueUserObjectAux + variable = avg_rate_qp + boundary = 'master0_interface' + interface_uo_name = interface_avg_value_rate_uo + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + [] + [./interface_avg_value_increment_aux] + type = InterfaceValueUserObjectAux + variable = avg_increment_qp + boundary = 'master0_interface' + interface_uo_name = interface_avg_value_increment_uo + execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' + [] +[] + +[AuxVariables] + [./v1] + family = MONOMIAL + order = FIRST + initial_condition = 5 + [../] + [./v2] + family = MONOMIAL + order = FIRST + initial_condition = 2 + [../] + [./avg_qp] + family = MONOMIAL + order = CONSTANT + [] + [./avg_rate_qp] + family = MONOMIAL + order = CONSTANT + [] + [./avg_increment_qp] + family = MONOMIAL + order = CONSTANT + [] +[] + +# [Postprocessors] +# [./interface_average_PP] +# type = SideAverageValue +# boundary = master0_interface +# variable = avg_qp +# execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' +# [../] +# [./master_minus_slave_qp_PP] +# type = SideAverageValue +# boundary = master0_interface +# variable = master_minus_slave_qp +# execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' +# [../] +# [./slave_minus_master_qp_PP] +# type = SideAverageValue +# boundary = master0_interface +# variable = slave_minus_master_qp +# execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' +# [../] +# [./abs_jump_qp_PP] +# type = SideAverageValue +# boundary = master0_interface +# variable = abs_jump_qp +# execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' +# [../] +# [./master_qp_PP] +# type = SideAverageValue +# boundary = master0_interface +# variable = master_qp +# execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' +# [../] +# [./slave_qp_PP] +# type = SideAverageValue +# boundary = master0_interface +# variable = slave_qp +# execute_on = 'INITIAL LINEAR NONLINEAR TIMESTEP_BEGIN TIMESTEP_END FINAL' +# [../] +# [] diff --git a/test/tests/userobjects/interface_user_object/interface_value_rate_user_object_QP.i b/test/tests/userobjects/interface_user_object/interface_value_rate_user_object_QP.i deleted file mode 100644 index 443add118c5d..000000000000 --- a/test/tests/userobjects/interface_user_object/interface_value_rate_user_object_QP.i +++ /dev/null @@ -1,308 +0,0 @@ -[Mesh] - [gen] - type = GeneratedMeshGenerator - dim = 2 - nx = 2 - xmax = 2 - ny = 2 - ymax = 2 - [] - [./subdomain1] - input = gen - type = SubdomainBoundingBoxGenerator - bottom_left = '0 0 0' - top_right = '1 1 0' - block_id = 1 - [../] - [./master0_interface] - type = SideSetsBetweenSubdomainsGenerator - input = subdomain1 - master_block = '0' - paired_block = '1' - new_boundary = 'master0_interface' - [../] - [./break_boundary] - input = master0_interface - type = BreakBoundaryOnSubdomainGenerator - [../] -[] - -[Variables] - [./u] - order = FIRST - family = LAGRANGE - block = 0 - [../] - - [./v] - order = FIRST - family = LAGRANGE - block = 1 - [../] -[] - - -[AuxKernels] - [./v1_saux] - type = StatefulAux - coupled = v1 - variable = v1 - [../] - [./v2_saux] - type = StatefulAux - coupled = v2 - variable = v2 - [../] -[] - -[Kernels] - [./diff_u] - type = CoeffParamDiffusion - variable = u - D = 2 - block = 0 - [../] - [./diff_v] - type = CoeffParamDiffusion - variable = v - D = 4 - block = 1 - [../] - [./source_u] - type = BodyForce - variable = u - function = 0.1*t - [../] -[] - -[InterfaceKernels] - [./master0_interface] - type = PenaltyInterfaceDiffusionDot - variable = u - neighbor_var = v - boundary = master0_interface - penalty = 1e6 - [../] -[] - -[BCs] - [./u] - type = VacuumBC - variable = u - boundary = 'left_to_0 bottom_to_0 right top' - [../] - [./v] - type = VacuumBC - variable = v - boundary = 'left_to_1 bottom_to_1' - [../] -[] - -[Preconditioning] - [./SMP] - type = SMP - full = TRUE - [../] -[] - -[Executioner] - type = Transient - solve_type = 'NEWTON' - - petsc_options_iname = '-pc_type -pc_factor_mat_solver_package' - petsc_options_value = ' lu superlu_dist ' - dt = 1 - num_steps = 3 - dtmin = 1 - line_search = none -[] - -[Outputs] - exodus = true -[] - -[UserObjects] - [./interface_value_uo] - type = InterfaceQpValueUserObject - var = v1 - var_neighbor = v2 - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = average - compute_rate = true - [../] - [./interface_master_minus_slave_uo] - type = InterfaceQpValueUserObject - var = v1 - var_neighbor = v2 - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_master_minus_slave - compute_rate = true - [../] - [./interface_slave_minus_master_uo] - type = InterfaceQpValueUserObject - var = v1 - var_neighbor = v2 - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_slave_minus_master - compute_rate = true - [../] - [./interface_absolute_jump_uo] - type = InterfaceQpValueUserObject - var = v1 - var_neighbor = v2 - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = jump_abs - compute_rate = true - [../] - [./interface_master_uo] - type = InterfaceQpValueUserObject - var = v1 - var_neighbor = v2 - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = master - compute_rate = true - [../] - [./interface_slave_uo] - type = InterfaceQpValueUserObject - var = v1 - var_neighbor = v2 - boundary = 'master0_interface' - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - interface_value_type = slave - compute_rate = true - [../] -[] - -[AuxKernels] - [./interface_avg_qp_aux] - type = InterfaceValueUserObjectAux - variable = avg_qp - boundary = 'master0_interface' - interface_uo_name = interface_value_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - compute_rate = true - [] - [./interface_master_minus_slave_qp_aux] - type = InterfaceValueUserObjectAux - variable = master_minus_slave_qp - boundary = 'master0_interface' - interface_uo_name = interface_master_minus_slave_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - compute_rate = true - [../] - [./interface_slave_minus_master_qp_aux] - type = InterfaceValueUserObjectAux - variable = slave_minus_master_qp - boundary = 'master0_interface' - interface_uo_name = interface_slave_minus_master_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - compute_rate = true - [../] - [./interface_absolute_jump_qp_aux] - type = InterfaceValueUserObjectAux - variable = abs_jump_qp - boundary = 'master0_interface' - interface_uo_name = interface_absolute_jump_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - compute_rate = true - [../] - [./interface_master_qp_aux] - type = InterfaceValueUserObjectAux - variable = master_qp - boundary = 'master0_interface' - interface_uo_name = interface_master_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - compute_rate = true - [../] - [./interface_slave_qp_aux] - type = InterfaceValueUserObjectAux - variable = slave_qp - boundary = 'master0_interface' - interface_uo_name = interface_slave_uo - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - compute_rate = true - [../] - - -[] - -[AuxVariables] - [./v1] - family = MONOMIAL - order = FIRST - initial_condition = 5 - [../] - [./v2] - family = MONOMIAL - order = FIRST - initial_condition = 2 - [../] - [./avg_qp] - family = MONOMIAL - order = CONSTANT - [] - [./master_minus_slave_qp] - family = MONOMIAL - order = CONSTANT - [] - [./slave_minus_master_qp] - family = MONOMIAL - order = CONSTANT - [] - [./abs_jump_qp] - family = MONOMIAL - order = CONSTANT - [] - [./master_qp] - family = MONOMIAL - order = CONSTANT - [] - [./slave_qp] - family = MONOMIAL - order = CONSTANT - [] -[] - -[Postprocessors] - [./interface_average_PP] - type = SideAverageValue - boundary = master0_interface - variable = avg_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./master_minus_slave_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = master_minus_slave_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./slave_minus_master_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = slave_minus_master_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./abs_jump_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = abs_jump_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./master_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = master_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] - [./slave_qp_PP] - type = SideAverageValue - boundary = master0_interface - variable = slave_qp - execute_on = 'initial linear nonlinear timestep_begin timestep_end' - [../] -[] diff --git a/test/tests/userobjects/interface_user_object/tests b/test/tests/userobjects/interface_user_object/tests index 6b39f5f827cd..e33a2d1181ac 100644 --- a/test/tests/userobjects/interface_user_object/tests +++ b/test/tests/userobjects/interface_user_object/tests @@ -20,7 +20,7 @@ design = 'InterfaceQpValueUserObject.md InterfaceValueUserObjectAux.md' max_threads = 1 [../] - [./interface_UO_get_material] + [./interface_UO_get_material_test] type = 'RunApp' input = 'interface_userobject_material_value.i' expect_out = ' Solve Converged!' @@ -31,4 +31,23 @@ design = ' ' max_threads = 1 [../] + [./interface_Qp_rate_incremement_test] + type = 'Exodiff' + input = 'interface_value_rate_increment_user_object_QP.i' + exodiff = 'interface_value_rate_increment_user_object_QP_out.e' + requirement = "Testing the implementation of the InterfaceQpValueUserObject" + " when computing the variable rate or increment." + issues = '#14680' + design = 'InterfaceQpValueUserObject.md InterfaceValueUserObjectAux.md' + max_threads = 1 + [../] + [./interface_Qp_real_material] + type = 'Exodiff' + input = 'interface_mp_real_user_object_QP.i' + exodiff = 'interface_mp_real_user_object_QP_out.e' + requirement = "Testing the implementation of the InterfaceQpMaterialPropertyRealUO." + issues = '#14680' + design = 'InterfaceQpMaterialPropertyRealUO.md InterfaceValueUserObjectAux.md' + max_threads = 1 + [../] []