Flow123d  release_2.2.0-23-g01927c6
Classes | Public Member Functions | Static Public Member Functions | Private Types | 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 (DarcyMH *flow, Input::Record in_rec)
 
 ~DarcyFlowMHOutput ()
 
void output ()
 Calculate values for output. More...
 

Static Public Member Functions

static const Input::Type::Instanceget_input_type ()
 
static const Input::Type::Recordget_input_type_specific ()
 

Private Types

typedef const vector< unsigned int > & ElementSetRef
 

Private Member Functions

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

Private Attributes

DarcyMHdarcy_flow
 
Meshmesh_
 
bool compute_errors_
 Specific experimental error computing. More...
 
vector< double > corner_pressure
 
VectorSeqDouble ele_pressure
 
VectorSeqDouble ele_piezo_head
 
VectorSeqDouble ele_flux
 
std::vector< unsigned int > all_element_idx_
 
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
 
std::shared_ptr< OutputTimeoutput_stream
 
ofstream 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 57 of file darcy_flow_mh_output.hh.

Member Typedef Documentation

typedef const vector<unsigned int>& DarcyFlowMHOutput::ElementSetRef
private

Definition at line 93 of file darcy_flow_mh_output.hh.

Constructor & Destructor Documentation

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

Definition at line 92 of file darcy_flow_mh_output.cc.

DarcyFlowMHOutput::~DarcyFlowMHOutput ( )

Definition at line 161 of file darcy_flow_mh_output.cc.

Member Function Documentation

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 652 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

const it::Instance & DarcyFlowMHOutput::get_input_type ( )
static

Definition at line 52 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

const it::Record & DarcyFlowMHOutput::get_input_type_specific ( )
static

Definition at line 60 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 270 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::make_element_scalar ( ElementSetRef  element_indices)
private

Definition at line 230 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::make_element_vector ( ElementSetRef  element_indices)
private

Computes fluxes at the barycenters of elements. TODO: We use FEValues to get fluxes at the barycenters of elements, but we still use MHDofHandler. Once we are able to make output routines parallel, we can use simply FieldFE for velocity here.

Definition at line 252 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

void DarcyFlowMHOutput::make_node_scalar_param ( ElementSetRef  element_indices)
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 301 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

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

Calculate values for output.

Definition at line 178 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 421 of file darcy_flow_mh_output.cc.

Here is the caller graph for this function:

Member Data Documentation

std::vector<unsigned int> DarcyFlowMHOutput::all_element_idx_
private

Definition at line 153 of file darcy_flow_mh_output.hh.

bool DarcyFlowMHOutput::compute_errors_
private

Specific experimental error computing.

Definition at line 137 of file darcy_flow_mh_output.hh.

vector<double> DarcyFlowMHOutput::corner_pressure
private

Pressure head (in [m]) interpolated into nodes. Provides P1 approximation. Indexed by element-node numbering.

Definition at line 141 of file darcy_flow_mh_output.hh.

DarcyMH* DarcyFlowMHOutput::darcy_flow
private

Definition at line 133 of file darcy_flow_mh_output.hh.

DOFHandlerMultiDim* DarcyFlowMHOutput::dh
private

Definition at line 159 of file darcy_flow_mh_output.hh.

VectorSeqDouble DarcyFlowMHOutput::ele_flux
private

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

Definition at line 150 of file darcy_flow_mh_output.hh.

VectorSeqDouble 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 145 of file darcy_flow_mh_output.hh.

VectorSeqDouble 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 143 of file darcy_flow_mh_output.hh.

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

Definition at line 163 of file darcy_flow_mh_output.hh.

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

Definition at line 164 of file darcy_flow_mh_output.hh.

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

Definition at line 165 of file darcy_flow_mh_output.hh.

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

Definition at line 156 of file darcy_flow_mh_output.hh.

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

Definition at line 156 of file darcy_flow_mh_output.hh.

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

Definition at line 156 of file darcy_flow_mh_output.hh.

MappingP1<1,3> DarcyFlowMHOutput::map1
private

Definition at line 160 of file darcy_flow_mh_output.hh.

MappingP1<2,3> DarcyFlowMHOutput::map2
private

Definition at line 161 of file darcy_flow_mh_output.hh.

MappingP1<3,3> DarcyFlowMHOutput::map3
private

Definition at line 162 of file darcy_flow_mh_output.hh.

Mesh* DarcyFlowMHOutput::mesh_
private

Definition at line 134 of file darcy_flow_mh_output.hh.

OutputFields DarcyFlowMHOutput::output_fields
private

Definition at line 167 of file darcy_flow_mh_output.hh.

std::shared_ptr<OutputTime> DarcyFlowMHOutput::output_stream
private

Definition at line 169 of file darcy_flow_mh_output.hh.

ofstream DarcyFlowMHOutput::raw_output_file
private

Raw data output file.

Definition at line 172 of file darcy_flow_mh_output.hh.

Vec DarcyFlowMHOutput::vec_corner_pressure
private

Definition at line 158 of file darcy_flow_mh_output.hh.


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