Thermal flux class#

class HeatAdvection : public OpenFdemAbstract#

Public Functions

inline HeatAdvection()#
inline ~HeatAdvection()#
void computeHeadtAdvectionFluidTensor(General general, Element element, Nodal nodal, Edge edge, Thermal thermal, Hydro hydro, Solidmat solidmat)#

compute the equvalient advection tenssor for each element

\detail q=\frac{1}{2}\rho wC_wq{i}^{w}

Parameters:
  • element

  • face

  • cohelement

  • thermal

  • hydro

  • solidmat

Vector2 computeFluidHeatAdvectionFluxRateatIntergration(General general, Element element, const Int elementindices, const Int igauss, Intergration intergration, Thermal thermal)#
void computeFluidAdvectionThermalFlow(General general, Nodal nodal, Element element, Intergration intergration, Thermal thermal)#

Compute fracture volume.

\attension The fracture volume is V=\,\,\frac{1}{2}\left( S_{low}+S_{up} \right) o the fracture aperature should be updated before calculate fracture volume

Parameters:
  • face

  • cohelement

  • hydro

void HeatAdvectionRun(Boudary boudary, Nodal nodal, Thermal thermal, Edge edge, Hydro hydro, Element element, Intergration intergration, Solidmat solidmat, General general, Cohelement cohelement)#
class HeatConduction : public OpenFdemAbstract#

Public Functions

inline HeatConduction()#
inline ~HeatConduction()#
virtual void initialize(General general, Boudary boudary, Nodal nodal, Thermal thermal)#

Initialize the fracture flow and fracture volume at hydro knnot.

Parameters:
  • boudary – boudary condition class refference

  • nodal – nodal class refference

  • hydro – hydro class refference

Returns:

na

void computeFractureFluidConducitivityTensor(General general, Nodal nodal, Element element, Edge edge, Thermal thermal, Solidmat solidmat)#

Compute the fracture permability tensor for fracture flow.

\detail The k.ij is assembled from the local permability tensor on each surface of an element according to modified cubic law, the local permability is constructured by the principal values on each local directions in d-s-n plane

Parameters:
  • element

  • face

  • hydro

  • solidmat

Vector2 computeFluidConductionFluxRateatIntergration(General general, Element element, const Int elementindices, const Int igauss, Intergration intergration, Thermal thermal)#
void computeFluidHeatConduction(General general, Nodal nodal, Element element, Intergration intergration, Thermal thermal)#

Compute fracture volume.

\attension The fracture volume is V=\,\,\frac{1}{2}\left( S_{low}+S_{up} \right) o the fracture aperature should be updated before calculate fracture volume

Parameters:
  • face

  • cohelement

  • hydro

void HeatConductionRun(Boudary boudary, Nodal nodal, Thermal thermal, Element element, Intergration intergration, Edge edge, Solidmat solidmat, General general, Cohelement cohelement)#

compute fracture flow rate at intergration point

Parameters:
  • general

  • element

  • nodal

  • elementindices

  • intPoint

  • hydro

  • solidmat

Returns:

q.i: flow rate vector in each direction

class HeatExchange : public OpenFdemAbstract#

Public Functions

inline HeatExchange()#
inline ~HeatExchange()#
void computeFractureSolidFluidThermalExchange(General general, Nodal nodal, Cohelement cohelement, Thermal thermal, Solidmat solidmat)#

Compute the fracture aperature on surface, the aperature should be updated for broken CZM as well, this function only need to run at the mechanical step.

Parameters:
  • nodal

  • face

  • cohelement

  • hydro

  • solidmat

Returns:

na

void assembleCavity(Thermal thermal, General general)#
class MatrixBaseThermal : public OpenFdemAbstract#

Public Functions

inline MatrixBaseThermal()#
inline ~MatrixBaseThermal()#
virtual void initialize(General general, Boudary boudary, Nodal nodal, Thermal thermal)#

Initialize the fracture flow and fracture volume at hydro knnot.

Parameters:
  • boudary – boudary condition class refference

  • nodal – nodal class refference

  • hydro – hydro class refference

Returns:

na

void computeFractureThermalExchange(General general, Nodal nodal, Cohelement cohelement, Thermal thermal, Solidmat solidmat)#

Compute the fracture aperature on surface, the aperature should be updated for broken CZM as well, this function only need to run at the mechanical step.

Parameters:
  • nodal

  • face

  • cohelement

  • hydro

  • solidmat

Returns:

na

Vector2 computeMatrixFluxRateatIntergration(General general, Element element, Nodal nodal, const Int elementindices, const Int igauss, Intergration intergration, Thermal thermal, Solidmat solidmat)#
void computeMatrixThermalFlow(General general, Nodal nodal, Element element, Intergration intergration, Thermal thermal, Solidmat solidmat)#

Compute fracture volume.

\attension The fracture volume is V=\,\,\frac{1}{2}\left( S_{low}+S_{up} \right) o the fracture aperature should be updated before calculate fracture volume

Parameters:
  • face

  • cohelement

  • hydro

void updateMatrixThermal(Nodal nodal, Thermal thermal, General general)#

compute fracture flow rate at intergration point

Parameters:
  • general

  • element

  • nodal

  • elementindices

  • intPoint

  • hydro

  • solidmat

Returns:

q.i: flow rate vector in each direction

void aseembleContactFlux(Thermal thermal, Nodal nodal, General general)#

Add the contact flux in previous mechanical step.

Parameters:
  • thermal

  • nodal

  • general

void matrixThermalRun(Boudary boudary, Nodal nodal, Thermal thermal, Element element, Intergration intergration, Solidmat solidmat, General general, Cohelement cohelement)#
class MatrixThermal : public OpenFdemAbstract#
#include <thermal_matrix.h>

Subclassed by ns_thermal::ThermalModule

Public Static Functions

static void initialize(General general, Nodal nodal, Thermal thermal, Boudary boundary)#
static void computeMatrixThermalTransportation(General general, Nodal nodal, Element element, Thermal thermal, Solidmat solidmat)#
static void computeFractureThermalExchange(General general, Nodal nodal, Element element, Cohelement cohelement, Thermal thermal, Solidmat solidmat)#
static void updateMatrixThermalTemperature(General general, Nodal nodal, Thermal thermal)#
static void matrixThermalRun(General general, Nodal nodal, Element element, Cohelement cohelement, Thermal thermal, Solidmat solidmat, Boudary boundary)#
struct Thermal_structure#
#include <openfdem_thermal.h>

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

UInt _nodeSize = 0#
UInt _elementSize = 0#
Int thermal_steps = 10#
Real thermal_time = 0.0#
Real sub_timestep = 0.0#
std::vector<Int> boud_id#
std::vector<Int> mat_id#
std::vector<Real> Matrix_flux#
std::vector<Real> Contact_flux#
std::vector<Real> Matrix_T#
std::vector<Real> Matrix_C#
std::vector<Real> Fluid_T#
std::vector<Real> Fluid_flux#
std::vector<Real> Matrix_T0#
bool THMcoupling = false#
bool ContactThermal = true#
bool isDoubleWayCouple = true#
UInt cavity_number = 0#
std::vector<caivity_type> cavity#
std::vector<Tensor> kfijconduction#
std::vector<Tensor> kfijadvection#
class ThermalBoudary : public OpenFdemAbstract#

Subclassed by ns_thermal::ThermalModule

Public Static Functions

static void updateThermalBoundary(Thermal thermal, Boudary boundary, Solidmat solidmat, General general, Nodal nodal, Element element, Intergration intergration)#

update boundary condition. This function is not parallised because thermal boundary is not heavy, extra time will costed to step in the parallel.

Parameters:
  • thermal

  • boundary

  • solidmat

  • general

  • nodal

  • element

  • intergration

class ThermalComputeForce : public OpenFdemAbstract#

Subclassed by ns_thermal::ThermalModule

Public Static Functions

static void computeThermalForce(General general, Nodal nodal, Element element, Thermal thermal, Solidmat solidmat)#

compute the thermal force only for triangle element.

Parameters:
  • nodal

  • element

  • thermal

  • solidmat

static void computeThermalForce(General general, Nodal nodal, Element element, Intergration intergration, Thermal thermal, Solidmat solidmat)#

compute the thermal force for arbitary element type. more time will be cost for triangle element.

Parameters:
  • nodal

  • element

  • intergration

  • thermal

  • solidmat

class ThermalModule : public OpenFdemAbstract, public ns_thermal::ThermalComputeForce, public ns_thermal::MatrixThermal, public ns_thermal::ThermalBoudary#

Public Static Functions

static void Thermal_module_run(Openfdem openfdem)#
class THMCouple : public OpenFdemAbstract, public InterfaceUtils#

Public Functions

inline THMCouple()#
inline ~THMCouple()#
void updateFluidViscosity(General general, Nodal nodal, Cohelement cohelement, Thermal thermal, Hydro hydro, Solidmat solidmat)#

Update the water viscosity due to tempearature change.

Parameters:
  • nodal – - nodal class

  • cohelement – - cohelement class

  • thermal – - thermal class

  • hydro – - hydro class

  • solidmat – - solid material class

void updateFluidThermal(Boudary boudary, Nodal nodal, Thermal thermal, Hydro hydro, Solidmat solidmat, General general)#

Compute the nodal temperature in fluid the temperature only be updated for wetted nodes, which are on the broken cohesive elememt surfaces.

Parameters:
  • boudary

  • nodal

  • thermal

  • hydro

  • solidmat

  • general

namespace ns_common
namespace ns_solid
namespace ns_thermal#
file get_thermal_force.h
#include <math.h>
#include “common/memory_manager.h”
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
file new_thermal_heat_advection.h
#include <math.h>
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
file new_thermal_heat_conduction.h
#include <math.h>
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
file new_thermal_heat_exchange.h
#include <math.h>
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
#include “solid/solid_mechanics_cohesive/solid_interface_element_utils.h”
file new_thermal_matrix_flow.h
#include <math.h>
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
#include “solid/solid_mechanics_cohesive/solid_interface_element_utils.h”
file new_thermal_THM_coupling.h
#include <math.h>
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
#include “solid/solid_mechanics_cohesive/solid_interface_element_utils.h”
file openfdem_thermal.h
#include “common/openfdem_common.h”
#include “hydro/openfdem_hydro.h”

Typedefs

typedef struct Thermal_structure *Thermal#
file openfdem_thermal_module.h
#include <math.h>
#include “common/memory_manager.h”
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
file thermal_matrix.h
#include <math.h>
#include “common/memory_manager.h”
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
file update_thermal_boundary.h
#include <math.h>
#include “common/memory_manager.h”
#include “common/openfdem_abstract.h”
#include “common/openfdem_math.h”
#include “solver/openfdem.h”
dir src
dir thermal