OGS
ProcessLib::SurfaceFluxData Struct Referencefinal

Detailed Description

Definition at line 21 of file SurfaceFluxData.h.

#include <SurfaceFluxData.h>

Collaboration diagram for ProcessLib::SurfaceFluxData:
[legend]

Public Member Functions

 SurfaceFluxData (MeshLib::Mesh &surfaceflux_mesh, std::string &&surfaceflux_property_vector_name)
 
void integrate (std::vector< GlobalVector * > const &x, double const t, Process const &p, int const process_id, int const integration_order, MeshLib::Mesh const &bulk_mesh, std::vector< std::size_t > const &active_element_ids)
 

Static Public Member Functions

static std::unique_ptr< ProcessLib::SurfaceFluxDatacreateSurfaceFluxData (BaseLib::ConfigTree const &calculatesurfaceflux_config, std::vector< std::unique_ptr< MeshLib::Mesh >> const &meshes)
 

Private Attributes

MeshLib::Meshsurface_mesh
 
std::string const property_vector_name
 

Constructor & Destructor Documentation

◆ SurfaceFluxData()

ProcessLib::SurfaceFluxData::SurfaceFluxData ( MeshLib::Mesh surfaceflux_mesh,
std::string &&  surfaceflux_property_vector_name 
)
inline

Definition at line 23 of file SurfaceFluxData.h.

25  : surface_mesh(surfaceflux_mesh),
26  property_vector_name(std::move(surfaceflux_property_vector_name))
27  {
28  // set the initial surface flux into the mesh
29  auto* const surfaceflux_pv = MeshLib::getOrCreateMeshProperty<double>(
31  // initialise the PropertyVector pv with zero values
32  std::fill(surfaceflux_pv->begin(), surfaceflux_pv->end(), 0.0);
33  }
std::string const property_vector_name

References MeshLib::Cell, property_vector_name, and surface_mesh.

Member Function Documentation

◆ createSurfaceFluxData()

static std::unique_ptr<ProcessLib::SurfaceFluxData> ProcessLib::SurfaceFluxData::createSurfaceFluxData ( BaseLib::ConfigTree const &  calculatesurfaceflux_config,
std::vector< std::unique_ptr< MeshLib::Mesh >> const &  meshes 
)
inlinestatic
Input File Parameter:
prj__processes__process__calculatesurfaceflux__mesh
Input File Parameter:
prj__processes__process__calculatesurfaceflux__property_name

Definition at line 35 of file SurfaceFluxData.h.

38  {
39  auto mesh_name =
41  calculatesurfaceflux_config.getConfigParameter<std::string>("mesh");
42  auto surfaceflux_pv_name =
44  calculatesurfaceflux_config.getConfigParameter<std::string>(
45  "property_name");
46  if (mesh_name.empty())
47  {
48  return nullptr;
49  }
50 
51  DBUG(
52  "Read surfaceflux meta data:\n\tmesh:'{:s}'\n\tproperty name: "
53  "'{:s}'\n",
54  mesh_name, surfaceflux_pv_name);
55 
57  meshes.begin(), meshes.end(),
58  [&mesh_name](auto const& m) { return mesh_name == m->getName(); },
59  "Expected to find a mesh named " + mesh_name +
60  " for the surfaceflux calculation.");
61 
62  return std::make_unique<SurfaceFluxData>(
63  surface_mesh, std::move(surfaceflux_pv_name));
64  }
void DBUG(char const *fmt, Args const &... args)
Definition: Logging.h:27
std::iterator_traits< InputIt >::reference findElementOrError(InputIt begin, InputIt end, Predicate predicate, std::string const &error="")
Definition: Algorithm.h:69

References DBUG(), BaseLib::findElementOrError(), BaseLib::ConfigTree::getConfigParameter(), and surface_mesh.

Referenced by ProcessLib::ComponentTransport::createComponentTransportProcess(), ProcessLib::HT::createHTProcess(), ProcessLib::LiquidFlow::createLiquidFlowProcess(), and ProcessLib::SteadyStateDiffusion::createSteadyStateDiffusion().

◆ integrate()

void ProcessLib::SurfaceFluxData::integrate ( std::vector< GlobalVector * > const &  x,
double const  t,
Process const &  p,
int const  process_id,
int const  integration_order,
MeshLib::Mesh const &  bulk_mesh,
std::vector< std::size_t > const &  active_element_ids 
)
inline

Definition at line 66 of file SurfaceFluxData.h.

70  {
71  auto* const surfaceflux_pv = MeshLib::getOrCreateMeshProperty<double>(
73  // initialise the PropertyVector pv with zero values
74  std::fill(surfaceflux_pv->begin(), surfaceflux_pv->end(), 0.0);
75  auto surfaceflux_process =
77  p.getProcessVariables(process_id)[0]
78  .get()
79  .getNumberOfGlobalComponents(),
80  integration_order);
81 
82  surfaceflux_process.integrate(
83  x, *surfaceflux_pv, t, bulk_mesh, active_element_ids,
84  [&p](std::size_t const element_id, MathLib::Point3d const& pnt,
85  double const t, std::vector<GlobalVector*> const& x) {
86  return p.getFlux(element_id, pnt, t, x);
87  });
88  }

References MeshLib::Cell, property_vector_name, and surface_mesh.

Member Data Documentation

◆ property_vector_name

std::string const ProcessLib::SurfaceFluxData::property_vector_name
private

Definition at line 92 of file SurfaceFluxData.h.

Referenced by SurfaceFluxData(), and integrate().

◆ surface_mesh

MeshLib::Mesh& ProcessLib::SurfaceFluxData::surface_mesh
private

Definition at line 91 of file SurfaceFluxData.h.

Referenced by SurfaceFluxData(), createSurfaceFluxData(), and integrate().


The documentation for this struct was generated from the following file: