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
iwr
amdis
Commits
9c5daa06
Commit
9c5daa06
authored
Apr 07, 2009
by
Thomas Witkowski
Browse files
* Some more or less important changes
parent
edb60cbf
Changes
22
Hide whitespace changes
Inline
Side-by-side
AMDiS/bin/Makefile.am
View file @
9c5daa06
...
...
@@ -19,7 +19,8 @@ if USE_PARALLEL_AMDIS
$(PARALLEL_DIR)
/ParallelDomainProblem.h
$(PARALLEL_DIR)
/ParallelDomainProblem.cc
\
$(PARALLEL_DIR)
/ParMetisPartitioner.h
$(PARALLEL_DIR)
/ParMetisPartitioner.cc
\
$(PARALLEL_DIR)
/PartitionElementData.h
PARALLEL_INCLUDES
=
-I
$(MPI_DIR)
/include
-I
$(PARMETIS_DIR)
PARALLEL_INCLUDES
=
-I
/work/home7/witkowsk/local/include
\
-I
$(MPI_DIR)
/include
-I
$(PARMETIS_DIR)
else
PARALLEL_AMDIS_SOURCES
=
PARALLEL_INCLUDES
=
...
...
@@ -27,6 +28,10 @@ endif
libamdis_la_CXXFLAGS
=
if
USE_PARALLEL_AMDIS
libamdis_la_CXXFLAGS
+=
-DHAVE_PARALLEL_AMDIS
=
1
endif
if
ENABLE_UMFPACK
libamdis_la_CXXFLAGS
+=
-DHAVE_UMFPACK
=
1
AMDIS_INCLUDES
+=
-I
$(LIB_DIR)
/UFconfig
\
...
...
AMDiS/bin/Makefile.in
View file @
9c5daa06
...
...
@@ -36,17 +36,18 @@ PRE_UNINSTALL = :
POST_UNINSTALL
=
:
build_triplet
=
@build@
host_triplet
=
@host@
@ENABLE_UMFPACK_TRUE@
am__append_1
=
-DHAVE_UMFPACK
=
1
@ENABLE_UMFPACK_TRUE@
am__append_2
=
-I
$(LIB_DIR)
/UFconfig
\
@USE_PARALLEL_AMDIS_TRUE@
am__append_1
=
-DHAVE_PARALLEL_AMDIS
=
1
@ENABLE_UMFPACK_TRUE@
am__append_2
=
-DHAVE_UMFPACK
=
1
@ENABLE_UMFPACK_TRUE@
am__append_3
=
-I
$(LIB_DIR)
/UFconfig
\
@ENABLE_UMFPACK_TRUE@
-I
$(LIB_DIR)
/AMD/Include
\
@ENABLE_UMFPACK_TRUE@
-I
$(LIB_DIR)
/UMFPACK/Include
@ENABLE_MKL_TRUE@
am__append_
3
=
-DHAVE_MKL
=
1
-I
${MKL_INC}
@ENABLE_DUNE_TRUE@
am__append_
4
=
-DHAVE_DUNE
=
1
@ENABLE_DUNE_TRUE@
am__append_
5
=
-I
$(DUNE_DIR)
@ENABLE_BOOST_TRUE@
am__append_
6
=
-DHAVE_BOOST
=
1
@AMDIS_DEBUG_TRUE@
am__append_
7
=
-g
-O0
-Wall
-DDEBUG
=
1
$(OPENMP_FLAG)
-ftemplate-depth-30
$(INCLUDES)
#-pedantic
@AMDIS_DEBUG_FALSE@
am__append_
8
=
-O2
-Wall
-DDEBUG
=
0
$(OPENMP_FLAG)
-ftemplate-depth-30
$(INCLUDES)
#-pedantic
@ENABLE_MKL_TRUE@
am__append_
4
=
-DHAVE_MKL
=
1
-I
${MKL_INC}
@ENABLE_DUNE_TRUE@
am__append_
5
=
-DHAVE_DUNE
=
1
@ENABLE_DUNE_TRUE@
am__append_
6
=
-I
$(DUNE_DIR)
@ENABLE_BOOST_TRUE@
am__append_
7
=
-DHAVE_BOOST
=
1
@AMDIS_DEBUG_TRUE@
am__append_
8
=
-g
-O0
-Wall
-DDEBUG
=
1
$(OPENMP_FLAG)
-ftemplate-depth-30
$(INCLUDES)
#-pedantic
@AMDIS_DEBUG_FALSE@
am__append_
9
=
-O2
-Wall
-DDEBUG
=
0
$(OPENMP_FLAG)
-ftemplate-depth-30
$(INCLUDES)
#-pedantic
subdir
=
bin
DIST_COMMON
=
$(srcdir)
/Makefile.am
$(srcdir)
/Makefile.in
ACLOCAL_M4
=
$(top_srcdir)
/aclocal.m4
...
...
@@ -484,7 +485,7 @@ SOURCE_DIR = ../src
LIB_DIR
=
../lib
PARALLEL_DIR
=
$(SOURCE_DIR)
PARMETIS_DIR
=
../lib/ParMetis-3.1
AMDIS_INCLUDES
=
-I
$(SOURCE_DIR)
$(am__append_
2
)
$(am__append_
5
)
AMDIS_INCLUDES
=
-I
$(SOURCE_DIR)
$(am__append_
3
)
$(am__append_
6
)
@USE_PARALLEL_AMDIS_FALSE@
PARALLEL_AMDIS_SOURCES
=
@USE_PARALLEL_AMDIS_TRUE@
PARALLEL_AMDIS_SOURCES
=
\
@USE_PARALLEL_AMDIS_TRUE@
$(PARALLEL_DIR)
/ConditionalEstimator.h
$(PARALLEL_DIR)
/ConditionalEstimator.cc
\
...
...
@@ -498,9 +499,12 @@ AMDIS_INCLUDES = -I$(SOURCE_DIR) $(am__append_2) $(am__append_5)
@USE_PARALLEL_AMDIS_TRUE@
$(PARALLEL_DIR)
/PartitionElementData.h
@USE_PARALLEL_AMDIS_FALSE@
PARALLEL_INCLUDES
=
@USE_PARALLEL_AMDIS_TRUE@
PARALLEL_INCLUDES
=
-I
$(MPI_DIR)
/include
-I
$(PARMETIS_DIR)
libamdis_la_CXXFLAGS
=
$(am__append_1)
$(am__append_3)
$(am__append_4)
\
$(am__append_6)
$(am__append_7)
$(am__append_8)
@USE_PARALLEL_AMDIS_TRUE@
PARALLEL_INCLUDES
=
-I
/work/home7/witkowsk/local/include
\
@USE_PARALLEL_AMDIS_TRUE@
-I
$(MPI_DIR)
/include
-I
$(PARMETIS_DIR)
libamdis_la_CXXFLAGS
=
$(am__append_1)
$(am__append_2)
$(am__append_4)
\
$(am__append_5)
$(am__append_7)
$(am__append_8)
\
$(am__append_9)
INCLUDES
=
$(AMDIS_INCLUDES)
$(PARALLEL_INCLUDES)
libamdis_la_SOURCES
=
\
$(PARALLEL_AMDIS_SOURCES)
\
...
...
AMDiS/libtool
View file @
9c5daa06
...
...
@@ -44,7 +44,7 @@ available_tags=" CXX F77"
# ### BEGIN LIBTOOL CONFIG
# Libtool was configured on host p2s
148
:
# Libtool was configured on host p2s
256
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -6760,7 +6760,7 @@ build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
# End:
# ### BEGIN LIBTOOL TAG CONFIG: CXX
# Libtool was configured on host p2s
148
:
# Libtool was configured on host p2s
256
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -7065,7 +7065,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host p2s
148
:
# Libtool was configured on host p2s
256
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
AMDiS/src/AdaptStationary.h
View file @
9c5daa06
...
...
@@ -55,27 +55,19 @@ namespace AMDiS {
public:
MEMORY_MANAGED
(
AdaptStationary
);
/** \brief
* Creates a AdaptStationary object with given name.
*/
/// Creates a AdaptStationary object with given name.
AdaptStationary
(
const
std
::
string
&
name
,
ProblemIterationInterface
*
prob
,
AdaptInfo
*
info
);
/** \brief
* Destructor
*/
/// Destructor
virtual
~
AdaptStationary
()
{}
/** \brief
* Implementation of AdaptBase::adapt()
*/
/// Implementation of AdaptBase::adapt()
virtual
int
adapt
();
protected:
/** \brief
* Initialisation
*/
/// Initialisation
void
initialize
();
};
...
...
AMDiS/src/DOFMatrix.cc
View file @
9c5daa06
...
...
@@ -47,6 +47,10 @@ namespace AMDiS {
colFESpace
->
getBasisFcts
()
->
getNumber
());
applyDBCs
.
clear
();
#ifdef HAVE_PARALLEL_AMDIS
applicationOrdering
=
NULL
;
#endif
}
DOFMatrix
::
DOFMatrix
(
const
DOFMatrix
&
rhs
)
...
...
AMDiS/src/DOFMatrix.h
View file @
9c5daa06
...
...
@@ -30,6 +30,7 @@
#include
<set>
#include
<memory>
#include
<list>
#include
"Global.h"
#include
"Flag.h"
#include
"RCNeighbourList.h"
...
...
@@ -40,6 +41,10 @@
#include
"Boundary.h"
#include
"Serializable.h"
#ifdef HAVE_PARALLEL_AMDIS
#include
"petscao.h"
#endif
namespace
AMDiS
{
// ============================================================================
...
...
@@ -420,23 +425,17 @@ namespace AMDiS {
return
rowFESpace
;
}
/** \brief
* Returns const \ref colFESpace
*/
/// Returns const \ref colFESpace
const
FiniteElemSpace
*
getColFESpace
()
const
{
return
colFESpace
;
}
/** \brief
* Returns const \ref rowFESpace
*/
/// Returns const \ref rowFESpace
const
FiniteElemSpace
*
getFESpace
()
const
{
return
rowFESpace
;
}
/** \brief
* Returns number of rows (\ref matrix.size())
*/
/// Returns number of rows (\ref matrix.size())
inline
int
getSize
()
const
{
return
matrix
.
size
();
}
...
...
@@ -455,58 +454,44 @@ namespace AMDiS {
*/
int
getNumCols
()
const
;
/** \brief
* Returns \ref name
*/
/// Returns \ref name
inline
const
std
::
string
&
getName
()
const
{
return
name
;
}
/** \brief
* Resizes \ref matrix to n rows
*/
/// Resizes \ref matrix to n rows
inline
void
resize
(
int
n
)
{
TEST_EXIT_DBG
(
n
>=
0
)(
"Can't resize DOFMatrix to negative size
\n
"
);
matrix
.
resize
(
n
);
}
/** \brief
* Returns \ref matrix[i] which is the i-th row
*/
/// Returns \ref matrix[i] which is the i-th row
inline
const
std
::
vector
<
MatEntry
>&
operator
[](
int
i
)
const
{
TEST_EXIT_DBG
((
i
>=
0
)
&&
(
i
<
(
static_cast
<
int
>
(
matrix
.
size
()))))
(
"Illegal matrix index %d.
\n
"
,
i
);
return
matrix
[
i
];
}
/** \brief
* Returns \ref matrix[i] which is the i-th row
*/
/// Returns \ref matrix[i] which is the i-th row
inline
std
::
vector
<
MatEntry
>&
operator
[](
int
i
)
{
TEST_EXIT_DBG
((
i
>=
0
)
&&
(
i
<
(
static_cast
<
int
>
(
matrix
.
size
()))))
(
"Illegal vector index %d.
\n
"
,
i
);
return
matrix
[
i
];
}
/** \brief
* Access to \ref matrix[a][b].entry
*/
/// Access to \ref matrix[a][b].entry
inline
double
physAcc
(
DegreeOfFreedom
a
,
DegreeOfFreedom
b
)
const
{
return
matrix
[
a
][
b
].
entry
;
}
/** \brief
* Access to \ref matrix[a][b].col
*/
/// Access to \ref matrix[a][b].col
inline
DegreeOfFreedom
physToLogIndex
(
DegreeOfFreedom
a
,
DegreeOfFreedom
b
)
const
{
return
matrix
[
a
][
b
].
col
;
}
/** \brief
* Returns physical column index of logical index b in row a
*/
/// Returns physical column index of logical index b in row a
inline
DegreeOfFreedom
logToPhysIndex
(
DegreeOfFreedom
a
,
DegreeOfFreedom
b
)
const
{
int
size
=
static_cast
<
int
>
(
matrix
[
a
].
size
());
...
...
@@ -517,19 +502,13 @@ namespace AMDiS {
return
-
1
;
}
/** \brief
* Returns value at logical indices a,b
*/
/// Returns value at logical indices a,b
double
logAcc
(
DegreeOfFreedom
a
,
DegreeOfFreedom
b
)
const
;
/** \brief
* Changes col at logical indices a,b to c
*/
/// Changes col at logical indices a,b to c
void
changeColOfEntry
(
DegreeOfFreedom
a
,
DegreeOfFreedom
b
,
DegreeOfFreedom
c
);
/** \brief
* Changes col of \ref matrix[a][b] to c
*/
/// Changes col of \ref matrix[a][b] to c
inline
void
changePhysColOfEntry
(
DegreeOfFreedom
a
,
DegreeOfFreedom
b
,
DegreeOfFreedom
c
)
...
...
@@ -565,24 +544,16 @@ namespace AMDiS {
void
removeRowsWithDBC
(
std
::
set
<
int
>
*
rows
);
/** \brief
* Prints \ref matrix to stdout
*/
/// Prints \ref matrix to stdout
void
print
()
const
;
/** \brief
* Prints a row of \ref matrix to stdout
*/
/// Prints a row of \ref matrix to stdout
void
printRow
(
int
i
)
const
;
/** \brief
* Removes all matrix entries
*/
/// Removes all matrix entries
void
clear
();
/** \brief
* Test whether \ref matrix is symmetric. Exits if not.
*/
/// Test whether \ref matrix is symmetric. Exits if not.
void
test
();
bool
symmetric
();
...
...
@@ -612,9 +583,7 @@ namespace AMDiS {
}
void
createPictureFile
(
const
char
*
filename
,
int
dim
);
// ===== Serializable implementation =====
void
serialize
(
std
::
ostream
&
out
)
{
unsigned
int
matrixSize
=
matrix
.
size
();
...
...
@@ -640,13 +609,15 @@ namespace AMDiS {
}
}
///
int
memsize
();
protected:
/** \brief
* Used by updateMatrix
*/
//static int assembleFct(ElInfo *el_info);
#ifdef HAVE_PARALLEL_AMDIS
/// Sets the petsc application ordering object to map dof indices.
void
useApplicationOrdering
(
AO
*
ao
)
{
applicationOrdering
=
ao
;
}
#endif
protected:
/** \brief
...
...
@@ -661,19 +632,13 @@ namespace AMDiS {
*/
const
FiniteElemSpace
*
colFESpace
;
/** \brief
* Name of the DOFMatrix
*/
/// Name of the DOFMatrix
std
::
string
name
;
/** \brief
* Sparse matrix stored in an STL vector of MatrixRow objects
*/
/// Sparse matrix stored in an STL vector of MatrixRow objects
std
::
vector
<
MatrixRow
>
matrix
;
/** \brief
* Used while mesh traversal
*/
/// Used while mesh traversal
static
DOFMatrix
*
traversePtr
;
/** \brief
...
...
@@ -688,28 +653,26 @@ namespace AMDiS {
*/
std
::
vector
<
double
*>
operatorFactor
;
/** \brief
*
*/
///
std
::
vector
<
double
*>
operatorEstFactor
;
/** \brief
*
*/
///
BoundaryManager
*
boundaryManager
;
/** \brief
*
*/
///
bool
coupleMatrix
;
/** \brief
* Temporary variable used in assemble()
*/
/// Temporary variable used in assemble()
ElementMatrix
*
elementMatrix
;
///
std
::
set
<
int
>
applyDBCs
;
#ifdef HAVE_PARALLEL_AMDIS
/// Petsc application ordering to map dof indices.
AO
*
applicationOrdering
;
#endif
friend
class
DOFAdmin
;
friend
class
DOFVector
<
double
>
;
friend
class
DOFVector
<
unsigned
char
>
;
...
...
@@ -718,7 +681,8 @@ namespace AMDiS {
};
inline
DegreeOfFreedom
logToPhysIndex
(
DOFMatrix
*
m
,
DegreeOfFreedom
a
,
DegreeOfFreedom
b
)
inline
DegreeOfFreedom
logToPhysIndex
(
DOFMatrix
*
m
,
DegreeOfFreedom
a
,
DegreeOfFreedom
b
)
{
return
m
->
logToPhysIndex
(
a
,
b
);
}
...
...
@@ -729,16 +693,11 @@ namespace AMDiS {
double
max
(
std
::
vector
<
MatEntry
>
*
row
);
/** \brief
* Addes two matrices. The result matrix is overwritten.
*/
/// Addes two matrices. The result matrix is overwritten.
void
addDOFMatrix
(
DOFMatrix
*
result
,
const
DOFMatrix
*
a
,
const
DOFMatrix
*
b
);
/** \brief
* Addes matrix a to matrix result.
*/
/// Addes matrix a to matrix result.
void
addDOFMatrix
(
DOFMatrix
*
result
,
const
DOFMatrix
*
a
);
}
#endif // AMDIS_DOFMATRIX_H
AMDiS/src/DOFVector.h
View file @
9c5daa06
...
...
@@ -26,6 +26,10 @@
// ===== includes ============================================================
// ===========================================================================
#include
<vector>
#include
<memory>
#include
<list>
#include
"FixVec.h"
#include
"Global.h"
#include
"Flag.h"
...
...
@@ -39,9 +43,10 @@
#include
"Serializable.h"
#include
"DOFMatrix.h"
#include
"BasisFunction.h"
#include
<vector>
#include
<memory>
#include
<list>
#ifdef HAVE_PARALLEL_AMDIS
#include
"petscao.h"
#endif
namespace
AMDiS
{
...
...
@@ -584,24 +589,16 @@ namespace AMDiS {
*/
T
max
()
const
;
/** \brief
* Returns absolute maximum of DOFVector
*/
/// Returns absolute maximum of DOFVector
T
absMax
()
const
;
/** \brief
* Used by interpol while mesh traversal
*/
/// Used by interpol while mesh traversal
static
int
interpolFct
(
ElInfo
*
elinfo
);
/** \brief
* Prints \ref vec to stdout
*/
/// Prints \ref vec to stdout
void
print
()
const
;
/** \brief
*
*/
///
int
calcMemoryUsage
()
const
;
/** \brief
...
...
@@ -612,8 +609,6 @@ namespace AMDiS {
void
interpol
(
DOFVector
<
T
>
*
v
,
double
factor
);
// ===== Serializable implementation =====
void
serialize
(
std
::
ostream
&
out
)
{
unsigned
int
size
=
vec
.
size
();
out
.
write
(
reinterpret_cast
<
const
char
*>
(
&
size
),
sizeof
(
unsigned
int
));
...
...
@@ -635,6 +630,13 @@ namespace AMDiS {
getRecoveryGradient
(
DOFVector
<
WorldVector
<
T
>
>*
)
const
;
#ifdef HAVE_PARALLEL_AMDIS
/// Sets the petsc application ordering object to map dof indices.
void
useApplicationOrdering
(
AO
*
ao
)
{
applicationOrdering
=
ao
;
}
#endif
protected:
/** \brief
* Used by Int while mesh traversal
...
...
@@ -662,45 +664,34 @@ namespace AMDiS {
static
int
DoubleWell_fct
(
ElInfo
*
elinfo
);
protected:
/** \brief
* Name of this DOFVector
*/
/// Name of this DOFVector
std
::
string
name
;
/** \brief
* FiniteElemSpace of the vector
*/
/// FiniteElemSpace of the vector
const
FiniteElemSpace
*
feSpace
;
/** \brief
* Data container
*/
/// Data container
std
::
vector
<
T
>
vec
;
/** \brief
* Specifies what operation should be performed after coarsening
*/
/// Specifies what operation should be performed after coarsening
CoarsenOperation
coarsenOperation
;
/** \brief
* Used by \ref interpol
*/
/// Used by \ref interpol
AbstractFunction
<
T
,
WorldVector
<
double
>
>
*
interFct
;
/** \brief
* Used for mesh traversal
*/
/// Used for mesh traversal
static
DOFVector
<
T
>
*
traverseVector
;
#ifdef HAVE_PARALLEL_AMDIS
/// Petsc application ordering to map dof indices.
AO
*
applicationOrdering
;
#endif
protected:
/** \brief
* Used while calculating vector norms
*/
/// Used while calculating vector norms
static
FastQuadrature
*
quad_fast
;
/** \brief
* Stores the last calculated vector norm
*/
/// Stores the last calculated vector norm
static
double
norm
;
};
...
...
@@ -744,9 +735,7 @@ namespace AMDiS {
feSpace
->
getAdmin
()
->
addDOFContainer
(
this
);
}
/** \brief
* Deregisters itself at DOFAdmin.
*/
/// Deregisters itself at DOFAdmin.
~
DOFVectorDOF
()
{
feSpace
->
getAdmin
()
->
removeDOFContainer
(
this
);
}
...
...
@@ -759,16 +748,12 @@ namespace AMDiS {
return
DOFVector
<
DegreeOfFreedom
>::
operator
[](
i
);
}
/** \brief
* Implements DOFIndexedBase::getSize()
*/
/// Implements DOFIndexedBase::getSize()
int
getSize
()
const
{
return
DOFVector
<
DegreeOfFreedom
>::
getSize
();
}
/** \brief
* Implements DOFIndexedBase::resize()
*/
/// Implements DOFIndexedBase::resize()
void
resize
(
int
size
)
{
DOFVector
<
DegreeOfFreedom
>::
resize
(
size
);
}
...
...
AMDiS/src/DOFVector.hh
View file @
9c5daa06
...
...
@@ -66,6 +66,10 @@ namespace AMDiS {
coarsenOperation
(
NO_OPERATION
)
{
init
(
f
,
n
);
#ifdef HAVE_PARALLEL_AMDIS
applicationOrdering
=
NULL
;
#endif
}
template
<
typename
T
>
...
...
AMDiS/src/Element.cc
View file @
9c5daa06
...
...
@@ -41,7 +41,6 @@ namespace AMDiS {
newCoord
=
NULL
;
elementData
=
NULL
;
mark
=
0
;
hidden
=
false
;
if
(
mesh
)
{
setDOFPtrs
();
...
...
@@ -139,7 +138,6 @@ namespace AMDiS {
el
->
mesh
=
mesh
;
el
->
index
=
index
;
el
->
mark
=
mark
;
el
->
hidden
=
hidden
;
if
(
newCoord
)
{
WorldVector
<
double
>
*
nc
=
NEW
WorldVector
<
double
>
();
*
nc
=
*
newCoord
;
...
...
@@ -422,9 +420,6 @@ namespace AMDiS {
// write mark
out
.
write
(
reinterpret_cast
<
const
char
*>
(
&
mark
),
sizeof
(
signed
char
));
// write hidden flag
out
.
write
(
reinterpret_cast
<
const
char
*>
(
&
hidden
),
sizeof
(
hidden
));
// write newCoord
if
(
newCoord
)
{
out
<<
"WorldVector
\n
"
;
...
...
@@ -506,9 +501,6 @@ namespace AMDiS {
// read mark
in
.
read
(
reinterpret_cast
<
char
*>
(
&
mark
),
sizeof
(
signed
char
));
// read hidden
in
.
read
(
reinterpret_cast
<
char
*>
(
&
hidden
),
sizeof
(
bool
));
// read newCoord
in
>>
typeName
;
in
.
get
();
...
...
AMDiS/src/Element.h
View file @
9c5daa06
...
...
@@ -230,16 +230,6 @@ namespace AMDiS {
return
newCoord
;
}
/// Returns \ref hidden, i.e., if the element is visible for mesh traverses.