Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Backofen, Rainer
amdis
Commits
1ef517bb
Commit
1ef517bb
authored
Jul 07, 2009
by
Thomas Witkowski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Work on pdd.
parent
9b510dbe
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
104 additions
and
82 deletions
+104
-82
AMDiS/bin/Makefile.am
AMDiS/bin/Makefile.am
+1
-1
AMDiS/bin/Makefile.in
AMDiS/bin/Makefile.in
+1
-1
AMDiS/libtool
AMDiS/libtool
+33
-33
AMDiS/src/Operator.cc
AMDiS/src/Operator.cc
+4
-5
AMDiS/src/ParallelDomainProblem.cc
AMDiS/src/ParallelDomainProblem.cc
+61
-42
AMDiS/src/ParallelDomainProblem.h
AMDiS/src/ParallelDomainProblem.h
+4
-0
No files found.
AMDiS/bin/Makefile.am
View file @
1ef517bb
...
...
@@ -31,7 +31,7 @@ if USE_PARALLEL_DOMAIN_AMDIS
PARALLEL_AMDIS_SOURCES
+=
\
$(PARALLEL_DIR)
/ParallelDomainProblem.h
$(PARALLEL_DIR)
/ParallelDomainProblem.cc
libamdis_la_CXXFLAGS
+=
-DHAVE_PARALLEL_DOMAIN_AMDIS
=
1
AMDIS_INCLUDES
+=
-I
/
work/home7
/witkowsk/local/include
AMDIS_INCLUDES
+=
-I
/
u/witkowski/local/petsc-3.0.0-p4/include
-I
/u
/witkowsk
i
/local/
petsc-3.0.0-p4/linux-gnu-c-debug/
include
endif
if
ENABLE_UMFPACK
...
...
AMDiS/bin/Makefile.in
View file @
1ef517bb
...
...
@@ -41,7 +41,7 @@ host_triplet = @host@
@USE_PARALLEL_DOMAIN_AMDIS_TRUE@
$(PARALLEL_DIR)
/ParallelDomainProblem.h
$(PARALLEL_DIR)
/ParallelDomainProblem.cc
@USE_PARALLEL_DOMAIN_AMDIS_TRUE@
am__append_3
=
-DHAVE_PARALLEL_DOMAIN_AMDIS
=
1
@USE_PARALLEL_DOMAIN_AMDIS_TRUE@
am__append_4
=
-I
/
work/home7
/witkowsk/local/include
@USE_PARALLEL_DOMAIN_AMDIS_TRUE@
am__append_4
=
-I
/
u/witkowski/local/petsc-3.0.0-p4/include
-I
/u
/witkowsk
i
/local/
petsc-3.0.0-p4/linux-gnu-c-debug/
include
@ENABLE_UMFPACK_TRUE@
am__append_5
=
-DHAVE_UMFPACK
=
1
-DMTL_HAS_UMFPACK
@ENABLE_UMFPACK_TRUE@
am__append_6
=
-I
$(LIB_DIR)
/UFconfig
\
@ENABLE_UMFPACK_TRUE@
-I
$(LIB_DIR)
/AMD/Include
\
...
...
AMDiS/libtool
View file @
1ef517bb
...
...
@@ -30,10 +30,10 @@
# the same distribution terms that you use for the rest of that program.
# A sed program that does not truncate output.
SED
=
"/
usr/
bin/sed"
SED
=
"/bin/sed"
# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed
=
"/
usr/
bin/sed -e 1s/^X//"
Xsed
=
"/bin/sed -e 1s/^X//"
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
...
...
@@ -44,7 +44,7 @@ available_tags=" CXX F77"
# ### BEGIN LIBTOOL CONFIG
# Libtool was configured on host
p2d072
:
# Libtool was configured on host
NWRW15
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -66,12 +66,12 @@ fast_install=yes
# The host system.
host_alias
=
host
=
x86_64-unknown
-linux-gnu
host
=
i686-pc
-linux-gnu
host_os
=
linux-gnu
# The build system.
build_alias
=
build
=
x86_64-unknown
-linux-gnu
build
=
i686-pc
-linux-gnu
build_os
=
linux-gnu
# An echo program that does not interpret backslashes.
...
...
@@ -82,25 +82,25 @@ AR="ar"
AR_FLAGS
=
"cru"
# A C compiler.
LTCC
=
"/
licsoft/libraries
/openmpi/1.2.
6/64bit
/bin/mpicc"
LTCC
=
"/
usr/lib
/openmpi/1.2.
7-gcc/
/bin/mpicc"
# LTCC compiler flags.
LTCFLAGS
=
"-g -O2"
# A language-specific compiler.
CC
=
"/
licsoft/libraries
/openmpi/1.2.
6/64bit
/bin/mpicc"
CC
=
"/
usr/lib
/openmpi/1.2.
7-gcc/
/bin/mpicc"
# Is the compiler the GNU C compiler?
with_gcc
=
yes
gcc_dir
=
`
gcc
-print-file-name
=
.
|
/usr
/bin/sed
's,/\.$,,'
`
gcc_dir
=
`
gcc
-print-file-name
=
.
| /bin/sed
's,/\.$,,'
`
gcc_ver
=
`
gcc
-dumpversion
`
# An ERE matcher.
EGREP
=
"grep -E"
# The linker used to build libraries.
LD
=
"/usr/
x86_64-suse-linux/bin/ld -m elf_x86_64
"
LD
=
"/usr/
bin/ld
"
# Whether we need hard or soft links.
LN_S
=
"ln -s"
...
...
@@ -328,10 +328,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs
=
unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec
=
`
echo
"
/lib64 /usr/lib64 /usr/local/lib64
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
sys_lib_search_path_spec
=
`
echo
"
/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/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../ /lib/i386-redhat-linux/4.1.2/ /lib/ /usr/lib/i386-redhat-linux/4.1.2/ /usr/lib/
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec
=
"/lib
64
/usr/lib
64
/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.9
9
/
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
"
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
lib/octave-
2.9.9 /
usr/lib/qt-3.3/lib
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
@@ -6763,7 +6763,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
p2d072
:
# Libtool was configured on host
NWRW15
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -6785,12 +6785,12 @@ fast_install=yes
# The host system.
host_alias
=
host
=
x86_64-unknown
-linux-gnu
host
=
i686-pc
-linux-gnu
host_os
=
linux-gnu
# The build system.
build_alias
=
build
=
x86_64-unknown
-linux-gnu
build
=
i686-pc
-linux-gnu
build_os
=
linux-gnu
# An echo program that does not interpret backslashes.
...
...
@@ -6801,25 +6801,25 @@ AR="ar"
AR_FLAGS
=
"cru"
# A C compiler.
LTCC
=
"/
licsoft/libraries
/openmpi/1.2.
6/64bit
/bin/mpicc"
LTCC
=
"/
usr/lib
/openmpi/1.2.
7-gcc/
/bin/mpicc"
# LTCC compiler flags.
LTCFLAGS
=
"-g -O2"
# A language-specific compiler.
CC
=
"/
licsoft/libraries
/openmpi/1.2.
6/64bit
/bin/mpiCC"
CC
=
"/
usr/lib
/openmpi/1.2.
7-gcc/
/bin/mpiCC"
# Is the compiler the GNU C compiler?
with_gcc
=
yes
gcc_dir
=
`
gcc
-print-file-name
=
.
|
/usr
/bin/sed
's,/\.$,,'
`
gcc_dir
=
`
gcc
-print-file-name
=
.
| /bin/sed
's,/\.$,,'
`
gcc_ver
=
`
gcc
-dumpversion
`
# An ERE matcher.
EGREP
=
"grep -E"
# The linker used to build libraries.
LD
=
"/usr/
x86_64-suse-linux/bin/ld -m elf_x86_64
"
LD
=
"/usr/
bin/ld
"
# Whether we need hard or soft links.
LN_S
=
"ln -s"
...
...
@@ -6948,11 +6948,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects
=
`
echo
"/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"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
predep_objects
=
`
echo
"/usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../crti.o /usr/lib/gcc/
i386-redhat
-linux/4.1.2/crtbeginS.o"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects
=
`
echo
"/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"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
postdep_objects
=
`
echo
"/usr/lib/gcc/
i386-redhat
-linux/4.1.2/crtendS.o /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../crtn.o"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Dependencies to place before the objects being linked to create a
# shared library.
...
...
@@ -6960,11 +6960,11 @@ predeps=""
# Dependencies to place after the objects being linked to create a
# shared library.
postdeps
=
"-lmpi_cxx -lmpi -lopen-rte -lopen-pal
-libverbs -lrt -lnuma
-ldl -lnsl -lutil -ldl -lstdc++ -lm -lgcc_s -lpthread -lc -lgcc_s"
postdeps
=
"-lmpi_cxx -lmpi -lopen-rte -lopen-pal -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
=
`
echo
"-L/usr/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/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/../../.."
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
compiler_lib_search_path
=
`
echo
"-L/usr/lib
/openmpi/1.2.7-gcc/lib
-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/../../.."
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Method to check whether dependent libraries are shared objects.
deplibs_check_method
=
"pass_all"
...
...
@@ -7044,10 +7044,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs
=
unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec
=
`
echo
"
/lib64 /usr/lib64 /usr/local/lib64
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
sys_lib_search_path_spec
=
`
echo
"
/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/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../ /lib/i386-redhat-linux/4.1.2/ /lib/ /usr/lib/i386-redhat-linux/4.1.2/ /usr/lib/
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec
=
"/lib
64
/usr/lib
64
/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.9
9
/
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
"
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
lib/octave-
2.9.9 /
usr/lib/qt-3.3/lib
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
@@ -7071,7 +7071,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host
p2d072
:
# Libtool was configured on host
NWRW15
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -7093,12 +7093,12 @@ fast_install=yes
# The host system.
host_alias
=
host
=
x86_64-unknown
-linux-gnu
host
=
i686-pc
-linux-gnu
host_os
=
linux-gnu
# The build system.
build_alias
=
build
=
x86_64-unknown
-linux-gnu
build
=
i686-pc
-linux-gnu
build_os
=
linux-gnu
# An echo program that does not interpret backslashes.
...
...
@@ -7109,7 +7109,7 @@ AR="ar"
AR_FLAGS
=
"cru"
# A C compiler.
LTCC
=
"/
licsoft/libraries
/openmpi/1.2.
6/64bit
/bin/mpicc"
LTCC
=
"/
usr/lib
/openmpi/1.2.
7-gcc/
/bin/mpicc"
# LTCC compiler flags.
LTCFLAGS
=
"-g -O2"
...
...
@@ -7118,16 +7118,16 @@ LTCFLAGS="-g -O2"
CC
=
"g77"
# Is the compiler the GNU C compiler?
with_gcc
=
with_gcc
=
yes
gcc_dir
=
`
gcc
-print-file-name
=
.
|
/usr
/bin/sed
's,/\.$,,'
`
gcc_dir
=
`
gcc
-print-file-name
=
.
| /bin/sed
's,/\.$,,'
`
gcc_ver
=
`
gcc
-dumpversion
`
# An ERE matcher.
EGREP
=
"grep -E"
# The linker used to build libraries.
LD
=
"/usr/
x86_64-suse-linux/bin/ld -m elf_x86_64
"
LD
=
"/usr/
bin/ld
"
# Whether we need hard or soft links.
LN_S
=
"ln -s"
...
...
@@ -7355,10 +7355,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs
=
unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec
=
`
echo
"
/lib64 /usr/lib64 /usr/local/lib64
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
sys_lib_search_path_spec
=
`
echo
"
/usr/lib/gcc/i386-redhat-linux/3.4.6/ /usr/lib/gcc/i386-redhat-linux/3.4.6/ /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../i386-redhat-linux/lib/i386-redhat-linux/3.4.6/ /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../i386-redhat-linux/3.4.6/ /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../ /lib/i386-redhat-linux/3.4.6/ /lib/ /usr/lib/i386-redhat-linux/3.4.6/ /usr/lib/
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec
=
"/lib
64
/usr/lib
64
/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.9
9
/
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
"
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
lib/octave-
2.9.9 /
usr/lib/qt-3.3/lib
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
AMDiS/src/Operator.cc
View file @
1ef517bb
...
...
@@ -257,8 +257,7 @@ namespace AMDiS {
double
val
=
0.0
;
for
(
int
j
=
0
;
j
<
dimOfWorld
;
j
++
)
val
+=
Lambda
[
i
][
j
]
*
b
[
j
];
val
*=
factor
;
Lb
[
i
]
+=
val
;
Lb
[
i
]
+=
val
*
factor
;
}
}
...
...
@@ -862,9 +861,9 @@ namespace AMDiS {
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
{
if
(
b
)
lb
(
Lambda
,
*
b
,
Lb
[
iq
],
(
vec1AtQPs
[
iq
]
)
*
(
vec2AtQPs
[
iq
])
)
;
lb
(
Lambda
,
*
b
,
Lb
[
iq
],
vec1AtQPs
[
iq
]
*
vec2AtQPs
[
iq
]);
else
l1
(
Lambda
,
Lb
[
iq
],
(
vec1AtQPs
[
iq
]
)
*
(
vec2AtQPs
[
iq
])
)
;
l1
(
Lambda
,
Lb
[
iq
],
vec1AtQPs
[
iq
]
*
vec2AtQPs
[
iq
]);
}
}
...
...
@@ -877,7 +876,7 @@ namespace AMDiS {
{
if
(
grdUhAtQP
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
result
[
iq
]
+=
fac
*
(
vec1AtQPs
[
iq
]
)
*
(
vec2AtQPs
[
iq
]
)
*
((
*
b
)
*
grdUhAtQP
[
iq
]);
result
[
iq
]
+=
fac
*
vec1AtQPs
[
iq
]
*
vec2AtQPs
[
iq
]
*
((
*
b
)
*
grdUhAtQP
[
iq
]);
}
Vec3FctAtQP_FOT
::
Vec3FctAtQP_FOT
(
DOFVectorBase
<
double
>
*
dv1
,
DOFVectorBase
<
double
>
*
dv2
,
DOFVectorBase
<
double
>
*
dv3
,
...
...
AMDiS/src/ParallelDomainProblem.cc
View file @
1ef517bb
#include <boost/lambda/lambda.hpp>
#include <algorithm>
#include "ParallelDomainProblem.h"
#include "ProblemScal.h"
#include "ProblemInstat.h"
...
...
@@ -16,6 +19,8 @@
#include "petscksp.h"
namespace
AMDiS
{
using
namespace
boost
::
lambda
;
PetscErrorCode
myKSPMonitor
(
KSP
ksp
,
PetscInt
iter
,
PetscReal
rnorm
,
void
*
)
{
...
...
@@ -79,7 +84,7 @@ namespace AMDiS {
// Set of all DOFs of the rank.
std
::
vector
<
const
DegreeOfFreedom
*>
rankDOFs
;
// Number of DOFs in ranks partition that are owned by the rank.
int
nRankDOFs
=
0
;
nRankDOFs
=
0
;
// Number of all DOFs in the macro mesh.
int
nOverallDOFs
=
0
;
...
...
@@ -114,7 +119,6 @@ namespace AMDiS {
admin
.
setFirstHole
(
mapLocalGlobalDOFs
.
size
());
}
// === Global refinements. ===
int
globalRefinement
=
0
;
...
...
@@ -193,8 +197,8 @@ namespace AMDiS {
for
(
icursor_type
icursor
=
begin
<
nz
>
(
cursor
),
icend
=
end
<
nz
>
(
cursor
);
icursor
!=
icend
;
++
icursor
)
if
(
value
(
*
icursor
)
!=
0.0
)
{
int
r
=
mapLocalGlobalDOFs
[
row
(
*
icursor
)];
int
c
=
mapLocalGlobalDOFs
[
col
(
*
icursor
)];
int
r
=
mapLocalGlobalDOFs
[
row
(
*
icursor
)];
int
c
=
mapLocalGlobalDOFs
[
col
(
*
icursor
)];
double
v
=
value
(
*
icursor
);
MatSetValues
(
petscMatrix
,
1
,
&
r
,
1
,
&
c
,
&
v
,
ADD_VALUES
);
...
...
@@ -217,31 +221,37 @@ namespace AMDiS {
void
ParallelDomainBase
::
solvePetscMatrix
(
DOFVector
<
double
>
*
vec
)
{
FUNCNAME
(
"ParallelDomainBase::solvePetscMatrix()"
);
KSP
ksp
;
PC
pc
;
KSPCreate
(
PETSC_COMM_WORLD
,
&
ksp
);
KSPSetOperators
(
ksp
,
petscMatrix
,
petscMatrix
,
DIFFERENT_NONZERO_PATTERN
);
KSPGetPC
(
ksp
,
&
pc
);
PCSetType
(
pc
,
PC
JACOBI
);
PCSetType
(
pc
,
PC
NONE
);
KSPSetTolerances
(
ksp
,
1.e-7
,
PETSC_DEFAULT
,
PETSC_DEFAULT
,
PETSC_DEFAULT
);
KSPSetType
(
ksp
,
KSPBCGS
);
// KSPSetType(ksp, KSPBCGS);
KSPSetType
(
ksp
,
KSPCG
);
KSPMonitorSet
(
ksp
,
myKSPMonitor
,
PETSC_NULL
,
0
);
KSPSolve
(
ksp
,
petscRhsVec
,
petscSolVec
);
#if (DEBUG != 0)
int
size
=
0
;
VecGetLocalSize
(
petscSolVec
,
&
size
);
TEST_EXIT
(
size
==
nRankDOFs
)(
"Vector and rank DOFs does not fit together!
\n
"
);
#endif
PetscScalar
*
vecPointer
;
VecGetArray
(
petscSolVec
,
&
vecPointer
);
vec
->
set
(
1.0
);
DOFVector
<
double
>::
Iterator
dofIt
(
vec
,
USED_DOFS
);
int
counter
=
0
;
for
(
dofIt
.
reset
();
!
dofIt
.
end
();
++
dofIt
)
{
*
dofIt
=
vecPointer
[
mapGlobalLocalDOFs
[
rstart
+
counter
]];
counter
++
;
}
for
(
int
i
=
0
;
i
<
nRankDOFs
;
i
++
)
(
*
vec
)[
mapGlobalLocalDOFs
[
i
]]
=
vecPointer
[
i
];
VecRestoreArray
(
petscSolVec
,
&
vecPointer
);
#if
0
#if
1
std
::
vector
<
double
*>
sendBuffers
(
sendDofs
.
size
());
std
::
vector
<
double
*>
recvBuffers
(
recvDofs
.
size
());
...
...
@@ -256,7 +266,7 @@ namespace AMDiS {
sendBuffers
[
i
]
=
new
double
[
nSendDOFs
];
for
(
int
j
=
0
;
j
<
nSendDOFs
;
j
++
)
sendBuffers[i][j] = (*vec)[(sendIt->second)[j]
[0]
];
sendBuffers
[
i
][
j
]
=
(
*
vec
)[
*
(
(
sendIt
->
second
)[
j
]
)
];
request
[
requestCounter
++
]
=
mpiComm
.
Isend
(
sendBuffers
[
i
],
nSendDOFs
,
MPI_DOUBLE
,
sendIt
->
first
,
0
);
...
...
@@ -281,9 +291,8 @@ namespace AMDiS {
for
(
RankToDofContainer
::
iterator
recvIt
=
recvDofs
.
begin
();
recvIt
!=
recvDofs
.
end
();
++
recvIt
,
i
++
)
{
for (int j = 0; j < static_cast<int>(recvIt->second.size()); j++)
{
for
(
int
j
=
0
;
j
<
static_cast
<
int
>
(
recvIt
->
second
.
size
());
j
++
)
(
*
vec
)[
*
(
recvIt
->
second
)[
j
]]
=
recvBuffers
[
i
][
j
];
}
delete
[]
recvBuffers
[
i
];
}
...
...
@@ -531,8 +540,9 @@ namespace AMDiS {
rstart
-=
nRankDOFs
;
typedef
std
::
map
<
const
DegreeOfFreedom
*
,
DegreeOfFreedom
>
DofIndexMap
;
DofIndexMap
rankDofsNewLocalIndex
,
rankDofsNewGlobalIndex
;
rankDofsNewLocalIndex
.
clear
();
rankDofsNewGlobalIndex
.
clear
();
int
i
=
0
;
for
(
DofContainer
::
iterator
dofIt
=
rankAllDofs
.
begin
();
dofIt
!=
rankAllDofs
.
end
();
++
dofIt
)
{
...
...
@@ -547,20 +557,7 @@ namespace AMDiS {
i
++
;
}
if
(
mpiRank
==
0
)
{
for
(
DofContainer
::
iterator
dofIt
=
rankAllDofs
.
begin
();
dofIt
!=
rankAllDofs
.
end
();
++
dofIt
)
{
std
::
cout
<<
"OLD DOF = "
<<
**
dofIt
<<
" NEW L DOF = "
<<
rankDofsNewLocalIndex
[
*
dofIt
];
if
(
rankDofsNewGlobalIndex
.
find
(
*
dofIt
)
!=
rankDofsNewGlobalIndex
.
end
())
std
::
cout
<<
" NEW G DOF = "
<<
rankDofsNewGlobalIndex
[
*
dofIt
];
std
::
cout
<<
std
::
endl
;
}
}
exit
(
0
);
// === Create information which dof indices must be send and which must ===
// === be received. ===
...
...
@@ -573,8 +570,7 @@ namespace AMDiS {
// another rank.
std
::
map
<
int
,
int
>
recvNewDofs
;
for
(
DofToRank
::
iterator
it
=
boundaryDOFs
.
begin
();
it
!=
boundaryDOFs
.
end
();
++
it
)
{
for
(
DofToRank
::
iterator
it
=
boundaryDOFs
.
begin
();
it
!=
boundaryDOFs
.
end
();
++
it
)
{
if
(
it
->
second
==
mpiRank
)
{
// If the boundary dof is a rank dof, it must be send to other ranks.
...
...
@@ -591,8 +587,8 @@ namespace AMDiS {
}
}
}
else
{
// If the boundary dof is not a rank dof, its new dof index
,
and later
// also the dof values
,
must be received from another rank.
// If the boundary dof is not a rank dof, its new dof index
(
and later
// also the dof values
)
must be received from another rank.
if
(
recvNewDofs
.
find
(
it
->
second
)
==
recvNewDofs
.
end
())
recvNewDofs
[
it
->
second
]
=
1
;
else
...
...
@@ -651,12 +647,8 @@ namespace AMDiS {
// === Delete send buffers. ===
i
=
0
;
for
(
std
::
map
<
int
,
std
::
map
<
const
DegreeOfFreedom
*
,
DegreeOfFreedom
>
>::
iterator
sendIt
=
sendNewDofs
.
begin
();
sendIt
!=
sendNewDofs
.
end
();
++
sendIt
,
i
++
)
delete
[]
sendBuffers
[
i
];
for
(
int
j
=
0
;
j
<
static_cast
<
int
>
(
sendBuffers
.
size
());
j
++
)
delete
[]
sendBuffers
[
j
];
// === Change dof indices for rank partition. ===
...
...
@@ -723,6 +715,33 @@ namespace AMDiS {
mapLocalGlobalDOFs
[
localDof
]
=
globalDof
;
mapGlobalLocalDOFs
[
globalDof
]
=
localDof
;
}
#if 0
if (mpiRank == 0) {
for (DofContainer::iterator dofIt = recvDofs[1].begin();
dofIt != recvDofs[1].end(); ++dofIt) {
std::cout << "RECV " << **dofIt << std::endl;
}
}
exit(0);
#endif
#if 0
if (mpiRank == 0) {
for (DofContainer::iterator dofIt = rankAllDofs.begin();
dofIt != rankAllDofs.end(); ++dofIt) {
std::cout << "DOF = " << **dofIt << " GLOBAL index = "
<< rankDofsNewGlobalIndex[*dofIt] << " FROM MAP = "
<< mapLocalGlobalDOFs[**dofIt]
<< " AND BACK "
<< mapGlobalLocalDOFs[mapLocalGlobalDOFs[**dofIt]]
<< std::endl;
}
}
exit(0);
#endif
}
...
...
AMDiS/src/ParallelDomainProblem.h
View file @
1ef517bb
...
...
@@ -72,6 +72,8 @@ namespace AMDiS {
typedef
std
::
map
<
int
,
DofContainer
>
ElementIdxToDofs
;
typedef
std
::
map
<
const
DegreeOfFreedom
*
,
DegreeOfFreedom
>
DofIndexMap
;
public:
ParallelDomainBase
(
const
std
::
string
&
name
,
ProblemIterationInterface
*
iterationIF
,
...
...
@@ -361,6 +363,8 @@ namespace AMDiS {
DofToBool
isRankDof
;
int
rstart
;
DofIndexMap
rankDofsNewLocalIndex
,
rankDofsNewGlobalIndex
;
};
bool
cmpDofsByValue
(
const
DegreeOfFreedom
*
dof1
,
const
DegreeOfFreedom
*
dof2
)
...
...
Write
Preview
Markdown
is supported
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