diff --git a/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.cpp b/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.cpp index 9a94764de5b..9fe34af0649 100644 --- a/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.cpp +++ b/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.cpp @@ -93,7 +93,7 @@ void VanGenuchtenCapillaryPressure::postProcessInput() if( m_phaseTypes[ip] != CapillaryPressureBase::REFERENCE_PHASE ) { - GEOSX_THROW_IF_LT_MSG( m_phaseCapPressureExponentInv[ip], 0.0, + GEOSX_THROW_IF_LE_MSG( m_phaseCapPressureExponentInv[ip], 0.0, errorMsg( viewKeyStruct::phaseCapPressureExponentInvString() ), InputError ); GEOSX_THROW_IF_GT_MSG( m_phaseCapPressureExponentInv[ip], 1.0, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBaseExtrinsicData.hpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBaseExtrinsicData.hpp index 3ef09f864d4..bf9518930b4 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBaseExtrinsicData.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBaseExtrinsicData.hpp @@ -47,6 +47,14 @@ EXTRINSIC_MESH_DATA_TRAIT( temperature, WRITE_AND_READ, "Temperature" ); +EXTRINSIC_MESH_DATA_TRAIT( deltaTemperature, + "deltaTemperature", + array1d< real64 >, + 0, + NOPLOT, + NO_WRITE, + "Accumulated temperature updates" ); + EXTRINSIC_MESH_DATA_TRAIT( globalCompDensity, "globalCompDensity", array2dLayoutComp, @@ -95,6 +103,14 @@ EXTRINSIC_MESH_DATA_TRAIT( dPhaseVolumeFraction_dPressure, NO_WRITE, "Derivative of phase volume fraction with respect to pressure" ); +EXTRINSIC_MESH_DATA_TRAIT( dPhaseVolumeFraction_dTemperature, + "dPhaseVolumeFraction_dTemperature", + array2dLayoutPhase, + 0, + NOPLOT, + NO_WRITE, + "Derivative of phase volume fraction with respect to temperature" ); + EXTRINSIC_MESH_DATA_TRAIT( dPhaseVolumeFraction_dGlobalCompDensity, "dPhaseVolumeFraction_dGlobalCompDensity", array3dLayoutPhase_dC, @@ -119,6 +135,14 @@ EXTRINSIC_MESH_DATA_TRAIT( dPhaseMobility_dPressure, NO_WRITE, "Derivative of phase mobility with respect to pressure" ); +EXTRINSIC_MESH_DATA_TRAIT( dPhaseMobility_dTemperature, + "dPhaseMobility_dTemperature", + array2dLayoutPhase, + 0, + NOPLOT, + NO_WRITE, + "Derivative of phase mobility with respect to temperature" ); + EXTRINSIC_MESH_DATA_TRAIT( dPhaseMobility_dGlobalCompDensity, "dPhaseMobility_dGlobalCompDensity", array3dLayoutPhase_dC, diff --git a/src/coreComponents/schema/docs/AcousticSEM_other.rst b/src/coreComponents/schema/docs/AcousticSEM_other.rst index edd823f6468..71642d4c7ae 100644 --- a/src/coreComponents/schema/docs/AcousticSEM_other.rst +++ b/src/coreComponents/schema/docs/AcousticSEM_other.rst @@ -1,20 +1,20 @@ -========================= =================================================================================================================================================== ======================================================================= -Name Type Description -========================= =================================================================================================================================================== ======================================================================= -indexSeismoTrace integer Count for output pressure at receivers -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -pressureNp1AtReceivers real64_array2d Pressure value at each receiver for each timestep -receiverIsLocal integer_array Flag that indicates whether the receiver is local to this MPI rank -receiverNodeIds integer_array2d Indices of the nodes (in the right order) for each receiver point -sourceConstants real64_array2d Constant part of the receiver for the nodes listed in m_receiverNodeIds -sourceIsLocal integer_array Flag that indicates whether the source is local to this MPI rank -sourceNodeIds integer_array2d Indices of the nodes (in the right order) for each source point -sourceValue real64_array2d Source Value of the sources -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ======================================================================= +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================= +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================= +indexSeismoTrace integer Count for output pressure at receivers +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +pressureNp1AtReceivers real64_array2d Pressure value at each receiver for each timestep +receiverIsLocal integer_array Flag that indicates whether the receiver is local to this MPI rank +receiverNodeIds integer_array2d Indices of the nodes (in the right order) for each receiver point +sourceConstants real64_array2d Constant part of the receiver for the nodes listed in m_receiverNodeIds +sourceIsLocal integer_array Flag that indicates whether the source is local to this MPI rank +sourceNodeIds integer_array2d Indices of the nodes (in the right order) for each source point +sourceValue real64_array2d Source Value of the sources +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================= diff --git a/src/coreComponents/schema/docs/CompositionalMultiphaseFVM_other.rst b/src/coreComponents/schema/docs/CompositionalMultiphaseFVM_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/CompositionalMultiphaseFVM_other.rst +++ b/src/coreComponents/schema/docs/CompositionalMultiphaseFVM_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/CompositionalMultiphaseHybridFVM_other.rst b/src/coreComponents/schema/docs/CompositionalMultiphaseHybridFVM_other.rst index 8e2f2eb6a85..bf32e9bac59 100644 --- a/src/coreComponents/schema/docs/CompositionalMultiphaseHybridFVM_other.rst +++ b/src/coreComponents/schema/docs/CompositionalMultiphaseHybridFVM_other.rst @@ -1,14 +1,14 @@ -========================= =================================================================================================================================================== ================================ ================================================================ -Name Type Registered On Description -========================= =================================================================================================================================================== ================================ ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -deltaFacePressure real64_array :ref:`DATASTRUCTURE_FaceManager` Accumulated face pressure updates -mimGravityCoefficient real64_array :ref:`DATASTRUCTURE_FaceManager` Mimetic gravity coefficient -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================ ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================ ================================================================ +Name Type Registered On Description +========================= =============================================================================================================================================================================================================================================================================================== ================================ ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +deltaFacePressure real64_array :ref:`DATASTRUCTURE_FaceManager` Accumulated face pressure updates +mimGravityCoefficient real64_array :ref:`DATASTRUCTURE_FaceManager` Mimetic gravity coefficient +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================ ================================================================ diff --git a/src/coreComponents/schema/docs/CompositionalMultiphaseReservoir_other.rst b/src/coreComponents/schema/docs/CompositionalMultiphaseReservoir_other.rst index 7acea5a6dbf..aa08bcefbb0 100644 --- a/src/coreComponents/schema/docs/CompositionalMultiphaseReservoir_other.rst +++ b/src/coreComponents/schema/docs/CompositionalMultiphaseReservoir_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/CompositionalMultiphaseWell_other.rst b/src/coreComponents/schema/docs/CompositionalMultiphaseWell_other.rst index 48a09333642..b3804961a57 100644 --- a/src/coreComponents/schema/docs/CompositionalMultiphaseWell_other.rst +++ b/src/coreComponents/schema/docs/CompositionalMultiphaseWell_other.rst @@ -1,14 +1,14 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -WellControls node :ref:`DATASTRUCTURE_WellControls` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +WellControls node :ref:`DATASTRUCTURE_WellControls` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/EmbeddedSurfaceGenerator_other.rst b/src/coreComponents/schema/docs/EmbeddedSurfaceGenerator_other.rst index b53cb9d3cce..8bd71bf6b41 100644 --- a/src/coreComponents/schema/docs/EmbeddedSurfaceGenerator_other.rst +++ b/src/coreComponents/schema/docs/EmbeddedSurfaceGenerator_other.rst @@ -1,14 +1,14 @@ -========================= =================================================================================================================================================== ================================================ ======================================================================================================================================================================================================================================================================================================================== -Name Type Registered On Description -========================= =================================================================================================================================================== ================================================ ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -parentEdgeIndex integer_array :ref:`DATASTRUCTURE_embeddedSurfacesNodeManager` Index of parent edge within the mesh object it is registered on. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================ ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ================================================ ======================================================================================================================================================================================================================================================================================================================== +Name Type Registered On Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================ ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +parentEdgeIndex integer_array :ref:`DATASTRUCTURE_embeddedSurfacesNodeManager` Index of parent edge within the mesh object it is registered on. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================ ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/FlowProppantTransport_other.rst b/src/coreComponents/schema/docs/FlowProppantTransport_other.rst index 7acea5a6dbf..aa08bcefbb0 100644 --- a/src/coreComponents/schema/docs/FlowProppantTransport_other.rst +++ b/src/coreComponents/schema/docs/FlowProppantTransport_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/Hydrofracture_other.rst b/src/coreComponents/schema/docs/Hydrofracture_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/Hydrofracture_other.rst +++ b/src/coreComponents/schema/docs/Hydrofracture_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/LagrangianContact_other.rst b/src/coreComponents/schema/docs/LagrangianContact_other.rst index 7acea5a6dbf..aa08bcefbb0 100644 --- a/src/coreComponents/schema/docs/LagrangianContact_other.rst +++ b/src/coreComponents/schema/docs/LagrangianContact_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/LaplaceFEM_other.rst b/src/coreComponents/schema/docs/LaplaceFEM_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/LaplaceFEM_other.rst +++ b/src/coreComponents/schema/docs/LaplaceFEM_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/MultiphasePoromechanics_other.rst b/src/coreComponents/schema/docs/MultiphasePoromechanics_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/MultiphasePoromechanics_other.rst +++ b/src/coreComponents/schema/docs/MultiphasePoromechanics_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/PhaseFieldDamageFEM_other.rst b/src/coreComponents/schema/docs/PhaseFieldDamageFEM_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/PhaseFieldDamageFEM_other.rst +++ b/src/coreComponents/schema/docs/PhaseFieldDamageFEM_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/PhaseFieldFracture_other.rst b/src/coreComponents/schema/docs/PhaseFieldFracture_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/PhaseFieldFracture_other.rst +++ b/src/coreComponents/schema/docs/PhaseFieldFracture_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/ProppantTransport_other.rst b/src/coreComponents/schema/docs/ProppantTransport_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/ProppantTransport_other.rst +++ b/src/coreComponents/schema/docs/ProppantTransport_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/SinglePhaseFVM_other.rst b/src/coreComponents/schema/docs/SinglePhaseFVM_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/SinglePhaseFVM_other.rst +++ b/src/coreComponents/schema/docs/SinglePhaseFVM_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/SinglePhaseHybridFVM_other.rst b/src/coreComponents/schema/docs/SinglePhaseHybridFVM_other.rst index 56309599fa0..7cd3eeef08a 100644 --- a/src/coreComponents/schema/docs/SinglePhaseHybridFVM_other.rst +++ b/src/coreComponents/schema/docs/SinglePhaseHybridFVM_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ================================ ================================================================ -Name Type Registered On Description -========================= =================================================================================================================================================== ================================ ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -deltaFacePressure real64_array :ref:`DATASTRUCTURE_FaceManager` Accumulated face pressure updates -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================ ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================ ================================================================ +Name Type Registered On Description +========================= =============================================================================================================================================================================================================================================================================================== ================================ ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +deltaFacePressure real64_array :ref:`DATASTRUCTURE_FaceManager` Accumulated face pressure updates +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================ ================================================================ diff --git a/src/coreComponents/schema/docs/SinglePhasePoromechanicsEmbeddedFractures_other.rst b/src/coreComponents/schema/docs/SinglePhasePoromechanicsEmbeddedFractures_other.rst index 7acea5a6dbf..aa08bcefbb0 100644 --- a/src/coreComponents/schema/docs/SinglePhasePoromechanicsEmbeddedFractures_other.rst +++ b/src/coreComponents/schema/docs/SinglePhasePoromechanicsEmbeddedFractures_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/SinglePhasePoromechanics_other.rst b/src/coreComponents/schema/docs/SinglePhasePoromechanics_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/SinglePhasePoromechanics_other.rst +++ b/src/coreComponents/schema/docs/SinglePhasePoromechanics_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/SinglePhaseProppantFVM_other.rst b/src/coreComponents/schema/docs/SinglePhaseProppantFVM_other.rst index 5b4f62fa9a3..c874c188464 100644 --- a/src/coreComponents/schema/docs/SinglePhaseProppantFVM_other.rst +++ b/src/coreComponents/schema/docs/SinglePhaseProppantFVM_other.rst @@ -1,12 +1,12 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/SinglePhaseReservoir_other.rst b/src/coreComponents/schema/docs/SinglePhaseReservoir_other.rst index 7acea5a6dbf..aa08bcefbb0 100644 --- a/src/coreComponents/schema/docs/SinglePhaseReservoir_other.rst +++ b/src/coreComponents/schema/docs/SinglePhaseReservoir_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/SinglePhaseWell_other.rst b/src/coreComponents/schema/docs/SinglePhaseWell_other.rst index 48a09333642..b3804961a57 100644 --- a/src/coreComponents/schema/docs/SinglePhaseWell_other.rst +++ b/src/coreComponents/schema/docs/SinglePhaseWell_other.rst @@ -1,14 +1,14 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -WellControls node :ref:`DATASTRUCTURE_WellControls` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +WellControls node :ref:`DATASTRUCTURE_WellControls` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/SolidMechanicsEmbeddedFractures_other.rst b/src/coreComponents/schema/docs/SolidMechanicsEmbeddedFractures_other.rst index 7acea5a6dbf..aa08bcefbb0 100644 --- a/src/coreComponents/schema/docs/SolidMechanicsEmbeddedFractures_other.rst +++ b/src/coreComponents/schema/docs/SolidMechanicsEmbeddedFractures_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/SolidMechanicsLagrangianSSLE_other.rst b/src/coreComponents/schema/docs/SolidMechanicsLagrangianSSLE_other.rst index 8ab18aa4617..d6506d6fedf 100644 --- a/src/coreComponents/schema/docs/SolidMechanicsLagrangianSSLE_other.rst +++ b/src/coreComponents/schema/docs/SolidMechanicsLagrangianSSLE_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxForce real64 The maximum force contribution in the problem domain. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxForce real64 The maximum force contribution in the problem domain. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/SolidMechanics_LagrangianFEM_other.rst b/src/coreComponents/schema/docs/SolidMechanics_LagrangianFEM_other.rst index 8ab18aa4617..d6506d6fedf 100644 --- a/src/coreComponents/schema/docs/SolidMechanics_LagrangianFEM_other.rst +++ b/src/coreComponents/schema/docs/SolidMechanics_LagrangianFEM_other.rst @@ -1,13 +1,13 @@ -========================= =================================================================================================================================================== ================================================================ -Name Type Description -========================= =================================================================================================================================================== ================================================================ -maxForce real64 The maximum force contribution in the problem domain. -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ================================================================ +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ +maxForce real64 The maximum force contribution in the problem domain. +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ================================================================ diff --git a/src/coreComponents/schema/docs/SurfaceGenerator_other.rst b/src/coreComponents/schema/docs/SurfaceGenerator_other.rst index 96cfc6ecec7..37b9b97583d 100644 --- a/src/coreComponents/schema/docs/SurfaceGenerator_other.rst +++ b/src/coreComponents/schema/docs/SurfaceGenerator_other.rst @@ -1,18 +1,18 @@ -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -Name Type Description -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== -discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. -failCriterion integer (no description available) -maxStableDt real64 Value of the Maximum Stable Timestep for this solver. -meshTargets geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. -tipEdges LvArray_SortedArray< int, int, LvArray_ChaiBuffer > Set containing all the tip edges -tipFaces LvArray_SortedArray< int, int, LvArray_ChaiBuffer > Set containing all the tip faces -tipNodes LvArray_SortedArray< int, int, LvArray_ChaiBuffer > Set containing all the nodes at the fracture tip -trailingFaces LvArray_SortedArray< int, int, LvArray_ChaiBuffer > Set containing all the trailing faces -LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` -NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` -========================= =================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +Name Type Description +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== +discretization string Name of discretization object (defined in the :ref:`NumericalMethodsManager`) to use for this solver. For instance, if this is a Finite Element Solver, the name of a :ref:`FiniteElement` should be specified. If this is a Finite Volume Method, the name of a :ref:`FiniteVolume` discretization should be specified. +failCriterion integer (no description available) +maxStableDt real64 Value of the Maximum Stable Timestep for this solver. +meshTargets geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > MeshBody/Region combinations that the solver will be applied to. +tipEdges LvArray_SortedArray< int, int, LvArray_ChaiBuffer > Set containing all the tip edges +tipFaces LvArray_SortedArray< int, int, LvArray_ChaiBuffer > Set containing all the tip faces +tipNodes LvArray_SortedArray< int, int, LvArray_ChaiBuffer > Set containing all the nodes at the fracture tip +trailingFaces LvArray_SortedArray< int, int, LvArray_ChaiBuffer > Set containing all the trailing faces +LinearSolverParameters node :ref:`DATASTRUCTURE_LinearSolverParameters` +NonlinearSolverParameters node :ref:`DATASTRUCTURE_NonlinearSolverParameters` +========================= =============================================================================================================================================================================================================================================================================================== ======================================================================================================================================================================================================================================================================================================================== diff --git a/src/coreComponents/schema/docs/TwoPointFluxApproximation_other.rst b/src/coreComponents/schema/docs/TwoPointFluxApproximation_other.rst index 825f9d230d6..b1b2c45ed80 100644 --- a/src/coreComponents/schema/docs/TwoPointFluxApproximation_other.rst +++ b/src/coreComponents/schema/docs/TwoPointFluxApproximation_other.rst @@ -1,15 +1,15 @@ -======================== =================================================================================================================================================== ======================================== -Name Type Description -======================== =================================================================================================================================================== ======================================== -cellStencil geosx_CellElementStencilTPFA (no description available) -coefficientName string Name of coefficient field -edfmStencil geosx_EmbeddedSurfaceToCellStencil (no description available) -faceElementToCellStencil geosx_FaceElementToCellStencil (no description available) -fieldName string Name of primary solution field -fractureStencil geosx_SurfaceElementStencil (no description available) -targetRegions geosx_mapBase< std_string, LvArray_Array< std_string, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > List of regions to build the stencil for -======================== =================================================================================================================================================== ======================================== +======================== =============================================================================================================================================================================================================================================================================================== ======================================== +Name Type Description +======================== =============================================================================================================================================================================================================================================================================================== ======================================== +cellStencil geosx_CellElementStencilTPFA (no description available) +coefficientName string Name of coefficient field +edfmStencil geosx_EmbeddedSurfaceToCellStencil (no description available) +faceElementToCellStencil geosx_FaceElementToCellStencil (no description available) +fieldName string Name of primary solution field +fractureStencil geosx_SurfaceElementStencil (no description available) +targetRegions geosx_mapBase< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, LvArray_Array< std___cxx11_basic_string< char, std_char_traits< char >, std_allocator< char > >, 1, camp_int_seq< long, 0l >, int, LvArray_ChaiBuffer >, std_integral_constant< bool, true > > List of regions to build the stencil for +======================== =============================================================================================================================================================================================================================================================================================== ======================================== diff --git a/src/coreComponents/schema/schema.xsd.other b/src/coreComponents/schema/schema.xsd.other index c03354add08..67ed8be6142 100644 --- a/src/coreComponents/schema/schema.xsd.other +++ b/src/coreComponents/schema/schema.xsd.other @@ -412,7 +412,7 @@ - + @@ -480,7 +480,7 @@ - + @@ -504,7 +504,7 @@ - + @@ -514,7 +514,7 @@ - + @@ -526,7 +526,7 @@ - + @@ -539,7 +539,7 @@ - + @@ -552,7 +552,7 @@ - + @@ -564,7 +564,7 @@ - + @@ -574,7 +574,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -596,7 +596,7 @@ - + @@ -606,7 +606,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -626,7 +626,7 @@ - + @@ -636,7 +636,7 @@ - + @@ -646,7 +646,7 @@ - + @@ -656,7 +656,7 @@ - + @@ -666,7 +666,7 @@ - + @@ -678,7 +678,7 @@ - + @@ -688,7 +688,7 @@ - + @@ -700,7 +700,7 @@ - + @@ -713,7 +713,7 @@ - + @@ -725,7 +725,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -749,7 +749,7 @@ - + @@ -763,7 +763,7 @@ - + diff --git a/src/coreComponents/unitTests/fluidFlowTests/testCompFlowUtils.hpp b/src/coreComponents/unitTests/fluidFlowTests/testCompFlowUtils.hpp index 340aff5f658..52dcf0665f0 100644 --- a/src/coreComponents/unitTests/fluidFlowTests/testCompFlowUtils.hpp +++ b/src/coreComponents/unitTests/fluidFlowTests/testCompFlowUtils.hpp @@ -17,9 +17,13 @@ #include "codingUtilities/UnitTestUtilities.hpp" #include "constitutive/ConstitutiveManager.hpp" +#include "constitutive/fluid/MultiFluidBase.hpp" #include "mesh/MeshManager.hpp" #include "mainInterface/ProblemManager.hpp" #include "physicsSolvers/fluidFlow/CompositionalMultiphaseBase.hpp" +#include "physicsSolvers/fluidFlow/CompositionalMultiphaseBaseExtrinsicData.hpp" +#include "physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.hpp" +#include "physicsSolvers/fluidFlow/FlowSolverBaseExtrinsicData.hpp" namespace geosx { @@ -27,6 +31,9 @@ namespace geosx namespace testing { +using namespace geosx::constitutive; +using namespace geosx::constitutive::multifluid; + void checkDerivative( real64 const valueEps, real64 const value, real64 const deriv, @@ -212,6 +219,576 @@ void setupProblemFromXML( ProblemManager & problemManager, char const * const xm problemManager.applyInitialConditions(); } +void testCompositionNumericalDerivatives( CompositionalMultiphaseFVM & solver, + DomainPartition & domain, + real64 const perturbParameter, + real64 const relTol ) +{ + integer const numComp = solver.numFluidComponents(); + + solver.forMeshTargets( domain.getMeshBodies(), + [&]( string const, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + ElementRegionManager & elementRegionManager = mesh.getElemManager(); + elementRegionManager.forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + SCOPED_TRACE( subRegion.getParent().getParent().getName() + "/" + subRegion.getName() ); + + string const & fluidName = subRegion.getReference< string >( CompositionalMultiphaseBase::viewKeyStruct::fluidNamesString() ); + MultiFluidBase const & fluid = subRegion.getConstitutiveModel< MultiFluidBase >( fluidName ); + arrayView1d< string const > const & components = fluid.componentNames(); + + arrayView2d< real64, compflow::USD_COMP > const compDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); + + arrayView2d< real64, compflow::USD_COMP > const dCompDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); + + arrayView2d< real64, compflow::USD_COMP > const compFrac = + subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompFraction >(); + + arrayView3d< real64, compflow::USD_COMP_DC > const dCompFrac_dCompDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::dGlobalCompFraction_dGlobalCompDensity >(); + + // reset the solver state to zero out variable updates + solver.resetStateToBeginningOfStep( domain ); + + // make a copy of unperturbed values of component fractions + array2d< real64, compflow::LAYOUT_COMP > compFracOrig( subRegion.size(), numComp ); + compFracOrig.setValues< serialPolicy >( compFrac ); + + // update component density and check derivatives + for( integer jc = 0; jc < numComp; ++jc ) + { + // reset the solver state to zero out variable updates (resetting the whole domain is overkill...) + solver.resetStateToBeginningOfStep( domain ); + + // perturb a single component density in each cell + forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) + { + real64 const dRho = perturbParameter * ( compDens[ei][jc] + perturbParameter ); + dCompDens[ei][jc] = dRho; + } ); + + // recompute component fractions + solver.updateComponentFraction( subRegion ); + + // check values in each cell + forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) + { + SCOPED_TRACE( "Element " + std::to_string( ei ) ); + + auto dZ_dRho = invertLayout( dCompFrac_dCompDens[ei].toSliceConst(), numComp, numComp ); + string var = "compDens[" + components[jc] + "]"; + + checkDerivative( compFrac[ei].toSliceConst(), + compFracOrig[ei].toSliceConst(), + dZ_dRho[jc].toSliceConst(), + dCompDens[ei][jc], + relTol, + "compFrac", + var, + components ); + } ); + } + } ); + } ); +} + +void testPhaseVolumeFractionNumericalDerivatives( CompositionalMultiphaseFVM & solver, + DomainPartition & domain, + bool const isThermal, + real64 const perturbParameter, + real64 const relTol ) +{ + integer const numComp = solver.numFluidComponents(); + integer const numPhase = solver.numFluidPhases(); + + solver.forMeshTargets( domain.getMeshBodies(), + [&]( string const, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + ElementRegionManager & elementRegionManager = mesh.getElemManager(); + elementRegionManager.forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + SCOPED_TRACE( subRegion.getParent().getParent().getName() + "/" + subRegion.getName() ); + + string const & fluidName = subRegion.getReference< string >( CompositionalMultiphaseFVM::viewKeyStruct::fluidNamesString() ); + MultiFluidBase const & fluid = subRegion.getConstitutiveModel< MultiFluidBase >( fluidName ); + arrayView1d< string const > const & components = fluid.componentNames(); + arrayView1d< string const > const & phases = fluid.phaseNames(); + + arrayView1d< real64 > const pres = + subRegion.getExtrinsicData< extrinsicMeshData::flow::pressure >(); + + arrayView1d< real64 > const dPres = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaPressure >(); + + arrayView2d< real64, compflow::USD_COMP > const compDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); + + arrayView2d< real64, compflow::USD_COMP > const dCompDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); + + arrayView2d< real64, compflow::USD_PHASE > const phaseVolFrac = + subRegion.getExtrinsicData< extrinsicMeshData::flow::phaseVolumeFraction >(); + + arrayView2d< real64, compflow::USD_PHASE > const dPhaseVolFrac_dPres = + subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseVolumeFraction_dPressure >(); + + arrayView3d< real64, compflow::USD_PHASE_DC > const dPhaseVolFrac_dCompDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseVolumeFraction_dGlobalCompDensity >(); + + // reset the solver state to zero out variable updates + solver.resetStateToBeginningOfStep( domain ); + + // make a copy of unperturbed values of component fractions + array2d< real64, compflow::LAYOUT_PHASE > phaseVolFracOrig( subRegion.size(), numPhase ); + phaseVolFracOrig.setValues< serialPolicy >( phaseVolFrac ); + + // Step 1: update pressure and check derivatives + + { + // perturb pressure in each cell + forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) + { + real64 const dP = perturbParameter * ( pres[ei] + perturbParameter ); + dPres[ei] = dP; + } ); + + // recompute component fractions + solver.updateFluidState( subRegion ); + + // check values in each cell + forAll< serialPolicy >( subRegion.size(), [=, &phaseVolFracOrig] ( localIndex const ei ) + { + SCOPED_TRACE( "Element " + std::to_string( ei ) ); + + checkDerivative( phaseVolFrac[ei].toSliceConst(), + phaseVolFracOrig[ei].toSliceConst(), + dPhaseVolFrac_dPres[ei].toSliceConst(), + dPres[ei], + relTol, + "phaseVolFrac", + "Pres", + phases ); + } ); + } + + // Step 2: update component density and check derivatives + + for( integer jc = 0; jc < numComp; ++jc ) + { + // reset the solver state to zero out variable updates (resetting the whole domain is overkill...) + solver.resetStateToBeginningOfStep( domain ); + + // perturb a single component density in each cell + forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) + { + real64 const dRho = perturbParameter * ( compDens[ei][jc] + perturbParameter ); + dCompDens[ei][jc] = dRho; + } ); + + // recompute component fractions + solver.updateFluidState( subRegion ); + + // check values in each cell + forAll< serialPolicy >( subRegion.size(), [=, &phaseVolFracOrig] ( localIndex const ei ) + { + SCOPED_TRACE( "Element " + std::to_string( ei ) ); + + auto dS_dRho = invertLayout( dPhaseVolFrac_dCompDens[ei].toSliceConst(), numPhase, numComp ); + string var = "compDens[" + components[jc] + "]"; + + checkDerivative( phaseVolFrac[ei].toSliceConst(), + phaseVolFracOrig[ei].toSliceConst(), + dS_dRho[jc].toSliceConst(), + dCompDens[ei][jc], + relTol, + "phaseVolFrac", + var, + phases ); + } ); + } + + // Step 3: update temperature and check derivatives + + if( isThermal ) + { + arrayView1d< real64 > const temp = + subRegion.getExtrinsicData< extrinsicMeshData::flow::temperature >(); + + arrayView1d< real64 > const dTemp = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaTemperature >(); + + arrayView2d< real64, compflow::USD_PHASE > const dPhaseVolFrac_dTemp = + subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseVolumeFraction_dTemperature >(); + + // reset the solver state to zero out variable updates + solver.resetStateToBeginningOfStep( domain ); + + // perturb temperature in each cell + forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) + { + real64 const dT = perturbParameter * ( temp[ei] + perturbParameter ); + dTemp[ei] = dT; + } ); + + // recompute all fluid properties + solver.updateFluidState( subRegion ); + + // check values in each cell + forAll< serialPolicy >( subRegion.size(), [=, &phaseVolFracOrig] ( localIndex const ei ) + { + SCOPED_TRACE( "Element " + std::to_string( ei ) ); + + checkDerivative( phaseVolFrac[ei].toSliceConst(), + phaseVolFracOrig[ei].toSliceConst(), + dPhaseVolFrac_dTemp[ei].toSliceConst(), + dTemp[ei], + relTol, + "phaseVolFrac", + "Temp", + phases ); + } ); + } + + } ); + } ); +} + +void testPhaseMobilityNumericalDerivatives( CompositionalMultiphaseFVM & solver, + DomainPartition & domain, + bool const isThermal, + real64 const perturbParameter, + real64 const relTol ) +{ + integer const numComp = solver.numFluidComponents(); + integer const numPhase = solver.numFluidPhases(); + + solver.forMeshTargets( domain.getMeshBodies(), + [&]( string const, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + ElementRegionManager & elementRegionManager = mesh.getElemManager(); + elementRegionManager.forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + SCOPED_TRACE( subRegion.getParent().getParent().getName() + "/" + subRegion.getName() ); + + string const & fluidName = subRegion.getReference< string >( CompositionalMultiphaseFVM::viewKeyStruct::fluidNamesString() ); + MultiFluidBase const & fluid = subRegion.getConstitutiveModel< MultiFluidBase >( fluidName ); + arrayView1d< string const > const & components = fluid.componentNames(); + arrayView1d< string const > const & phases = fluid.phaseNames(); + + arrayView1d< real64 > const pres = + subRegion.getExtrinsicData< extrinsicMeshData::flow::pressure >(); + + arrayView1d< real64 > const dPres = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaPressure >(); + + arrayView2d< real64, compflow::USD_COMP > const compDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); + + arrayView2d< real64, compflow::USD_COMP > const dCompDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); + + arrayView2d< real64, compflow::USD_PHASE > const phaseMob = + subRegion.getExtrinsicData< extrinsicMeshData::flow::phaseMobility >(); + + arrayView2d< real64, compflow::USD_PHASE > const dPhaseMob_dPres = + subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseMobility_dPressure >(); + + arrayView3d< real64, compflow::USD_PHASE_DC > const dPhaseMob_dCompDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseMobility_dGlobalCompDensity >(); + + // reset the solver state to zero out variable updates + solver.resetStateToBeginningOfStep( domain ); + + // make a copy of unperturbed values of component fractions + array2d< real64, compflow::LAYOUT_PHASE > phaseMobOrig( subRegion.size(), numPhase ); + phaseMobOrig.setValues< serialPolicy >( phaseMob ); + + // Step 1: update pressure and check derivatives + + { + // perturb pressure in each cell + forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) + { + real64 const dP = perturbParameter * ( pres[ei] + perturbParameter ); + dPres[ei] = dP; + } ); + + // recompute component fractions + solver.updateFluidState( subRegion ); + + // check values in each cell + forAll< serialPolicy >( subRegion.size(), [=, &phaseMobOrig] ( localIndex const ei ) + { + SCOPED_TRACE( "Element " + std::to_string( ei ) ); + + checkDerivative( phaseMob[ei].toSliceConst(), + phaseMobOrig[ei].toSliceConst(), + dPhaseMob_dPres[ei].toSliceConst(), + dPres[ei], + relTol, + "phaseMob", + "Pres", + phases ); + } ); + } + + // Step 2: update component density and check derivatives + + for( integer jc = 0; jc < numComp; ++jc ) + { + // reset the solver state to zero out variable updates (resetting the whole domain is overkill...) + solver.resetStateToBeginningOfStep( domain ); + + // perturb a single component density in each cell + forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) + { + real64 const dRho = perturbParameter * ( compDens[ei][jc] + perturbParameter ); + dCompDens[ei][jc] = dRho; + } ); + + // recompute component fractions + solver.updateFluidState( subRegion ); + + // check values in each cell + forAll< serialPolicy >( subRegion.size(), [=, &phaseMobOrig] ( localIndex const ei ) + { + SCOPED_TRACE( "Element " + std::to_string( ei ) ); + + auto dS_dRho = invertLayout( dPhaseMob_dCompDens[ei].toSliceConst(), numPhase, numComp ); + string var = "compDens[" + components[jc] + "]"; + + checkDerivative( phaseMob[ei].toSliceConst(), + phaseMobOrig[ei].toSliceConst(), + dS_dRho[jc].toSliceConst(), + dCompDens[ei][jc], + relTol, + "phaseMob", + var, + phases ); + } ); + } + + // Step 3: update temperature and check derivatives + + if( isThermal ) + { + arrayView1d< real64 > const temp = + subRegion.getExtrinsicData< extrinsicMeshData::flow::temperature >(); + + arrayView1d< real64 > const dTemp = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaTemperature >(); + + arrayView2d< real64, compflow::USD_PHASE > const dPhaseMob_dTemp = + subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseMobility_dTemperature >(); + + // reset the solver state to zero out variable updates (resetting the whole domain is overkill...) + solver.resetStateToBeginningOfStep( domain ); + + // perturb temperature in each cell + forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) + { + real64 const dT = perturbParameter * ( temp[ei] + perturbParameter ); + dTemp[ei] = dT; + } ); + + // recompute component fractions + solver.updateFluidState( subRegion ); + + // check values in each cell + forAll< serialPolicy >( subRegion.size(), [=, &phaseMobOrig] ( localIndex const ei ) + { + SCOPED_TRACE( "Element " + std::to_string( ei ) ); + + checkDerivative( phaseMob[ei].toSliceConst(), + phaseMobOrig[ei].toSliceConst(), + dPhaseMob_dTemp[ei].toSliceConst(), + dTemp[ei], + relTol, + "phaseMob", + "Temp", + phases ); + } ); + } + + } ); + } ); +} + +template< typename COMPOSITIONAL_SOLVER, typename LAMBDA > +void fillCellCenteredNumericalJacobian( COMPOSITIONAL_SOLVER & solver, + DomainPartition & domain, + bool const isThermal, + real64 const perturbParameter, + arrayView1d< real64 > residual, + arrayView1d< real64 > residualOrig, + CRSMatrixView< real64, globalIndex > jacobian, + CRSMatrixView< real64, globalIndex > jacobianFD, + LAMBDA assembleFunction ) +{ + integer const numComp = solver.numFluidComponents(); + + DofManager const & dofManager = solver.getDofManager(); + string const elemDofKey = dofManager.getKey( COMPOSITIONAL_SOLVER::viewKeyStruct::elemDofFieldString() ); + + solver.forMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + arrayView1d< integer const > const & elemGhostRank = subRegion.ghostRank(); + arrayView1d< globalIndex const > const & elemDofNumber = + subRegion.getReference< array1d< globalIndex > >( elemDofKey ); + + arrayView1d< real64 const > const pres = + subRegion.getExtrinsicData< extrinsicMeshData::flow::pressure >(); + pres.move( LvArray::MemorySpace::host, false ); + + arrayView1d< real64 > const dPres = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaPressure >(); + + arrayView2d< real64 const, compflow::USD_COMP > const compDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); + compDens.move( LvArray::MemorySpace::host, false ); + + arrayView2d< real64, compflow::USD_COMP > const dCompDens = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); + + for( localIndex ei = 0; ei < subRegion.size(); ++ei ) + { + if( elemGhostRank[ei] >= 0 ) + { + continue; + } + + real64 totalDensity = 0.0; + for( integer ic = 0; ic < numComp; ++ic ) + { + totalDensity += compDens[ei][ic]; + } + + // Step 1: compute numerical derivatives wrt pressure + + { + solver.resetStateToBeginningOfStep( domain ); + + real64 const dP = perturbParameter * ( pres[ei] + perturbParameter ); + dPres.move( LvArray::MemorySpace::host, true ); + dPres[ei] = dP; +#if defined(GEOSX_USE_CUDA) + dPres.move( LvArray::MemorySpace::cuda, false ); +#endif + + + mesh.getElemManager().forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion2 ) + { + solver.updateFluidState( subRegion2 ); + } ); + + residual.zero(); + jacobian.zero(); + assembleFunction( jacobian.toViewConstSizes(), residual.toView() ); + + fillNumericalJacobian( residual.toViewConst(), + residualOrig.toViewConst(), + elemDofNumber[ei], + dP, + jacobianFD.toViewConstSizes() ); + } + + // Step 2: compute numerical derivatives wrt component densities + + for( integer jc = 0; jc < numComp; ++jc ) + { + solver.resetStateToBeginningOfStep( domain ); + + real64 const dRho = perturbParameter * totalDensity; + dCompDens.move( LvArray::MemorySpace::host, true ); + dCompDens[ei][jc] = dRho; +#if defined(GEOSX_USE_CUDA) + dCompDens.move( LvArray::MemorySpace::cuda, false ); +#endif + + + mesh.getElemManager().forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion2 ) + { + solver.updateFluidState( subRegion2 ); + } ); + + residual.zero(); + jacobian.zero(); + assembleFunction( jacobian.toViewConstSizes(), residual.toView() ); + + fillNumericalJacobian( residual.toViewConst(), + residualOrig.toViewConst(), + elemDofNumber[ei] + jc + 1, + dRho, + jacobianFD.toViewConstSizes() ); + } + + // Step 3: compute numerical derivatives wrt temperature + + if( isThermal ) + { + arrayView1d< real64 const > const temp = + subRegion.getExtrinsicData< extrinsicMeshData::flow::temperature >(); + temp.move( LvArray::MemorySpace::host, false ); + + arrayView1d< real64 > const dTemp = + subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaTemperature >(); + + solver.resetStateToBeginningOfStep( domain ); + + real64 const dT = perturbParameter * ( temp[ei] + perturbParameter ); + dTemp.move( LvArray::MemorySpace::host, true ); + dTemp[ei] = dT; +#if defined(GEOSX_USE_CUDA) + dTemp.move( LvArray::MemorySpace::cuda, false ); +#endif + + // here, we make sure that rock internal energy is updated + // in other words, a call to updateFluidState would not work + solver.updateState( domain ); + + residual.zero(); + jacobian.zero(); + assembleFunction( jacobian.toViewConstSizes(), residual.toView() ); + + fillNumericalJacobian( residual.toViewConst(), + residualOrig.toViewConst(), + elemDofNumber[ei] + numComp + 1, + dT, + jacobianFD.toViewConstSizes() ); + + } + + } + } ); + } ); +} + + } // namespace testing } // namespace geosx diff --git a/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlow.cpp b/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlow.cpp index 8fa6270022f..13b9d1304b1 100644 --- a/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlow.cpp +++ b/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlow.cpp @@ -152,326 +152,6 @@ char const * xmlInput = // Sphinx end before input XML -void testCompositionNumericalDerivatives( CompositionalMultiphaseFVM & solver, - DomainPartition & domain, - real64 const perturbParameter, - real64 const relTol ) -{ - localIndex const NC = solver.numFluidComponents(); - - - solver.forMeshTargets( domain.getMeshBodies(), - [&]( string const, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - { - ElementRegionManager & elementRegionManager = mesh.getElemManager(); - elementRegionManager.forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - SCOPED_TRACE( subRegion.getParent().getParent().getName() + "/" + subRegion.getName() ); - - string const & fluidName = subRegion.getReference< string >( CompositionalMultiphaseFVM::viewKeyStruct::fluidNamesString() ); - MultiFluidBase const & fluid = subRegion.getConstitutiveModel< MultiFluidBase >( fluidName ); - arrayView1d< string const > const & components = fluid.componentNames(); - - arrayView2d< real64, compflow::USD_COMP > & compDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); - - arrayView2d< real64, compflow::USD_COMP > & dCompDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); - - arrayView2d< real64, compflow::USD_COMP > & compFrac = - subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompFraction >(); - - arrayView3d< real64, compflow::USD_COMP_DC > & dCompFrac_dCompDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::dGlobalCompFraction_dGlobalCompDensity >(); - - // reset the solver state to zero out variable updates - solver.resetStateToBeginningOfStep( domain ); - - // make a copy of unperturbed values of component fractions - array2d< real64, compflow::LAYOUT_COMP > compFracOrig( subRegion.size(), NC ); - compFracOrig.setValues< serialPolicy >( compFrac ); - - // update component density and check derivatives - for( localIndex jc = 0; jc < NC; ++jc ) - { - // reset the solver state to zero out variable updates (resetting the whole domain is overkill...) - solver.resetStateToBeginningOfStep( domain ); - - // perturb a single component density in each cell - forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) - { - real64 const dRho = perturbParameter * ( compDens[ei][jc] + perturbParameter ); - dCompDens[ei][jc] = dRho; - } ); - - // recompute component fractions - solver.updateComponentFraction( subRegion ); - - // check values in each cell - forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) - { - SCOPED_TRACE( "Element " + std::to_string( ei ) ); - - auto dZ_dRho = invertLayout( dCompFrac_dCompDens[ei].toSliceConst(), NC, NC ); - string var = "compDens[" + components[jc] + "]"; - - checkDerivative( compFrac[ei].toSliceConst(), - compFracOrig[ei].toSliceConst(), - dZ_dRho[jc].toSliceConst(), - dCompDens[ei][jc], - relTol, - "compFrac", - var, - components ); - } ); - } - } ); - } ); -} - - -void testPhaseVolumeFractionNumericalDerivatives( CompositionalMultiphaseFVM & solver, - DomainPartition & domain, - real64 const perturbParameter, - real64 const relTol ) -{ - localIndex const NC = solver.numFluidComponents(); - localIndex const NP = solver.numFluidPhases(); - - solver.forMeshTargets( domain.getMeshBodies(), - [&]( string const, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - { - ElementRegionManager & elementRegionManager = mesh.getElemManager(); - elementRegionManager.forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - SCOPED_TRACE( subRegion.getParent().getParent().getName() + "/" + subRegion.getName() ); - - string const & fluidName = subRegion.getReference< string >( CompositionalMultiphaseFVM::viewKeyStruct::fluidNamesString() ); - MultiFluidBase const & fluid = subRegion.getConstitutiveModel< MultiFluidBase >( fluidName ); - arrayView1d< string const > const & components = fluid.componentNames(); - arrayView1d< string const > const & phases = fluid.phaseNames(); - - arrayView1d< real64 > & pres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::pressure >(); - - arrayView1d< real64 > & dPres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaPressure >(); - - arrayView2d< real64, compflow::USD_COMP > & compDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); - - arrayView2d< real64, compflow::USD_COMP > & dCompDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); - - arrayView2d< real64, compflow::USD_PHASE > & phaseVolFrac = - subRegion.getExtrinsicData< extrinsicMeshData::flow::phaseVolumeFraction >(); - - arrayView2d< real64, compflow::USD_PHASE > & dPhaseVolFrac_dPres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseVolumeFraction_dPressure >(); - - arrayView3d< real64, compflow::USD_PHASE_DC > & dPhaseVolFrac_dCompDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseVolumeFraction_dGlobalCompDensity >(); - - // reset the solver state to zero out variable updates - solver.resetStateToBeginningOfStep( domain ); - - // make a copy of unperturbed values of component fractions - array2d< real64, compflow::LAYOUT_PHASE > phaseVolFracOrig( subRegion.size(), NP ); - phaseVolFracOrig.setValues< serialPolicy >( phaseVolFrac ); - - // update pressure and check derivatives - { - // perturb pressure in each cell - forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) - { - real64 const dP = perturbParameter * ( pres[ei] + perturbParameter ); - dPres[ei] = dP; - } ); - - // recompute component fractions - solver.updateFluidState( subRegion ); - - // check values in each cell - forAll< serialPolicy >( subRegion.size(), [=, &phaseVolFracOrig] ( localIndex const ei ) - { - SCOPED_TRACE( "Element " + std::to_string( ei ) ); - - checkDerivative( phaseVolFrac[ei].toSliceConst(), - phaseVolFracOrig[ei].toSliceConst(), - dPhaseVolFrac_dPres[ei].toSliceConst(), - dPres[ei], - relTol, - "phaseVolFrac", - "Pres", - phases ); - } ); - } - - // update component density and check derivatives - for( localIndex jc = 0; jc < NC; ++jc ) - { - // reset the solver state to zero out variable updates (resetting the whole domain is overkill...) - solver.resetStateToBeginningOfStep( domain ); - - // perturb a single component density in each cell - forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) - { - real64 const dRho = perturbParameter * ( compDens[ei][jc] + perturbParameter ); - dCompDens[ei][jc] = dRho; - } ); - - // recompute component fractions - solver.updateFluidState( subRegion ); - - // check values in each cell - forAll< serialPolicy >( subRegion.size(), [=, &phaseVolFracOrig] ( localIndex const ei ) - { - SCOPED_TRACE( "Element " + std::to_string( ei ) ); - - auto dS_dRho = invertLayout( dPhaseVolFrac_dCompDens[ei].toSliceConst(), NP, NC ); - string var = "compDens[" + components[jc] + "]"; - - checkDerivative( phaseVolFrac[ei].toSliceConst(), - phaseVolFracOrig[ei].toSliceConst(), - dS_dRho[jc].toSliceConst(), - dCompDens[ei][jc], - relTol, - "phaseVolFrac", - var, - phases ); - } ); - } - } ); - } ); -} - -void testPhaseMobilityNumericalDerivatives( CompositionalMultiphaseFVM & solver, - DomainPartition & domain, - real64 const perturbParameter, - real64 const relTol ) -{ - localIndex const NC = solver.numFluidComponents(); - localIndex const NP = solver.numFluidPhases(); - - solver.forMeshTargets( domain.getMeshBodies(), - [&]( string const, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - { - ElementRegionManager & elementRegionManager = mesh.getElemManager(); - elementRegionManager.forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - SCOPED_TRACE( subRegion.getParent().getParent().getName() + "/" + subRegion.getName() ); - - string const & fluidName = subRegion.getReference< string >( CompositionalMultiphaseFVM::viewKeyStruct::fluidNamesString() ); - MultiFluidBase const & fluid = subRegion.getConstitutiveModel< MultiFluidBase >( fluidName ); - arrayView1d< string const > const & components = fluid.componentNames(); - arrayView1d< string const > const & phases = fluid.phaseNames(); - - arrayView1d< real64 > & pres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::pressure >(); - - arrayView1d< real64 > & dPres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaPressure >(); - - arrayView2d< real64, compflow::USD_COMP > & compDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); - - arrayView2d< real64, compflow::USD_COMP > & dCompDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); - - arrayView2d< real64, compflow::USD_PHASE > & phaseMob = - subRegion.getExtrinsicData< extrinsicMeshData::flow::phaseMobility >(); - - arrayView2d< real64, compflow::USD_PHASE > & dPhaseMob_dPres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseMobility_dPressure >(); - - arrayView3d< real64, compflow::USD_PHASE_DC > & dPhaseMob_dCompDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::dPhaseMobility_dGlobalCompDensity >(); - - // reset the solver state to zero out variable updates - solver.resetStateToBeginningOfStep( domain ); - - // make a copy of unperturbed values of component fractions - array2d< real64, compflow::LAYOUT_PHASE > phaseVolFracOrig( subRegion.size(), NP ); - phaseVolFracOrig.setValues< serialPolicy >( phaseMob ); - - // update pressure and check derivatives - { - // perturb pressure in each cell - forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) - { - real64 const dP = perturbParameter * ( pres[ei] + perturbParameter ); - dPres[ei] = dP; - } ); - - // recompute component fractions - solver.updateFluidState( subRegion ); - - // check values in each cell - forAll< serialPolicy >( subRegion.size(), [=, &phaseVolFracOrig] ( localIndex const ei ) - { - SCOPED_TRACE( "Element " + std::to_string( ei ) ); - - checkDerivative( phaseMob[ei].toSliceConst(), - phaseVolFracOrig[ei].toSliceConst(), - dPhaseMob_dPres[ei].toSliceConst(), - dPres[ei], - relTol, - "phaseVolFrac", - "Pres", - phases ); - } ); - } - - // update component density and check derivatives - for( localIndex jc = 0; jc < NC; ++jc ) - { - // reset the solver state to zero out variable updates (resetting the whole domain is overkill...) - solver.resetStateToBeginningOfStep( domain ); - - // perturb a single component density in each cell - forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const ei ) - { - real64 const dRho = perturbParameter * ( compDens[ei][jc] + perturbParameter ); - dCompDens[ei][jc] = dRho; - } ); - - // recompute component fractions - solver.updateFluidState( subRegion ); - - // check values in each cell - forAll< serialPolicy >( subRegion.size(), [=, &phaseVolFracOrig] ( localIndex const ei ) - { - SCOPED_TRACE( "Element " + std::to_string( ei ) ); - - auto dS_dRho = invertLayout( dPhaseMob_dCompDens[ei].toSliceConst(), NP, NC ); - string var = "compDens[" + components[jc] + "]"; - - checkDerivative( phaseMob[ei].toSliceConst(), - phaseVolFracOrig[ei].toSliceConst(), - dS_dRho[jc].toSliceConst(), - dCompDens[ei][jc], - relTol, - "phaseMob", - var, - phases ); - } ); - } - } ); - } ); -} - template< typename LAMBDA > void testNumericalJacobian( CompositionalMultiphaseFVM & solver, DomainPartition & domain, @@ -479,11 +159,8 @@ void testNumericalJacobian( CompositionalMultiphaseFVM & solver, real64 const relTol, LAMBDA assembleFunction ) { - localIndex const NC = solver.numFluidComponents(); - CRSMatrix< real64, globalIndex > const & jacobian = solver.getLocalMatrix(); array1d< real64 > residual( jacobian.numRows() ); - DofManager const & dofManager = solver.getDofManager(); // assemble the analytical residual solver.resetStateToBeginningOfStep( domain ); @@ -502,121 +179,16 @@ void testNumericalJacobian( CompositionalMultiphaseFVM & solver, CRSMatrix< real64, globalIndex > jacobianFD( jacobian ); jacobianFD.zero(); - string const dofKey = dofManager.getKey( CompositionalMultiphaseFVM::viewKeyStruct::elemDofFieldString() ); - - solver.forMeshTargets( domain.getMeshBodies(), - [&]( string const, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - { - ElementRegionManager & elementRegionManager = mesh.getElemManager(); - elementRegionManager.forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - arrayView1d< integer const > const & elemGhostRank = subRegion.ghostRank(); - - arrayView1d< globalIndex const > const & dofNumber = - subRegion.getReference< array1d< globalIndex > >( dofKey ); - - arrayView1d< real64 const > const & pres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::pressure >(); - pres.move( LvArray::MemorySpace::host, false ); - - arrayView1d< real64 > const & dPres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaPressure >(); - - arrayView2d< real64 const, compflow::USD_COMP > const & compDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); - compDens.move( LvArray::MemorySpace::host, false ); - - arrayView2d< real64, compflow::USD_COMP > const & dCompDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); - - for( localIndex ei = 0; ei < subRegion.size(); ++ei ) - { - if( elemGhostRank[ei] >= 0 ) - { - continue; - } - - real64 totalDensity = 0.0; - for( localIndex ic = 0; ic < NC; ++ic ) - { - totalDensity += compDens[ei][ic]; - } - - { - solver.resetStateToBeginningOfStep( domain ); - - real64 const dP = perturbParameter * ( pres[ei] + perturbParameter ); - dPres.move( LvArray::MemorySpace::host, true ); - dPres[ei] = dP; -#if defined(GEOSX_USE_CUDA) - dPres.move( LvArray::MemorySpace::cuda, false ); -#endif - - - solver.forMeshTargets( domain.getMeshBodies(), - [&]( string const, - MeshLevel & mesh2, - arrayView1d< string const > const & regionNames2 ) - { - ElementRegionManager & elementRegionManager2 = mesh2.getElemManager(); - elementRegionManager2.forElementSubRegions( regionNames2, - [&]( localIndex const, - ElementSubRegionBase & subRegion2 ) - { - solver.updateFluidState( subRegion2 ); - } ); - } ); - - residual.zero(); - jacobian.zero(); - assembleFunction( jacobian.toViewConstSizes(), residual.toView() ); - - fillNumericalJacobian( residual.toViewConst(), - residualOrig.toViewConst(), - dofNumber[ei], - dP, - jacobianFD.toViewConstSizes() ); - } - - for( localIndex jc = 0; jc < NC; ++jc ) - { - solver.resetStateToBeginningOfStep( domain ); - - real64 const dRho = perturbParameter * totalDensity; - dCompDens.move( LvArray::MemorySpace::host, true ); - dCompDens[ei][jc] = dRho; - - solver.forMeshTargets( domain.getMeshBodies(), - [&]( string const, - MeshLevel & mesh2, - arrayView1d< string const > const & regionNames2 ) - { - ElementRegionManager & elementRegionManager2 = mesh2.getElemManager(); - elementRegionManager2.forElementSubRegions( regionNames2, - [&]( localIndex const, - ElementSubRegionBase & subRegion2 ) - { - solver.updateFluidState( subRegion2 ); - } ); - } ); - - residual.zero(); - jacobian.zero(); - assembleFunction( jacobian.toViewConstSizes(), residual.toView() ); - - fillNumericalJacobian( residual.toViewConst(), - residualOrig.toViewConst(), - dofNumber[ei] + jc + 1, - dRho, - jacobianFD.toViewConstSizes() ); - } - } - } ); - } ); + // fill jacobian FD + fillCellCenteredNumericalJacobian( solver, + domain, + false, + perturbParameter, + residual.toView(), + residualOrig.toView(), + jacobian.toView(), + jacobianFD.toView(), + assembleFunction ); // assemble the analytical jacobian solver.resetStateToBeginningOfStep( domain ); @@ -682,7 +254,7 @@ TEST_F( CompositionalMultiphaseFlowTest, derivativeNumericalCheck_phaseVolumeFra real64 const tol = 5e-2; // 5% error margin DomainPartition & domain = state.getProblemManager().getDomainPartition(); - testPhaseVolumeFractionNumericalDerivatives( *solver, domain, perturb, tol ); + testPhaseVolumeFractionNumericalDerivatives( *solver, domain, false, perturb, tol ); } TEST_F( CompositionalMultiphaseFlowTest, derivativeNumericalCheck_phaseMobility ) @@ -692,7 +264,7 @@ TEST_F( CompositionalMultiphaseFlowTest, derivativeNumericalCheck_phaseMobility DomainPartition & domain = state.getProblemManager().getDomainPartition(); - testPhaseMobilityNumericalDerivatives( *solver, domain, perturb, tol ); + testPhaseMobilityNumericalDerivatives( *solver, domain, false, perturb, tol ); } TEST_F( CompositionalMultiphaseFlowTest, jacobianNumericalCheck_flux ) @@ -736,7 +308,6 @@ int main( int argc, char * * argv ) { ::testing::InitGoogleTest( &argc, argv ); g_commandLineOptions = *geosx::basicSetup( argc, argv ); -// chai::ArrayManager::getInstance()->disableCallbacks(); int const result = RUN_ALL_TESTS(); geosx::basicCleanup(); return result; diff --git a/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlowHybrid.cpp b/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlowHybrid.cpp index 1c6c9cae452..90f0521e8f6 100644 --- a/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlowHybrid.cpp +++ b/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlowHybrid.cpp @@ -161,8 +161,6 @@ void testNumericalJacobian( CompositionalMultiphaseHybridFVM & solver, real64 const relTol, LAMBDA assembleFunction ) { - localIndex const NC = solver.numFluidComponents(); - CRSMatrix< real64, globalIndex > const & jacobian = solver.getLocalMatrix(); array1d< real64 > residual( jacobian.numRows() ); DofManager const & dofManager = solver.getDofManager(); @@ -184,99 +182,21 @@ void testNumericalJacobian( CompositionalMultiphaseHybridFVM & solver, CRSMatrix< real64, globalIndex > jacobianFD( jacobian ); jacobianFD.zero(); - string const elemDofKey = dofManager.getKey( CompositionalMultiphaseHybridFVM::viewKeyStruct::elemDofFieldString() ); + // fill jacobian FD for cell centered variables + fillCellCenteredNumericalJacobian( solver, + domain, + false, + perturbParameter, + residual.toView(), + residualOrig.toView(), + jacobian.toView(), + jacobianFD.toView(), + assembleFunction ); solver.forMeshTargets( domain.getMeshBodies(), [&] ( string const &, MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) + arrayView1d< string const > const & ) { - mesh.getElemManager().forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - arrayView1d< integer const > const & elemGhostRank = subRegion.ghostRank(); - arrayView1d< globalIndex const > const & elemDofNumber = - subRegion.getReference< array1d< globalIndex > >( elemDofKey ); - - arrayView1d< real64 const > const & pres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::pressure >(); - pres.move( LvArray::MemorySpace::host, false ); - - arrayView1d< real64 > const & dPres = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaPressure >(); - - arrayView2d< real64 const, compflow::USD_COMP > const & compDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::globalCompDensity >(); - compDens.move( LvArray::MemorySpace::host, false ); - - arrayView2d< real64, compflow::USD_COMP > const & dCompDens = - subRegion.getExtrinsicData< extrinsicMeshData::flow::deltaGlobalCompDensity >(); - - for( localIndex ei = 0; ei < subRegion.size(); ++ei ) - { - if( elemGhostRank[ei] >= 0 ) - { - continue; - } - - real64 totalDensity = 0.0; - for( localIndex ic = 0; ic < NC; ++ic ) - { - totalDensity += compDens[ei][ic]; - } - - { - solver.resetStateToBeginningOfStep( domain ); - - real64 const dP = perturbParameter * ( pres[ei] + perturbParameter ); - dPres.move( LvArray::MemorySpace::host, true ); - dPres[ei] = dP; - - mesh.getElemManager().forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion2 ) - { - solver.updateFluidState( subRegion2 ); - } ); - - residual.zero(); - jacobian.zero(); - assembleFunction( jacobian.toViewConstSizes(), residual.toView() ); - - fillNumericalJacobian( residual.toViewConst(), - residualOrig.toViewConst(), - elemDofNumber[ei], - dP, - jacobianFD.toViewConstSizes() ); - } - - for( localIndex jc = 0; jc < NC; ++jc ) - { - solver.resetStateToBeginningOfStep( domain ); - - real64 const dRho = perturbParameter * totalDensity; - dCompDens.move( LvArray::MemorySpace::host, true ); - dCompDens[ei][jc] = dRho; - - mesh.getElemManager().forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion2 ) - { - solver.updateFluidState( subRegion2 ); - } ); - - residual.zero(); - jacobian.zero(); - assembleFunction( jacobian.toViewConstSizes(), residual.toView() ); - - fillNumericalJacobian( residual.toViewConst(), - residualOrig.toViewConst(), - elemDofNumber[ei] + jc + 1, - dRho, - jacobianFD.toViewConstSizes() ); - } - } - } ); FaceManager & faceManager = mesh.getFaceManager();