Skip to content
GitLab
Menu
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
4e04364c
Commit
4e04364c
authored
Nov 23, 2010
by
Thomas Witkowski
Browse files
Fixed bug for parallel reading macro files with periodic boundary conditions.
parent
c71c0da0
Changes
7
Hide whitespace changes
Inline
Side-by-side
AMDiS/libtool
View file @
4e04364c
...
...
@@ -51,32 +51,32 @@ build_old_libs=yes
pic_mode
=
default
# Whether or not to optimize for fast installation.
fast_install
=
y
es
fast_install
=
needl
es
s
# The host system.
host_alias
=
host
=
i686-redhat
-linux-gnu
host
=
x86_64-unknown
-linux-gnu
host_os
=
linux-gnu
# The build system.
build_alias
=
build
=
i686-redhat
-linux-gnu
build
=
x86_64-unknown
-linux-gnu
build_os
=
linux-gnu
# A sed program that does not truncate output.
SED
=
"/bin/sed"
SED
=
"/
usr/
bin/sed"
# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed
=
"
$SED
-e 1s/^X//"
# A grep program that handles long lines.
GREP
=
"/bin/grep"
GREP
=
"/
usr/
bin/grep"
# An ERE matcher.
EGREP
=
"/bin/grep -E"
EGREP
=
"/
usr/
bin/grep -E"
# A literal string matcher.
FGREP
=
"/bin/grep -F"
FGREP
=
"/
usr/
bin/grep -F"
# A BSD- or MS-compatible name lister.
NM
=
"/usr/bin/nm -B"
...
...
@@ -128,7 +128,7 @@ old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds
=
""
# A C compiler.
LTCC
=
"
g
cc"
LTCC
=
"
/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpi
cc"
# LTCC compiler flags.
LTCFLAGS
=
"-g -O2"
...
...
@@ -204,7 +204,7 @@ runpath_var=LD_RUN_PATH
shlibpath_var
=
LD_LIBRARY_PATH
# Is shlibpath searched before the hard-coded library search path?
shlibpath_overrides_runpath
=
no
shlibpath_overrides_runpath
=
yes
# Format of library name prefix.
libname_spec
=
"lib
\$
name"
...
...
@@ -233,10 +233,10 @@ finish_eval=""
hardcode_into_libs
=
yes
# Compile-time system search path for libraries.
sys_lib_search_path_spec
=
"/u
/witkowski/local/lib /u/witkowski/local/intel/mkl/10.0.1.014/lib/32 /usr/lib/gcc/i386-redhat-linux/4.1.2 /usr/lib
/lib"
sys_lib_search_path_spec
=
"/u
sr/lib64/gcc/x86_64-suse-linux/4.1.2 /usr/lib64 /lib64 /fastfs/wir/local/lib /usr/x86_64-suse-linux
/lib"
# Run-time system search path for libraries.
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
lib/mysql /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib /usr/lib/qt4/lib /usr/lib/xulrunner-1.9.2
"
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
X11R6/lib64/Xaw3d /usr/X11R6/lib64 /usr/X11R6/lib/Xaw3d /usr/X11R6/lib /usr/x86_64-suse-linux/lib /usr/local/lib64 /usr/local/lib /opt/kde3/lib64 /opt/kde3/lib /opt/gnome/lib64 /opt/gnome/lib /lib64 /lib /usr/lib64 /usr/lib /opt/cluster/intel/cce/9.1.042/lib /opt/cluster/intel/fce/9.1.036/lib /opt/cluster/Pathscale3.0/lib/2.9.99 /opt/cluster/Pathscale3.0/lib/2.9.99/32 /work/licsoft/compilers/pgi/linux86-64/6.2/lib /work/licsoft/compilers/pgi/linux86-64/6.2/libso
"
# Whether dlopen is supported.
dlopen_support
=
unknown
...
...
@@ -253,13 +253,13 @@ striplib="strip --strip-unneeded"
# The linker used to build libraries.
LD
=
"/usr/
bin/ld
"
LD
=
"/usr/
x86_64-suse-linux/bin/ld -m elf_x86_64
"
# Commands used to build an old-style archive.
old_archive_cmds
=
"
\$
AR
\$
AR_FLAGS
\$
oldlib
\$
oldobjs~
\$
RANLIB
\$
oldlib"
# A language specific compiler.
CC
=
"
g
cc"
CC
=
"
/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpi
cc"
# Is the compiler the GNU compiler?
with_gcc
=
yes
...
...
@@ -274,7 +274,7 @@ wl="-Wl,"
pic_flag
=
" -fPIC -DPIC"
# Compiler flag to prevent dynamic linking.
link_static_flag
=
"
-static
"
link_static_flag
=
""
# Does compiler simultaneously support -c and -o options?
compiler_c_o
=
"yes"
...
...
@@ -8908,13 +8908,13 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
# ### BEGIN LIBTOOL TAG CONFIG: CXX
# The linker used to build libraries.
LD
=
"/usr/
bin/ld
"
LD
=
"/usr/
x86_64-suse-linux/bin/ld -m elf_x86_64
"
# Commands used to build an old-style archive.
old_archive_cmds
=
"
\$
AR
\$
AR_FLAGS
\$
oldlib
\$
oldobjs~
\$
RANLIB
\$
oldlib"
# A language specific compiler.
CC
=
"
g++
"
CC
=
"
/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicxx
"
# Is the compiler the GNU compiler?
with_gcc
=
yes
...
...
@@ -8929,7 +8929,7 @@ wl="-Wl,"
pic_flag
=
" -fPIC -DPIC"
# Compiler flag to prevent dynamic linking.
link_static_flag
=
"
-static
"
link_static_flag
=
""
# Does compiler simultaneously support -c and -o options?
compiler_c_o
=
"yes"
...
...
@@ -9039,17 +9039,17 @@ file_list_spec=""
hardcode_action
=
immediate
# The directories searched by this compiler when creating a shared library.
compiler_lib_search_dirs
=
"/u
/witkowski/local/lib /u/witkowski/local/intel/mkl/10.0.1.014/lib/3
2 /usr/lib/gcc/
i386-redhat
-linux/4.1.2
/usr/lib/gcc/i386-redhat-linux/4.1.2
/usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../.."
compiler_lib_search_dirs
=
"/u
sr/lib64 /licsoft/libraries/openmpi/1.2.6/64bit/lib /usr/lib64/gcc/x86_64-suse-linux/4.1.
2 /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2
/../../../../lib64 /lib/../lib64 /usr/lib/../lib64 /fastfs/wir/local/lib /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib
/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../.."
# Dependencies to place before and after the objects being linked to
# create a shared library.
predep_objects
=
"/usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../crti.o /usr/lib/gcc/
i386-redhat
-linux/4.1.2/crtbeginS.o"
postdep_objects
=
"/usr/lib/gcc/
i386-redhat
-linux/4.1.2/crtendS.o /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../crtn.o"
predep_objects
=
"/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../
../lib64/
crti.o /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/crtbeginS.o"
postdep_objects
=
"/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/crtendS.o /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../
../lib64/
crtn.o"
predeps
=
""
postdeps
=
"-lstdc++ -lm -lgcc_s -lc -lgcc_s"
postdeps
=
"
-lmpi_cxx -lmpi -lopen-rte -lopen-pal -libverbs -lrt -lnuma -ldl -lnsl -lutil -ldl
-lstdc++ -lm -lgcc_s
-lpthread
-lc -lgcc_s"
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path
=
"-L/u
/witkowski/local
/lib -L/
u/witkowski/local/intel/mkl/10.0.1.014/lib/3
2 -L/usr/lib/gcc/
i386-redhat
-linux/4.1.2
-L/usr/lib/gcc/i386-redhat-linux/4.1.2
-L/usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../.."
compiler_lib_search_path
=
"-L/u
sr
/lib
64
-L/
licsoft/libraries/openmpi/1.2.6/64bit/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.1.
2 -L/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2
/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/fastfs/wir/local/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib
-L/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../.."
# ### END LIBTOOL TAG CONFIG: CXX
AMDiS/src/ElInfo3d.cc
View file @
4e04364c
...
...
@@ -162,11 +162,14 @@ namespace AMDiS {
void
ElInfo3d
::
fillMacroInfo
(
const
MacroElement
*
mel
)
{
FUNCNAME
(
"ElInfo3d::fillMacroInfo()"
);
TEST_EXIT_DBG
(
mel
)(
"No macro element given!
\n
"
);
Element
*
nb
;
MacroElement
*
mnb
;
Flag
fill_opp_coords
;
macroElement
=
const_cast
<
MacroElement
*>
(
mel
);
macroElement
=
const_cast
<
MacroElement
*>
(
mel
);
element
=
const_cast
<
Element
*>
(
mel
->
getElement
());
parent
=
NULL
;
level
=
0
;
...
...
@@ -176,10 +179,9 @@ namespace AMDiS {
if
(
fillFlag
.
isSet
(
Mesh
::
FILL_COORDS
)
||
fillFlag
.
isSet
(
Mesh
::
FILL_DET
)
||
fillFlag
.
isSet
(
Mesh
::
FILL_GRD_LAMBDA
))
{
fillFlag
.
isSet
(
Mesh
::
FILL_GRD_LAMBDA
))
for
(
int
i
=
0
;
i
<
vertices
;
i
++
)
coord
[
i
]
=
mel
->
coord
[
i
];
}
int
neighbours
=
mesh
->
getGeo
(
NEIGH
);
...
...
@@ -188,19 +190,19 @@ namespace AMDiS {
fill_opp_coords
.
setFlags
(
fillFlag
&
Mesh
::
FILL_OPP_COORDS
);
for
(
int
i
=
0
;
i
<
neighbours
;
i
++
)
{
if
((
mnb
=
const_cast
<
MacroElement
*>
(
mel
->
getNeighbour
(
i
))))
{
neighbour
[
i
]
=
const_cast
<
Element
*>
(
mel
->
getNeighbour
(
i
)
->
getElement
());
nb
=
const_cast
<
Element
*>
(
neighbour
[
i
]);
if
((
mnb
=
const_cast
<
MacroElement
*>
(
mel
->
getNeighbour
(
i
))))
{
neighbour
[
i
]
=
const_cast
<
Element
*>
(
mel
->
getNeighbour
(
i
)
->
getElement
());
nb
=
const_cast
<
Element
*>
(
neighbour
[
i
]);
int
k
;
k
=
oppVertex
[
i
]
=
mel
->
getOppVertex
(
i
);
if
(
nb
->
getChild
(
0
)
&&
(
k
<
2
))
{
/*make nb nearest element.*/
if
(
k
==
1
)
{
neighbour
[
i
]
=
const_cast
<
Element
*>
(
nb
->
getChild
(
0
));
nb
=
const_cast
<
Element
*>
(
neighbour
[
i
]);
neighbour
[
i
]
=
const_cast
<
Element
*>
(
nb
->
getChild
(
0
));
nb
=
const_cast
<
Element
*>
(
neighbour
[
i
]);
}
else
{
neighbour
[
i
]
=
const_cast
<
Element
*>
(
nb
->
getChild
(
1
));
nb
=
const_cast
<
Element
*>
(
neighbour
[
i
]);
neighbour
[
i
]
=
const_cast
<
Element
*>
(
nb
->
getChild
(
1
));
nb
=
const_cast
<
Element
*>
(
neighbour
[
i
]);
}
k
=
oppVertex
[
i
]
=
3
;
if
(
fill_opp_coords
.
isAnySet
())
{
...
...
@@ -495,7 +497,7 @@ namespace AMDiS {
TEST_EXIT_DBG
(
el_old
->
getChild
(
0
))(
"missing child?
\n
"
);
element
=
const_cast
<
Element
*>
(
el_old
->
getChild
(
ichild
));
element
=
const_cast
<
Element
*>
(
el_old
->
getChild
(
ichild
));
macroElement
=
elInfoOld
->
macroElement
;
fillFlag
=
fillFlag_local
;
parent
=
el_old
;
...
...
@@ -546,7 +548,7 @@ namespace AMDiS {
/* if (nb = el_old->child[ochild]) old version */
if
(
el_old
->
getChild
(
0
)
&&
(
nb
=
const_cast
<
Element
*>
(
el_old
->
getChild
(
ochild
))))
{
(
nb
=
const_cast
<
Element
*>
(
el_old
->
getChild
(
ochild
))))
{
if
(
nb
->
getChild
(
0
))
{
/* go down one level for direct neighbour */
if
(
fill_opp_coords
.
isAnySet
())
{
...
...
@@ -558,7 +560,7 @@ namespace AMDiS {
oppCoord
[
0
][
j
]
=
(
elInfoOld
->
coord
[
ochild
][
j
]
+
elInfoOld
->
coord
[
k
][
j
])
/
2
;
}
}
(
*
neigh_local
)[
0
]
=
const_cast
<
Element
*>
(
nb
->
getChild
(
1
));
(
*
neigh_local
)[
0
]
=
const_cast
<
Element
*>
(
nb
->
getChild
(
1
));
oppVertex
[
0
]
=
3
;
}
else
{
if
(
fill_opp_coords
.
isAnySet
())
...
...
@@ -577,12 +579,12 @@ namespace AMDiS {
/*----- nb[1],nb[2] are childs of old neighbours nb_old[cv[i]] ----------*/
for
(
int
i
=
1
;
i
<
3
;
i
++
)
{
if
((
nb
=
const_cast
<
Element
*>
(
(
*
neigh_old
)[
cv
[
i
]])))
{
if
((
nb
=
const_cast
<
Element
*>
((
*
neigh_old
)[
cv
[
i
]])))
{
TEST_EXIT_DBG
(
nb
->
getChild
(
0
))(
"nonconforming triangulation
\n
"
);
int
k
;
for
(
k
=
0
;
k
<
2
;
k
++
)
{
/* look at both childs of old neighbour */
nbk
=
const_cast
<
Element
*>
(
nb
->
getChild
(
k
));
nbk
=
const_cast
<
Element
*>
(
nb
->
getChild
(
k
));
if
(
nbk
->
getDOF
(
0
)
==
el_old
->
getDOF
(
ichild
))
{
/* opp. vertex */
dof
=
const_cast
<
int
*>
(
nb
->
getDOF
(
elInfoOld
->
oppVertex
[
cv
[
i
]]));
...
...
@@ -625,7 +627,7 @@ namespace AMDiS {
// periodic ?
if
(
k
==
2
||
ov
==
-
1
)
{
for
(
k
=
0
;
k
<
2
;
k
++
)
{
/* look at both childs of old neighbour */
nbk
=
const_cast
<
Element
*>
(
nb
->
getChild
(
k
));
nbk
=
const_cast
<
Element
*>
(
nb
->
getChild
(
k
));
if
(
nbk
->
getDOF
(
0
)
==
el_old
->
getDOF
(
ichild
)
||
mesh
->
associated
(
nbk
->
getDOF
(
0
,
0
),
el_old
->
getDOF
(
ichild
,
0
)))
{
/* opp. vertex */
...
...
AMDiS/src/MacroReader.cc
View file @
4e04364c
...
...
@@ -24,7 +24,7 @@ namespace AMDiS {
std
::
string
periodicFile
,
int
check
)
{
FUNCNAME
(
"M
esh
::readMacro()"
);
FUNCNAME
(
"M
acroReader
::readMacro()"
);
TEST_EXIT
(
filename
!=
""
)(
"no file specified; filename NULL pointer
\n
"
);
...
...
@@ -124,6 +124,14 @@ namespace AMDiS {
ElementData
*
ld1
=
element1
->
getElementData
();
ElementData
*
ld2
=
element2
->
getElementData
();
TEST_EXIT_DBG
(
ld1
)
(
"Should not happen: no element data pointer in macro element %d!
\n
"
,
element1
->
getIndex
());
TEST_EXIT_DBG
(
ld2
)
(
"Should not happen: no element data pointer in macro element %d!
\n
"
,
element2
->
getIndex
());
LeafDataPeriodic
*
ldp1
=
dynamic_cast
<
LeafDataPeriodic
*>
(
ld1
->
getElementData
(
PERIODIC
));
LeafDataPeriodic
*
ldp2
=
...
...
@@ -1172,7 +1180,7 @@ namespace AMDiS {
Flag
fill_flag
;
int
error_detected
=
0
;
MSG
(
"
c
hecking mesh
\n
"
);
MSG
(
"
C
hecking mesh
...
\n
"
);
fill_flag
=
Mesh
::
CALL_EVERY_EL_PREORDER
|
Mesh
::
FILL_NEIGH
|
Mesh
::
FILL_BOUND
;
...
...
AMDiS/src/MatrixVector.h
View file @
4e04364c
...
...
@@ -81,7 +81,9 @@ namespace AMDiS {
/// Assignement operator
inline
const
Vector
<
T
>&
operator
=
(
const
Vector
<
T
>&
rhs
)
{
TEST_EXIT_DBG
(
rhs
.
size
==
size
)(
"invalid size
\n
"
);
TEST_EXIT_DBG
(
rhs
.
size
==
size
)
(
"Invalid sizes %d != %d!
\n
"
,
rhs
.
size
,
size
);
T
*
rhsIt
,
*
thisIt
;
for
(
rhsIt
=
rhs
.
begin
(),
thisIt
=
this
->
begin
();
rhsIt
!=
rhs
.
end
();
...
...
AMDiS/src/Mesh.cc
View file @
4e04364c
...
...
@@ -614,12 +614,12 @@ namespace AMDiS {
TEST_EXIT_DBG
(
elementPrototype
)(
"no element prototype
\n
"
);
Element
*
el
=
parent
?
parent
->
clone
()
:
elementPrototype
->
clone
();
if
(
!
parent
&&
elementDataPrototype
)
el
->
setElementData
(
elementDataPrototype
->
clone
());
else
el
->
setElementData
(
NULL
);
// must be done in ElementData::refineElementData()
return
el
;
}
...
...
@@ -747,7 +747,7 @@ namespace AMDiS {
*
(
g_sp
)
=
s
;
if
(
dim
==
3
)
MSG
(
"
o
utside finest level on el %d: s
=
%.3e
\n
"
,
el
->
getIndex
(),
s
);
MSG
(
"
O
utside finest level on el %d: s
=
%.3e
\n
"
,
el
->
getIndex
(),
s
);
return
false
;
/* ??? */
}
else
{
...
...
@@ -1148,13 +1148,13 @@ namespace AMDiS {
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
if
(
checkParallelMacroFile
(
macroFilename
,
periodicFilename
,
check
))
{
std
::
string
newPeriodicFilename
=
""
;
if
(
periodicFilename
!=
""
)
newPeriodicFilename
=
periodicFilename
+
".tmp"
;
std
::
string
newPeriodicFilename
=
""
;
if
(
periodicFilename
!=
""
)
newPeriodicFilename
=
periodicFilename
+
".tmp"
;
macroFileInfo
=
MacroReader
::
readMacro
(
macroFilename
+
".tmp"
,
this
,
newPeriodicFilename
,
check
);
macroFileInfo
=
MacroReader
::
readMacro
(
macroFilename
+
".tmp"
,
this
,
newPeriodicFilename
,
check
);
}
else
{
macroFileInfo
=
MacroReader
::
readMacro
(
macroFilename
,
this
,
periodicFilename
,
check
);
...
...
@@ -1193,6 +1193,7 @@ namespace AMDiS {
// === Create a temporary mesh and load the macro file to it. ===
Mesh
testMesh
(
name
,
dim
);
testMesh
.
setElementDataPrototype
(
new
LeafDataEstimatableVec
(
new
LeafDataCoarsenableVec
));
DOFAdmin
*
localAdmin
=
new
DOFAdmin
(
&
testMesh
,
admin
[
0
]
->
getName
());
localAdmin
->
setNumberOfDOFs
(
admin
[
0
]
->
getNumberOfDOFs
());
testMesh
.
addDOFAdmin
(
localAdmin
);
...
...
AMDiS/src/Mesh.h
View file @
4e04364c
...
...
@@ -240,6 +240,11 @@ namespace AMDiS {
return
macroElements
[
i
];
}
std
::
deque
<
MacroElement
*>&
getMacroElements
()
{
return
macroElements
;
}
/// Returns an iterator to the end of \ref macroElements
inline
std
::
deque
<
MacroElement
*>::
iterator
endOfMacroElements
()
{
...
...
AMDiS/src/Traverse.cc
View file @
4e04364c
...
...
@@ -26,6 +26,9 @@ namespace AMDiS {
traverse_level
=
level
;
traverse_fill_flag
=
fill_flag
;
TEST_EXIT_DBG
(
mesh
)(
"No mesh!
\n
"
);
TEST_EXIT_DBG
(
traverse_mesh
->
getMacroElements
().
size
()
>
0
)(
"Mesh is empty!
\n
"
);
if
(
stack_size
<
1
)
enlargeTraverseStack
();
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment