Flow123d
Classes | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
DarcyFlowMHOutput Class Reference

#include <darcy_flow_mh_output.hh>

Collaboration diagram for DarcyFlowMHOutput:
Collaboration graph
[legend]

Classes

class  OutputFields
 

Public Member Functions

 DarcyFlowMHOutput (DarcyFlowMH_Steady *flow, Input::Record in_rec)
 
 ~DarcyFlowMHOutput ()
 
void output ()
 Calculate values for output. More...
 

Static Public Attributes

static Input::Type::Record input_type
 

Private Member Functions

void make_side_flux ()
 
void make_element_scalar ()
 
void make_element_vector ()
 
void make_sides_scalar ()
 
void make_node_scalar_param ()
 Calculate nodes scalar, store it in double* node_scalars instead of node->scalar. More...
 
void make_node_scalar ()
 
void make_corner_scalar (vector< double > &node_scalar)
 
void make_neighbour_flux ()
 
void output_internal_flow_data ()
 
void compute_l2_difference ()
 
void water_balance ()
 
double calc_water_balance ()
 

Private Attributes

DarcyFlowMH_Steadydarcy_flow
 
Meshmesh_
 
Input::Record in_rec_
 Accessor to the input record for the DarcyFlow output. More...
 
vector< double > corner_pressure
 
vector< double > ele_pressure
 
vector< double > ele_piezo_head
 
vector< double > subdomains
 
vector< double > ele_flux
 
std::vector< double > l2_diff_pressure
 
std::vector< double > l2_diff_velocity
 
std::vector< double > l2_diff_divergence
 
Vec vec_corner_pressure
 
DOFHandlerMultiDimdh
 
MappingP1< 1, 3 > map1
 
MappingP1< 2, 3 > map2
 
MappingP1< 3, 3 > map3
 
FE_P_disc< 1, 1, 3 > fe1
 
FE_P_disc< 1, 2, 3 > fe2
 
FE_P_disc< 1, 3, 3 > fe3
 
OutputFields output_fields
 
OutputTimeoutput_stream
 
FILE * balance_output_file
 Temporary solution for writing balance into separate file. More...
 
FILE * raw_output_file
 Raw data output file. More...
 

Detailed Description

Actually this class only collect former code from postprocess.* This code depends on values stored in mesh and has to be changed to use fields or other data provided by interface to darcy_flow. We have to relay on the interface in order to allow different implementation of darcy_flow.

Principal functionalities of current postprocess are:

Further functionality of this class should be:

Definition at line 67 of file darcy_flow_mh_output.hh.

Constructor & Destructor Documentation

DarcyFlowMHOutput::DarcyFlowMHOutput ( DarcyFlowMH_Steady flow,
Input::Record  in_rec 
)

Definition at line 95 of file darcy_flow_mh_output.cc.

DarcyFlowMHOutput::~DarcyFlowMHOutput ( )

Definition at line 170 of file darcy_flow_mh_output.cc.

Member Function Documentation

double DarcyFlowMHOutput::calc_water_balance ( )
private
void DarcyFlowMHOutput::compute_l2_difference ( )
private

Temporary hack. Calculate approximation of L2 norm for: 1) difference between regularized pressure and analytical solution (using FunctionPython) 2) difference between RT velocities and analytical solution 3) difference of divergence

TODO: 1) implement field objects 2) implement DG_P2 finite elements 3) implement pressure postprocessing (result is DG_P2 field) 4) implement calculation of L2 norm for two field (compute the norm and values on individual elements as P0 field)

Definition at line 859 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::make_corner_scalar ( vector< double > &  node_scalar)
private

Definition at line 288 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::make_element_scalar ( )
private

Definition at line 239 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::make_element_vector ( )
private

Definition at line 259 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::make_neighbour_flux ( )
private
void DarcyFlowMHOutput::make_node_scalar ( )
private
void DarcyFlowMHOutput::make_node_scalar_param ( )
private

Calculate nodes scalar, store it in double* node_scalars instead of node->scalar.

< tmp variable for storing particular distance node –> element, node –> side*/

Iterators

< number of nodes in the mesh */

< index of each node */

< sum elements joined to node */

< sum sides joined to node */

< sum distances to all joined elements */

< Sum distances to all joined sides */

tmp variables, will be replaced by ini keys TODO include them into ini file

< scalar is counted via elements*/

< scalar is counted via sides */

init arrays

first pass - calculate sums (weights)

< get Node pointer from element */

< get nod index from mesh */

< get Node pointer from element */

< get nod index from mesh */

second pass - calculate scalar

< get Node pointer from element */

< get nod index from mesh */

TODO - calculate it again or store it in prior pass

< get Node pointer from element */

< get nod index from mesh */

TODO - calculate it again or store it in prior pass

free memory

Definition at line 318 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::make_side_flux ( )
private
void DarcyFlowMHOutput::make_sides_scalar ( )
private
void DarcyFlowMHOutput::output ( )

Calculate values for output.

Definition at line 195 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::output_internal_flow_data ( )
private

Definition at line 688 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::water_balance ( )
private

Calculate and output water balance over material subdomains and boudary fluxes. Works only for steady flow.

TODO:

  • fix it also for unsteady flow
  • create separate class for this caculations and output
  • create class for output of tables with support to output into various file formats like GNUplot of excel/open calc

Definition at line 567 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

Member Data Documentation

FILE* DarcyFlowMHOutput::balance_output_file
private

Temporary solution for writing balance into separate file.

Definition at line 200 of file darcy_flow_mh_output.hh.

vector<double> DarcyFlowMHOutput::corner_pressure
private

This we need to allow piezo output and nead not to modify all test outputs. It should be replaced by more general scheme, where you can switch every output field on or off.Pressure head (in [m]) interpolated into nodes. Provides P1 approximation. Indexed by node indexes in mesh. Pressure head (in [m]) interpolated into nodes. Provides P1 approximation. Indexed by element-node numbering.

Definition at line 169 of file darcy_flow_mh_output.hh.

DarcyFlowMH_Steady* DarcyFlowMHOutput::darcy_flow
private

Definition at line 152 of file darcy_flow_mh_output.hh.

DOFHandlerMultiDim* DarcyFlowMHOutput::dh
private

Definition at line 187 of file darcy_flow_mh_output.hh.

vector<double> DarcyFlowMHOutput::ele_flux
private

Average flux in barycenter of every element. Indexed as elements in the mesh.

Definition at line 181 of file darcy_flow_mh_output.hh.

vector<double> DarcyFlowMHOutput::ele_piezo_head
private

Piezo-metric head (in [m]) in barycenter of elements (or equivalently mean pressure over every element). Indexed by element indexes in the mesh.

Definition at line 173 of file darcy_flow_mh_output.hh.

vector<double> DarcyFlowMHOutput::ele_pressure
private

Pressure head (in [m]) in barycenters of elements (or equivalently mean pressure over every element). Indexed by element indexes in the mesh.

Definition at line 171 of file darcy_flow_mh_output.hh.

FE_P_disc<1,1,3> DarcyFlowMHOutput::fe1
private

Definition at line 191 of file darcy_flow_mh_output.hh.

FE_P_disc<1,2,3> DarcyFlowMHOutput::fe2
private

Definition at line 192 of file darcy_flow_mh_output.hh.

FE_P_disc<1,3,3> DarcyFlowMHOutput::fe3
private

Definition at line 193 of file darcy_flow_mh_output.hh.

Input::Record DarcyFlowMHOutput::in_rec_
private

Accessor to the input record for the DarcyFlow output.

Definition at line 158 of file darcy_flow_mh_output.hh.

it::Record DarcyFlowMHOutput::input_type
static
Initial value:
= it::Record("DarcyMHOutput", "Parameters of MH output.")
"Parameters of output stream.")
it::Default::obligatory(), "List of fields to write to output file.")
.declare_key("balance_output", it::FileName::output(), it::Default("water_balance.txt"),
"Output file for water balance table.")
.declare_key("compute_errors", it::Bool(), it::Default("false"),
"SPECIAL PURPOSE. Computing errors pro non-compatible coupling.")
"Output file with raw data form MH module.")

Definition at line 96 of file darcy_flow_mh_output.hh.

std::vector<double> DarcyFlowMHOutput::l2_diff_divergence
private

Definition at line 184 of file darcy_flow_mh_output.hh.

std::vector<double> DarcyFlowMHOutput::l2_diff_pressure
private

Definition at line 184 of file darcy_flow_mh_output.hh.

std::vector<double> DarcyFlowMHOutput::l2_diff_velocity
private

Definition at line 184 of file darcy_flow_mh_output.hh.

MappingP1<1,3> DarcyFlowMHOutput::map1
private

Definition at line 188 of file darcy_flow_mh_output.hh.

MappingP1<2,3> DarcyFlowMHOutput::map2
private

Definition at line 189 of file darcy_flow_mh_output.hh.

MappingP1<3,3> DarcyFlowMHOutput::map3
private

Definition at line 190 of file darcy_flow_mh_output.hh.

Mesh* DarcyFlowMHOutput::mesh_
private

Definition at line 153 of file darcy_flow_mh_output.hh.

OutputFields DarcyFlowMHOutput::output_fields
private

Definition at line 195 of file darcy_flow_mh_output.hh.

OutputTime* DarcyFlowMHOutput::output_stream
private

Definition at line 197 of file darcy_flow_mh_output.hh.

FILE* DarcyFlowMHOutput::raw_output_file
private

Raw data output file.

Definition at line 202 of file darcy_flow_mh_output.hh.

vector<double> DarcyFlowMHOutput::subdomains
private

have to copy vector<int> provided by Mesh, in order to use FieldElementwise TEMPORARY SOLUTION

Definition at line 176 of file darcy_flow_mh_output.hh.

Vec DarcyFlowMHOutput::vec_corner_pressure
private

Definition at line 186 of file darcy_flow_mh_output.hh.


The documentation for this class was generated from the following files: