Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Backofen, Rainer
amdis
Commits
340fd949
Commit
340fd949
authored
Mar 27, 2012
by
Thomas Witkowski
Browse files
Fixed ElementFileWriter to work in parallel.
parent
859d3918
Changes
7
Hide whitespace changes
Inline
Side-by-side
AMDiS/src/Debug.cc
View file @
340fd949
...
@@ -106,7 +106,7 @@ namespace AMDiS {
...
@@ -106,7 +106,7 @@ namespace AMDiS {
elInfo
=
stack
.
traverseNext
(
elInfo
);
elInfo
=
stack
.
traverseNext
(
elInfo
);
}
}
ElementFileWriter
::
writeFile
(
vec
,
mesh
,
filename
,
level
);
ElementFileWriter
::
writeFile
(
vec
,
mesh
,
filename
,
""
,
level
);
}
}
...
...
AMDiS/src/io/ElementFileWriter.cc
View file @
340fd949
...
@@ -14,7 +14,9 @@
...
@@ -14,7 +14,9 @@
#include
<boost/iostreams/device/file_descriptor.hpp>
#include
<boost/iostreams/device/file_descriptor.hpp>
#include
<boost/filesystem/operations.hpp>
#include
<boost/filesystem/operations.hpp>
#include
<boost/filesystem/convenience.hpp>
#include
<boost/filesystem/convenience.hpp>
#include
<boost/lexical_cast.hpp>
#include
"io/VtkWriter.h"
#include
"ElementFileWriter.h"
#include
"ElementFileWriter.h"
#include
"BasisFunction.h"
#include
"BasisFunction.h"
#include
"Initfile.h"
#include
"Initfile.h"
...
@@ -93,7 +95,7 @@ namespace AMDiS {
...
@@ -93,7 +95,7 @@ namespace AMDiS {
if
(
writeVtkFormat
)
{
if
(
writeVtkFormat
)
{
TEST_EXIT
(
mesh
)(
"no mesh
\n
"
);
TEST_EXIT
(
mesh
)(
"no mesh
\n
"
);
writeVtkValues
(
const_cast
<
char
*>
((
fn
+
vtkExt
).
c_str
())
);
writeVtkValues
(
fn
,
vtkExt
);
MSG
(
"VTK file written to %s
\n
"
,
(
fn
+
vtkExt
).
c_str
());
MSG
(
"VTK file written to %s
\n
"
,
(
fn
+
vtkExt
).
c_str
());
}
}
}
}
...
@@ -102,10 +104,11 @@ namespace AMDiS {
...
@@ -102,10 +104,11 @@ namespace AMDiS {
void
ElementFileWriter
::
writeFile
(
map
<
int
,
double
>
&
vec
,
void
ElementFileWriter
::
writeFile
(
map
<
int
,
double
>
&
vec
,
Mesh
*
mesh
,
Mesh
*
mesh
,
string
filename
,
string
filename
,
string
postfix
,
int
level
)
int
level
)
{
{
ElementFileWriter
efw
(
""
,
mesh
,
vec
);
ElementFileWriter
efw
(
""
,
mesh
,
vec
);
efw
.
writeVtkValues
(
filename
,
level
);
efw
.
writeVtkValues
(
filename
,
postfix
,
level
);
}
}
...
@@ -213,10 +216,21 @@ namespace AMDiS {
...
@@ -213,10 +216,21 @@ namespace AMDiS {
}
}
void
ElementFileWriter
::
writeVtkValues
(
string
filename
,
int
level
)
void
ElementFileWriter
::
writeVtkValues
(
string
fname
,
string
postfix
,
int
level
)
{
{
FUNCNAME
(
"ElementFileWriter::writeVtkValues()"
);
FUNCNAME
(
"ElementFileWriter::writeVtkValues()"
);
#if HAVE_PARALLEL_DOMAIN_AMDIS
string
filename
=
fname
+
"-p"
+
boost
::
lexical_cast
<
std
::
string
>
(
MPI
::
COMM_WORLD
.
Get_rank
())
+
"-"
+
postfix
;
#else
string
filename
=
fname
+
postfix
;
#endif
boost
::
iostreams
::
filtering_ostream
file
;
boost
::
iostreams
::
filtering_ostream
file
;
{
{
//boost::iostreams seems not to truncate the file
//boost::iostreams seems not to truncate the file
...
@@ -237,7 +251,7 @@ namespace AMDiS {
...
@@ -237,7 +251,7 @@ namespace AMDiS {
nElements
=
0
;
nElements
=
0
;
TraverseStack
stack
;
TraverseStack
stack
;
ElInfo
*
elInfo
=
stack
.
traverseFirst
(
mesh
,
level
,
Mesh
::
CALL_EL_LEVEL
);
ElInfo
*
elInfo
=
stack
.
traverseFirst
(
mesh
,
level
,
Mesh
::
CALL_EL_LEVEL
);
while
(
elInfo
)
{
while
(
elInfo
)
{
nElements
++
;
nElements
++
;
elInfo
=
stack
.
traverseNext
(
elInfo
);
elInfo
=
stack
.
traverseNext
(
elInfo
);
...
@@ -339,5 +353,11 @@ namespace AMDiS {
...
@@ -339,5 +353,11 @@ namespace AMDiS {
file
<<
" </Piece>
\n
"
;
file
<<
" </Piece>
\n
"
;
file
<<
" </UnstructuredGrid>
\n
"
;
file
<<
" </UnstructuredGrid>
\n
"
;
file
<<
"</VTKFile>
\n
"
;
file
<<
"</VTKFile>
\n
"
;
#if HAVE_PARALLEL_DOMAIN_AMDIS
if
(
MPI
::
COMM_WORLD
.
Get_rank
()
==
0
)
VtkWriter
::
writeParallelFile
(
fname
+
".pvtu"
,
MPI
::
COMM_WORLD
.
Get_size
(),
fname
,
".vtu"
,
1
);
#endif
}
}
}
}
AMDiS/src/io/ElementFileWriter.h
View file @
340fd949
...
@@ -30,6 +30,8 @@
...
@@ -30,6 +30,8 @@
namespace
AMDiS
{
namespace
AMDiS
{
using
namespace
std
;
/** \brief
/** \brief
* Filewriter that make it possible to create mesh files, where the values
* Filewriter that make it possible to create mesh files, where the values
* are not defined on DOFs, but instead are defined on the elements.
* are not defined on DOFs, but instead are defined on the elements.
...
@@ -43,9 +45,9 @@ namespace AMDiS {
...
@@ -43,9 +45,9 @@ namespace AMDiS {
{
{
public:
public:
/// Constructor.
/// Constructor.
ElementFileWriter
(
std
::
string
name
,
ElementFileWriter
(
string
name
,
Mesh
*
mesh
,
Mesh
*
mesh
,
std
::
map
<
int
,
double
>
&
vec
);
map
<
int
,
double
>
&
vec
);
/// Implementation of FileWriterInterface::writeFiles().
/// Implementation of FileWriterInterface::writeFiles().
void
writeFiles
(
AdaptInfo
*
adaptInfo
,
bool
force
,
void
writeFiles
(
AdaptInfo
*
adaptInfo
,
bool
force
,
...
@@ -54,30 +56,32 @@ namespace AMDiS {
...
@@ -54,30 +56,32 @@ namespace AMDiS {
bool
(
*
writeElem
)(
ElInfo
*
)
=
NULL
);
bool
(
*
writeElem
)(
ElInfo
*
)
=
NULL
);
/// Simple writing procedure for one element map.
/// Simple writing procedure for one element map.
static
void
writeFile
(
std
::
map
<
int
,
double
>
&
vec
,
static
void
writeFile
(
map
<
int
,
double
>
&
vec
,
Mesh
*
mesh
,
Mesh
*
mesh
,
std
::
string
filename
,
string
filename
,
string
postfix
=
".vtu"
,
int
level
=
-
1
);
int
level
=
-
1
);
protected:
protected:
/// Writes element data in AMDiS format (1 file !).
/// Writes element data in AMDiS format (1 file !).
void
writeMeshDatValues
(
std
::
string
filename
,
double
time
);
void
writeMeshDatValues
(
string
filename
,
double
time
);
/// Writes element data in VTK format.
/// Writes element data in VTK format.
void
writeVtkValues
(
std
::
string
filename
,
int
level
=
-
1
);
void
writeVtkValues
(
string
filename
,
string
postfix
,
int
level
=
-
1
);
protected:
protected:
/// Name.
/// Name.
std
::
string
name
;
string
name
;
/// Used filename prefix.
/// Used filename prefix.
std
::
string
filename
;
string
filename
;
/// AMDiS mesh-data-file extension.
/// AMDiS mesh-data-file extension.
std
::
string
amdisMeshDatExt
;
string
amdisMeshDatExt
;
/// VTK file extension.
/// VTK file extension.
std
::
string
vtkExt
;
string
vtkExt
;
/// 0: Don't write AMDiS files.
/// 0: Don't write AMDiS files.
/// 1: Write AMDiS files.
/// 1: Write AMDiS files.
...
@@ -107,7 +111,7 @@ namespace AMDiS {
...
@@ -107,7 +111,7 @@ namespace AMDiS {
Mesh
*
mesh
;
Mesh
*
mesh
;
/// Vector that stores the solution.
/// Vector that stores the solution.
std
::
map
<
int
,
double
>
vec
;
map
<
int
,
double
>
vec
;
};
};
}
}
...
...
AMDiS/src/io/FileWriter.cc
View file @
340fd949
...
@@ -145,7 +145,8 @@ namespace AMDiS {
...
@@ -145,7 +145,8 @@ namespace AMDiS {
if
(
MPI
::
COMM_WORLD
.
Get_rank
()
==
0
)
if
(
MPI
::
COMM_WORLD
.
Get_rank
()
==
0
)
vtkWriter
.
writeParallelFile
(
paraFilename
+
paraviewParallelFileExt
,
vtkWriter
.
writeParallelFile
(
paraFilename
+
paraviewParallelFileExt
,
MPI
::
COMM_WORLD
.
Get_size
(),
MPI
::
COMM_WORLD
.
Get_size
(),
filename
,
postfix
);
filename
,
postfix
,
dataCollectors
.
size
());
#endif
#endif
MSG
(
"ParaView file written to %s
\n
"
,
(
fn
+
paraviewFileExt
).
c_str
());
MSG
(
"ParaView file written to %s
\n
"
,
(
fn
+
paraviewFileExt
).
c_str
());
...
@@ -185,11 +186,9 @@ namespace AMDiS {
...
@@ -185,11 +186,9 @@ namespace AMDiS {
dofWriter
.
writeFile
(
fn
+
".dof"
,
solutionVecs
);
dofWriter
.
writeFile
(
fn
+
".dof"
,
solutionVecs
);
}
}
if
(
writeArhFormat
)
if
(
writeArhFormat
)
ArhWriter
::
write
(
fn
+
".arh"
,
feSpace
->
getMesh
(),
solutionVecs
);
ArhWriter
::
write
(
fn
+
".arh"
,
feSpace
->
getMesh
(),
solutionVecs
);
#ifdef HAVE_PNG
#ifdef HAVE_PNG
if
(
writePngFormat
)
{
if
(
writePngFormat
)
{
PngWriter
pngWriter
(
dataCollectors
[
0
]);
PngWriter
pngWriter
(
dataCollectors
[
0
]);
...
...
AMDiS/src/io/VtkWriter.cc
View file @
340fd949
...
@@ -32,7 +32,9 @@
...
@@ -32,7 +32,9 @@
namespace
AMDiS
{
namespace
AMDiS
{
int
VtkWriter
::
writeFile
(
std
::
string
name
)
using
namespace
std
;
int
VtkWriter
::
writeFile
(
string
name
)
{
{
FUNCNAME
(
"VtkWriter::writeFile()"
);
FUNCNAME
(
"VtkWriter::writeFile()"
);
...
@@ -51,32 +53,33 @@ namespace AMDiS {
...
@@ -51,32 +53,33 @@ namespace AMDiS {
}
}
{
{
std
::
ofstream
swapfile
(
name
.
c_str
(),
std
::
ios
::
out
|
std
::
ios
::
trunc
);
ofstream
swapfile
(
name
.
c_str
(),
ios
::
out
|
ios
::
trunc
);
TEST_EXIT
(
swapfile
.
is_open
())
TEST_EXIT
(
swapfile
.
is_open
())
(
"Cannot open file %s for writing!
\n
"
,
name
.
c_str
());
(
"Cannot open file %s for writing!
\n
"
,
name
.
c_str
());
swapfile
.
close
();
swapfile
.
close
();
}
}
file
.
push
(
boost
::
iostreams
::
file_descriptor_sink
(
name
,
std
::
ios
::
trunc
));
file
.
push
(
boost
::
iostreams
::
file_descriptor_sink
(
name
,
ios
::
trunc
));
writeFileToStream
(
file
);
writeFileToStream
(
file
);
return
0
;
return
0
;
}
}
void
VtkWriter
::
writeParallelFile
(
std
::
string
name
,
int
nRanks
,
void
VtkWriter
::
writeParallelFile
(
string
name
,
int
nRanks
,
std
::
string
fnPrefix
,
std
::
string
fnPostfix
)
string
fnPrefix
,
string
fnPostfix
,
int
nComponents
)
{
{
FUNCNAME
(
"VtkWriter::writeParallelFile()"
);
FUNCNAME
(
"VtkWriter::writeParallelFile()"
);
boost
::
iostreams
::
filtering_ostream
file
;
boost
::
iostreams
::
filtering_ostream
file
;
{
{
std
::
ofstream
swapfile
(
name
.
c_str
(),
std
::
ios
::
out
|
std
::
ios
::
trunc
);
ofstream
swapfile
(
name
.
c_str
(),
ios
::
out
|
ios
::
trunc
);
TEST_EXIT
(
swapfile
.
is_open
())
TEST_EXIT
(
swapfile
.
is_open
())
(
"Cannot open file %s for writing!
\n
"
,
name
.
c_str
());
(
"Cannot open file %s for writing!
\n
"
,
name
.
c_str
());
swapfile
.
close
();
swapfile
.
close
();
}
}
file
.
push
(
boost
::
iostreams
::
file_descriptor_sink
(
name
,
std
::
ios
::
trunc
));
file
.
push
(
boost
::
iostreams
::
file_descriptor_sink
(
name
,
ios
::
trunc
));
file
<<
"<?xml version=
\"
1.0
\"
?>
\n
"
;
file
<<
"<?xml version=
\"
1.0
\"
?>
\n
"
;
file
<<
"<VTKFile type=
\"
PUnstructuredGrid
\"
>
\n
"
;
file
<<
"<VTKFile type=
\"
PUnstructuredGrid
\"
>
\n
"
;
...
@@ -91,14 +94,14 @@ namespace AMDiS {
...
@@ -91,14 +94,14 @@ namespace AMDiS {
<<
" </PCells>
\n
"
;
<<
" </PCells>
\n
"
;
file
<<
" <PPointData>
\n
"
;
file
<<
" <PPointData>
\n
"
;
for
(
int
i
=
0
;
i
<
static_cast
<
int
>
(
dataCollector
->
size
())
;
i
++
)
for
(
int
i
=
0
;
i
<
nComponents
;
i
++
)
file
<<
" <PDataArray type=
\"
Float32
\"
Name=
\"
value"
file
<<
" <PDataArray type=
\"
Float32
\"
Name=
\"
value"
<<
i
<<
"
\"
format=
\"
ascii
\"
/>
\n
"
;
<<
i
<<
"
\"
format=
\"
ascii
\"
/>
\n
"
;
file
<<
" </PPointData>
\n
"
;
file
<<
" </PPointData>
\n
"
;
for
(
int
i
=
0
;
i
<
nRanks
;
i
++
)
{
for
(
int
i
=
0
;
i
<
nRanks
;
i
++
)
{
std
::
stringstream
oss
;
stringstream
oss
;
oss
<<
fnPrefix
<<
"-p"
<<
i
<<
"-"
<<
fnPostfix
;
oss
<<
fnPrefix
<<
"-p"
<<
i
<<
"-"
<<
fnPostfix
;
boost
::
filesystem
::
path
filepath
(
oss
.
str
());
boost
::
filesystem
::
path
filepath
(
oss
.
str
());
file
<<
" <Piece Source=
\"
"
file
<<
" <Piece Source=
\"
"
...
@@ -113,9 +116,9 @@ namespace AMDiS {
...
@@ -113,9 +116,9 @@ namespace AMDiS {
int
VtkWriter
::
updateAnimationFile
(
AdaptInfo
*
adaptInfo
,
int
VtkWriter
::
updateAnimationFile
(
AdaptInfo
*
adaptInfo
,
std
::
string
valueFilename
,
string
valueFilename
,
std
::
vector
<
pair
<
double
,
std
::
string
>
>
*
paraViewAnimationFrames
,
vector
<
pair
<
double
,
string
>
>
*
paraViewAnimationFrames
,
std
::
string
animationFilename
)
string
animationFilename
)
{
{
FUNCNAME
(
"VtkWriter::updateAnimationFile()"
);
FUNCNAME
(
"VtkWriter::updateAnimationFile()"
);
...
@@ -125,14 +128,14 @@ namespace AMDiS {
...
@@ -125,14 +128,14 @@ namespace AMDiS {
boost
::
iostreams
::
filtering_ostream
file
;
boost
::
iostreams
::
filtering_ostream
file
;
{
{
std
::
ofstream
swapfile
(
animationFilename
.
c_str
(),
ofstream
swapfile
(
animationFilename
.
c_str
(),
std
::
ios
::
out
|
std
::
ios
::
trunc
);
ios
::
out
|
ios
::
trunc
);
TEST_EXIT
(
swapfile
.
is_open
())
TEST_EXIT
(
swapfile
.
is_open
())
(
"Cannot open file %s for writing!
\n
"
,
animationFilename
.
c_str
());
(
"Cannot open file %s for writing!
\n
"
,
animationFilename
.
c_str
());
swapfile
.
close
();
swapfile
.
close
();
}
}
file
.
push
(
boost
::
iostreams
::
file_descriptor_sink
(
animationFilename
,
file
.
push
(
boost
::
iostreams
::
file_descriptor_sink
(
animationFilename
,
std
::
ios
::
trunc
));
ios
::
trunc
));
file
<<
"<?xml version=
\"
1.0
\"
?>
\n
"
;
file
<<
"<?xml version=
\"
1.0
\"
?>
\n
"
;
file
<<
"<VTKFile type=
\"
Collection
\"
version=
\"
0.1
\"
>"
<<
"
\n
"
;
file
<<
"<VTKFile type=
\"
Collection
\"
version=
\"
0.1
\"
>"
<<
"
\n
"
;
...
@@ -152,23 +155,23 @@ namespace AMDiS {
...
@@ -152,23 +155,23 @@ namespace AMDiS {
void
VtkWriter
::
writeFile
(
DOFVector
<
double
>
*
values
,
void
VtkWriter
::
writeFile
(
DOFVector
<
double
>
*
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
)
bool
writeParallel
)
{
{
FUNCNAME
(
"VtkWriter::writeFile()"
);
FUNCNAME
(
"VtkWriter::writeFile()"
);
DataCollector
<>
dc
(
values
->
getFeSpace
(),
values
);
DataCollector
<>
dc
(
values
->
getFeSpace
(),
values
);
std
::
vector
<
DataCollector
<>*>
dcList
(
0
);
vector
<
DataCollector
<>*>
dcList
(
0
);
dcList
.
push_back
(
&
dc
);
dcList
.
push_back
(
&
dc
);
writeFile
(
dcList
,
filename
,
writeParallel
);
writeFile
(
dcList
,
filename
,
writeParallel
);
}
}
void
VtkWriter
::
writeFile
(
std
::
vector
<
DOFVector
<
double
>*
>
&
values
,
void
VtkWriter
::
writeFile
(
vector
<
DOFVector
<
double
>*
>
&
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
)
bool
writeParallel
)
{
{
std
::
vector
<
DataCollector
<>*>
dcList
(
0
);
vector
<
DataCollector
<>*>
dcList
(
0
);
for
(
unsigned
int
i
=
0
;
i
<
values
.
size
();
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
values
.
size
();
i
++
)
dcList
.
push_back
(
new
DataCollector
<>
(
values
[
i
]
->
getFeSpace
(),
values
[
i
]));
dcList
.
push_back
(
new
DataCollector
<>
(
values
[
i
]
->
getFeSpace
(),
values
[
i
]));
writeFile
(
dcList
,
filename
,
writeParallel
);
writeFile
(
dcList
,
filename
,
writeParallel
);
...
@@ -178,10 +181,10 @@ namespace AMDiS {
...
@@ -178,10 +181,10 @@ namespace AMDiS {
void
VtkWriter
::
writeFile
(
WorldVector
<
DOFVector
<
double
>*
>
&
values
,
void
VtkWriter
::
writeFile
(
WorldVector
<
DOFVector
<
double
>*
>
&
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
)
bool
writeParallel
)
{
{
std
::
vector
<
DataCollector
<>*>
dcList
(
0
);
vector
<
DataCollector
<>*>
dcList
(
0
);
for
(
int
i
=
0
;
i
<
values
.
getSize
();
i
++
)
for
(
int
i
=
0
;
i
<
values
.
getSize
();
i
++
)
dcList
.
push_back
(
new
DataCollector
<>
(
values
[
i
]
->
getFeSpace
(),
values
[
i
]));
dcList
.
push_back
(
new
DataCollector
<>
(
values
[
i
]
->
getFeSpace
(),
values
[
i
]));
writeFile
(
dcList
,
filename
,
writeParallel
);
writeFile
(
dcList
,
filename
,
writeParallel
);
...
@@ -191,7 +194,7 @@ namespace AMDiS {
...
@@ -191,7 +194,7 @@ namespace AMDiS {
void
VtkWriter
::
writeFile
(
DOFVector
<
WorldVector
<
double
>
>
*
values
,
void
VtkWriter
::
writeFile
(
DOFVector
<
WorldVector
<
double
>
>
*
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
)
bool
writeParallel
)
{
{
WorldVector
<
DOFVector
<
double
>*>
valuesWV
;
WorldVector
<
DOFVector
<
double
>*>
valuesWV
;
...
@@ -205,10 +208,10 @@ namespace AMDiS {
...
@@ -205,10 +208,10 @@ namespace AMDiS {
void
VtkWriter
::
writeFile
(
SystemVector
*
values
,
void
VtkWriter
::
writeFile
(
SystemVector
*
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
)
bool
writeParallel
)
{
{
std
::
vector
<
DataCollector
<>*>
dcList
(
0
);
vector
<
DataCollector
<>*>
dcList
(
0
);
for
(
int
i
=
0
;
i
<
values
->
getSize
();
i
++
)
for
(
int
i
=
0
;
i
<
values
->
getSize
();
i
++
)
dcList
.
push_back
(
new
DataCollector
<>
(
values
->
getDOFVector
(
i
)
->
getFeSpace
(),
dcList
.
push_back
(
new
DataCollector
<>
(
values
->
getDOFVector
(
i
)
->
getFeSpace
(),
values
->
getDOFVector
(
i
)));
values
->
getDOFVector
(
i
)));
...
@@ -218,8 +221,8 @@ namespace AMDiS {
...
@@ -218,8 +221,8 @@ namespace AMDiS {
}
}
void
VtkWriter
::
writeFile
(
std
::
vector
<
DataCollector
<>*>
&
dcList
,
void
VtkWriter
::
writeFile
(
vector
<
DataCollector
<>*>
&
dcList
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
)
bool
writeParallel
)
{
{
VtkWriter
writer
(
&
dcList
);
VtkWriter
writer
(
&
dcList
);
...
@@ -230,12 +233,15 @@ namespace AMDiS {
...
@@ -230,12 +233,15 @@ namespace AMDiS {
int
sPos
=
filename
.
find
(
".vtu"
);
int
sPos
=
filename
.
find
(
".vtu"
);
TEST_EXIT
(
sPos
>=
0
)(
"Failed to find file postfix!
\n
"
);
TEST_EXIT
(
sPos
>=
0
)(
"Failed to find file postfix!
\n
"
);
std
::
string
name
=
filename
.
substr
(
0
,
sPos
);
string
name
=
filename
.
substr
(
0
,
sPos
);
if
(
MPI
::
COMM_WORLD
.
Get_rank
()
==
0
)
if
(
MPI
::
COMM_WORLD
.
Get_rank
()
==
0
)
writer
.
writeParallelFile
(
name
+
".pvtu"
,
MPI
::
COMM_WORLD
.
Get_size
(),
name
,
".vtu"
);
writer
.
writeParallelFile
(
name
+
".pvtu"
,
MPI
::
COMM_WORLD
.
Get_size
(),
name
,
".vtu"
,
static_cast
<
int
>
(
dcList
.
size
()));
filename
=
name
+
"-p"
+
lexical_cast
<
std
::
string
>
(
MPI
::
COMM_WORLD
.
Get_rank
())
+
"-.vtu"
;
filename
=
name
+
"-p"
+
lexical_cast
<
string
>
(
MPI
::
COMM_WORLD
.
Get_rank
())
+
"-.vtu"
;
}
}
#endif
#endif
writer
.
writeFile
(
filename
);
writer
.
writeFile
(
filename
);
...
...
AMDiS/src/io/VtkWriter.h
View file @
340fd949
...
@@ -36,10 +36,12 @@
...
@@ -36,10 +36,12 @@
namespace
AMDiS
{
namespace
AMDiS
{
using
namespace
std
;
class
VtkWriter
class
VtkWriter
{
{
public:
public:
VtkWriter
(
std
::
vector
<
DataCollector
<>*>
*
dc
)
VtkWriter
(
vector
<
DataCollector
<>*>
*
dc
)
:
dataCollector
(
dc
),
:
dataCollector
(
dc
),
compress
(
NONE
)
compress
(
NONE
)
{
{
...
@@ -48,51 +50,52 @@ namespace AMDiS {
...
@@ -48,51 +50,52 @@ namespace AMDiS {
}
}
/// Writes a ParaView-VTK file.
/// Writes a ParaView-VTK file.
int
writeFile
(
std
::
string
name
);
int
writeFile
(
string
name
);
/// Writes a pvtu file, which contains the links to all the rank files.
/// Writes a pvtu file, which contains the links to all the rank files.
void
writeParallelFile
(
std
::
string
name
,
int
nRanks
,
static
void
writeParallelFile
(
string
name
,
int
nRanks
,
std
::
string
fnPrefix
,
std
::
string
fnPostfix
);
string
fnPrefix
,
string
fnPostfix
,
int
nComponents
);
/// May be used to simply write ParaView files.
/// May be used to simply write ParaView files.
static
void
writeFile
(
DOFVector
<
double
>
*
values
,
static
void
writeFile
(
DOFVector
<
double
>
*
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
=
true
);
bool
writeParallel
=
true
);
/// May be used to simply write ParaView files.
/// May be used to simply write ParaView files.
static
void
writeFile
(
DOFVector
<
double
>
&
values
,
static
void
writeFile
(
DOFVector
<
double
>
&
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
=
true
)
bool
writeParallel
=
true
)
{
{
writeFile
(
&
values
,
filename
,
writeParallel
);
writeFile
(
&
values
,
filename
,
writeParallel
);
}
}
/// May be used to simply write ParaView files with a list of values.
/// May be used to simply write ParaView files with a list of values.
static
void
writeFile
(
std
::
vector
<
DOFVector
<
double
>*>
&
values
,
static
void
writeFile
(
vector
<
DOFVector
<
double
>*>
&
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
=
true
);
bool
writeParallel
=
true
);
static
void
writeFile
(
WorldVector
<
DOFVector
<
double
>*>
&
values
,
static
void
writeFile
(
WorldVector
<
DOFVector
<
double
>*>
&
values
,
std
::
string
filename
,
string
filename
,
bool
writeParallel
=
true
);
bool
writeParallel
=
true
);