Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F66963855
dumper_paraview.hh
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Jun 19, 03:24
Size
7 KB
Mime Type
text/x-c++
Expires
Fri, Jun 21, 03:24 (2 d)
Engine
blob
Format
Raw Data
Handle
18318456
Attached To
rLIBMULTISCALE LibMultiScale
dumper_paraview.hh
View Options
/**
* @file dumper_paraview.hh
*
* @author Guillaume Anciaux <guillaume.anciaux@epfl.ch>
*
* @date Fri Jul 04 21:55:04 2014
*
* @brief This dumper allows to generate paraview files for vizualization
*
* @section LICENSE
*
* Copyright INRIA and CEA
*
* The LibMultiScale is a C++ parallel framework for the multiscale
* coupling methods dedicated to material simulations. This framework
* provides an API which makes it possible to program coupled simulations
* and integration of already existing codes.
*
* This Project was initiated in a collaboration between INRIA Futurs Bordeaux
* within ScAlApplix team and CEA/DPTA Ile de France.
* The project is now continued at the Ecole Polytechnique Fédérale de Lausanne
* within the LSMS/ENAC laboratory.
*
* This software is governed by the CeCILL-C license under French law and
* abiding by the rules of distribution of free software. You can use,
* modify and/ or redistribute the software under the terms of the CeCILL-C
* license as circulated by CEA, CNRS and INRIA at the following URL
* "http://www.cecill.info".
*
* As a counterpart to the access to the source code and rights to copy,
* modify and redistribute granted by the license, users are provided only
* with a limited warranty and the software's author, the holder of the
* economic rights, and the successive licensors have only limited
* liability.
*
* In this respect, the user's attention is drawn to the risks associated
* with loading, using, modifying and/or developing or reproducing the
* software by the user in light of its specific status of free software,
* that may mean that it is complicated to manipulate, and that also
* therefore means that it is reserved for developers and experienced
* professionals having in-depth computer knowledge. Users are therefore
* encouraged to load and test the software's suitability as regards their
* requirements in conditions enabling the security of their systems and/or
* data to be ensured and, more generally, to use and operate it in the
* same conditions as regards security.
*
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL-C license and that you accept its terms.
*
*/
#ifndef __LIBMULTISCALE_DUMPER_PARAVIEW_HH__
#define __LIBMULTISCALE_DUMPER_PARAVIEW_HH__
/* -------------------------------------------------------------------------- */
#include "dumper_interface.hh"
#include "paraview_helper.hh"
/* -------------------------------------------------------------------------- */
__BEGIN_LIBMULTISCALE__
/** Class DumperParaview
* Implementation of a dumper to paraview vtu files
*/
class
DumperParaview
:
public
DumperInterface
{
public
:
DECLARE_DUMPER
(
DumperParaview
);
DECLARE_INPUT
(
MD
,
CONTINUUM
);
//! most generic dump function
template
<
typename
Cont
>
enable_if_md
<
Cont
>
dump
(
Cont
&
cont
);
template
<
typename
Cont
>
enable_if_mesh
<
Cont
>
dump
(
Cont
&
cont
);
template
<
typename
Cont
>
enable_if_dd
<
Cont
>
dump
(
Cont
&
cont
);
protected
:
template
<
typename
ContField
,
typename
_Input
>
void
dumpField
(
const
std
::
string
&
name_field
,
_Input
&
cont
,
ContField
&
contField
,
const
UInt
Dim
);
template
<
typename
ContField
,
UInt
Dim
,
typename
_Input
>
void
dumpField
(
const
std
::
string
&
name_field
,
_Input
&
cont
,
ContField
&
contField
);
//! initialisation of the dumper (do nothing)
void
init
()
override
;
void
openPVTU
();
void
openVTU
();
private
:
//! flag for displacement serie
bool
dep_field
;
//! flag for initial position serie
bool
p0_field
;
//! flag for velocity serie
bool
vel_field
;
//! flag for force/acceleration serie
bool
force_field
;
//! flag for applied force serie
bool
applied_force_field
;
//! flag for distribution serie
bool
proc_field
;
//! flag for constraUInt serie
bool
stress_field
;
//! flag for deformation serie
bool
strain_field
;
//! flag for potential energy serie
bool
epot_field
;
//! flag for mass serie
bool
mass_field
;
//! flag for charge serie
bool
charge_field
;
//! flag for id serie
bool
id_field
;
//! flag to produce zipped files
bool
flag_compressed
;
//! flag to produce text files
bool
flag_text
;
//! flag to produce base64 files
bool
flag_base64
;
//! flag for weight serie
bool
alpha_field
;
//! flag for electronic density
bool
e_density_field
;
//! flag for barycenter computation
bool
barycenters_field
;
//! flag for temperature serie
bool
temperature_field
;
//! flag for temperature variation serie
bool
temperatureVar_field
;
//! flag for heat capacity serie
bool
heatCapacity_field
;
//! flag for heat capacity serie
bool
heatRate_field
;
//! flag for external heat rate serie
bool
external_heatRate_field
;
//! flag for tag serie
bool
tag_field
;
//! additional field
std
::
vector
<
LMID
>
additional_fields
;
//! pointer to paraview helper facilities
ParaviewHelper
paraHelper
;
//! the file where to write
LMFile
file
;
//! flag for output of nodal blockage
bool
flag_boundary
;
};
/* -------------------------------------------------------------------------- */
template
<
typename
ContField
,
UInt
Dim
,
typename
_Input
>
void
DumperParaview
::
dumpField
(
const
std
::
string
&
name_field
,
_Input
&
cont
,
ContField
&
contField
)
{
if
(
contField
.
size
()
/
Dim
!=
cont
.
size
())
LM_FATAL
(
"compute/filter "
<<
name_field
<<
" contains "
<<
contField
.
size
()
/
Dim
<<
" entries"
<<
" while container has "
<<
cont
.
size
()
<<
" : incompatible match"
);
paraHelper
.
startData
(
name_field
,
Dim
);
UInt
cpt
=
0
;
for
(
auto
&&
value
:
contField
)
{
paraHelper
.
pushReal
(
value
);
++
cpt
;
}
paraHelper
.
endData
();
}
/* -------------------------------------------------------------------------- */
template
<
typename
ContField
,
typename
_Input
>
void
DumperParaview
::
dumpField
(
const
std
::
string
&
name_field
,
_Input
&
cont
,
ContField
&
contField
,
const
UInt
Dim
)
{
if
(
Dim
==
0
)
{
DUMP
(
name_field
<<
" was not yet computed: cannot dump in paraview"
,
DBG_WARNING
);
return
;
}
switch
(
Dim
)
{
case
1
:
dumpField
<
ContField
,
1
>
(
name_field
,
cont
,
contField
);
break
;
case
2
:
dumpField
<
ContField
,
2
>
(
name_field
,
cont
,
contField
);
break
;
case
3
:
dumpField
<
ContField
,
3
>
(
name_field
,
cont
,
contField
);
break
;
case
4
:
dumpField
<
ContField
,
3
>
(
name_field
,
cont
,
contField
);
break
;
case
5
:
dumpField
<
ContField
,
3
>
(
name_field
,
cont
,
contField
);
break
;
case
6
:
dumpField
<
ContField
,
3
>
(
name_field
,
cont
,
contField
);
break
;
case
7
:
dumpField
<
ContField
,
3
>
(
name_field
,
cont
,
contField
);
break
;
case
8
:
dumpField
<
ContField
,
3
>
(
name_field
,
cont
,
contField
);
break
;
case
9
:
dumpField
<
ContField
,
3
>
(
name_field
,
cont
,
contField
);
break
;
case
10
:
dumpField
<
ContField
,
3
>
(
name_field
,
cont
,
contField
);
break
;
default
:
LM_FATAL
(
"internal error "
<<
Dim
<<
" "
<<
name_field
);
}
}
/* -------------------------------------------------------------------------- */
__END_LIBMULTISCALE__
#endif
/* __LIBMULTISCALE_DUMPER_PARAVIEW_HH__ */
Event Timeline
Log In to Comment