Commit b49c9c79 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

Bugfix in SurfaceQuadrature.

parent a9ca5edc
......@@ -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 deimos103:
# 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,22 +82,25 @@ AR="ar"
AR_FLAGS="cru"
# A C compiler.
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
LTCC="gcc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
# A language-specific compiler.
CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
CC="gcc"
# Is the compiler the GNU C compiler?
with_gcc=yes
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"
......@@ -171,7 +174,7 @@ dlopen_self=unknown
dlopen_self_static=unknown
# Compiler flag to prevent dynamic linking.
link_static_flag=""
link_static_flag="-static"
# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"
......@@ -229,11 +232,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects=""
predep_objects=`echo "" | $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=""
postdep_objects=`echo "" | $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.
......@@ -245,7 +248,7 @@ postdeps=""
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""
compiler_lib_search_path=`echo "" | $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"
......@@ -325,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=" /usr/lib64/gcc/x86_64-suse-linux/4.1.2/ /usr/lib/gcc/x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/../lib64/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/ /lib/x86_64-suse-linux/4.1.2/ /lib/../lib64/ /usr/lib/x86_64-suse-linux/4.1.2/ /usr/lib/../lib64/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../ /lib/ /usr/lib/"
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 /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 "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib /usr/lib/qt4/lib "
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""
......@@ -6760,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 deimos103:
# Libtool was configured on host NWRW15:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -6782,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.
......@@ -6798,22 +6801,25 @@ AR="ar"
AR_FLAGS="cru"
# A C compiler.
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
LTCC="gcc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
# A language-specific compiler.
CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpiCC"
CC="g++"
# Is the compiler the GNU C compiler?
with_gcc=yes
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"
......@@ -6887,7 +6893,7 @@ dlopen_self=unknown
dlopen_self_static=unknown
# Compiler flag to prevent dynamic linking.
link_static_flag=""
link_static_flag="-static"
# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"
......@@ -6942,11 +6948,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects="/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-suse-linux/4.1.2/crtbeginS.o"
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="/usr/lib64/gcc/x86_64-suse-linux/4.1.2/crtendS.o /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/crtn.o"
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.
......@@ -6954,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="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path="-L/usr/lib64 -L/licsoft/libraries/openmpi/1.2.6/64bit/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.1.2 -L/usr/lib64/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/lib64/gcc/x86_64-suse-linux/4.1.2/../../.."
compiler_lib_search_path=`echo "-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"
......@@ -7038,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=" /usr/lib64/gcc/x86_64-suse-linux/4.1.2/ /usr/lib/gcc/x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/../lib64/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/ /lib/x86_64-suse-linux/4.1.2/ /lib/../lib64/ /usr/lib/x86_64-suse-linux/4.1.2/ /usr/lib/../lib64/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../ /lib/ /usr/lib/"
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 /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 "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib /usr/lib/qt4/lib "
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""
......@@ -7065,7 +7071,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host deimos103:
# Libtool was configured on host NWRW15:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -7087,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.
......@@ -7103,7 +7109,7 @@ AR="ar"
AR_FLAGS="cru"
# A C compiler.
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
LTCC="gcc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
......@@ -7112,13 +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=. | /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"
......@@ -7250,11 +7259,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects=""
predep_objects=`echo "" | $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=""
postdep_objects=`echo "" | $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.
......@@ -7266,7 +7275,7 @@ postdeps=""
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""
compiler_lib_search_path=`echo "" | $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"
......@@ -7346,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=" /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/ /usr/lib/gcc/x86_64-suse-linux/3.3.5/ /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../x86_64-suse-linux/lib/x86_64-suse-linux/3.3.5/ /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../x86_64-suse-linux/lib/ /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../x86_64-suse-linux/3.3.5/ /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../ /lib/x86_64-suse-linux/3.3.5/ /lib/ /usr/lib/x86_64-suse-linux/3.3.5/ /usr/lib/"
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 /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 "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib /usr/lib/qt4/lib "
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""
......
......@@ -17,54 +17,46 @@ namespace AMDiS {
: BoundaryCondition(type, rowFESpace_, colFESpace_),
neumannOperators(NULL),
robinOperators(NULL)
//matrix(dofMatrix)
{
int i, k, dim = rowFESpace->getMesh()->getDim();
int dim = rowFESpace->getMesh()->getDim();
// create barycentric coords for each vertex of each side
const Element *refElement = Global::getReferenceElement(dim);
coords = new VectorOfFixVecs<DimVec<double> >*[dim+1];
// for all element sides
for(i=0; i < dim+1; i++) {
coords[i] =
new VectorOfFixVecs<DimVec<double> >(dim,
dim,
DEFAULT_VALUE,
DimVec<double>(dim,
DEFAULT_VALUE,
0.0));
for (int i = 0; i < dim+1; i++) {
coords[i] = new VectorOfFixVecs<DimVec<double> >(dim, dim, DEFAULT_VALUE,
DimVec<double>(dim,
DEFAULT_VALUE,
0.0));
// for each vertex of the side
for(k=0; k < dim; k++) {
int index =
refElement->getVertexOfPosition(INDEX_OF_DIM(dim-1, dim), i, k);
for (int k = 0; k < dim; k++) {
int index = refElement->getVertexOfPosition(INDEX_OF_DIM(dim - 1, dim), i, k);
(*coords[i])[k][index] = 1.0;
}
}
if(j) {
if (j) {
Operator *jOp = new Operator(Operator::VECTOR_OPERATOR, rowFESpace);
jOp->addZeroOrderTerm(new CoordsAtQP_ZOT(j));
neumannOperators = new DimVec<SurfaceOperator*>(dim, NO_INIT);
for(i=0; i < dim+1; i++) {
for (int i = 0; i < dim + 1; i++)
(*neumannOperators)[i] = new SurfaceOperator(jOp, *coords[i]);
}
delete jOp;
}
if(alpha) {
Operator *alphaOp = new Operator(Operator::MATRIX_OPERATOR,
rowFESpace, colFESpace);
if (alpha) {
Operator *alphaOp =
new Operator(Operator::MATRIX_OPERATOR, rowFESpace, colFESpace);
alphaOp->addZeroOrderTerm(new CoordsAtQP_ZOT(alpha));
robinOperators = new DimVec<SurfaceOperator*>(dim, NO_INIT);
for(i=0; i < dim + 1; i++) {
for (int i = 0; i < dim + 1; i++)
(*robinOperators)[i] = new SurfaceOperator(alphaOp, *coords[i]);
}
delete alphaOp;
}
}
......@@ -77,54 +69,46 @@ namespace AMDiS {
: BoundaryCondition(type, rowFESpace_, colFESpace_),
neumannOperators(NULL),
robinOperators(NULL)
//matrix(dofMatrix)
{
int i, k, dim = rowFESpace->getMesh()->getDim();
int dim = rowFESpace->getMesh()->getDim();
// create barycentric coords for each vertex of each side
const Element *refElement = Global::getReferenceElement(dim);
coords = new VectorOfFixVecs<DimVec<double> >*[dim+1];
// for all element sides
for(i=0; i < dim+1; i++) {
coords[i] =
new VectorOfFixVecs<DimVec<double> >(dim,
dim,
DEFAULT_VALUE,
DimVec<double>(dim,
DEFAULT_VALUE,
0.0)
);
for (int i = 0; i < dim + 1; i++) {
coords[i] = new VectorOfFixVecs<DimVec<double> >(dim, dim, DEFAULT_VALUE,
DimVec<double>(dim,
DEFAULT_VALUE,
0.0)
);
// for each vertex of the side
for(k=0; k < dim; k++) {
int index =
refElement->getVertexOfPosition(INDEX_OF_DIM(dim-1, dim), i, k);
for (int k = 0; k < dim; k++) {
int index = refElement->getVertexOfPosition(INDEX_OF_DIM(dim - 1, dim), i, k);
(*coords[i])[k][index] = 1.0;
}
}
if(j) {
if (j) {
Operator *jOp = new Operator(Operator::VECTOR_OPERATOR, rowFESpace);
jOp->addZeroOrderTerm(new VecAtQP_ZOT(j, NULL));
neumannOperators = new DimVec<SurfaceOperator*>(dim, NO_INIT);
for(i=0; i < dim+1; i++) {
(*neumannOperators)[i] = new SurfaceOperator(jOp, *coords[i]);
}
for (int i=0; i < dim+1; i++)
(*neumannOperators)[i] = new SurfaceOperator(jOp, *coords[i]);
delete jOp;
}
if(alpha) {
Operator *alphaOp = new Operator(Operator::MATRIX_OPERATOR,
rowFESpace, colFESpace);
if (alpha) {
Operator *alphaOp =
new Operator(Operator::MATRIX_OPERATOR, rowFESpace, colFESpace);
alphaOp->addZeroOrderTerm(new VecAtQP_ZOT(alpha, NULL));
robinOperators = new DimVec<SurfaceOperator*>(dim, NO_INIT);
for(i=0; i < dim + 1; i++) {
(*robinOperators)[i] = new SurfaceOperator(alphaOp, *coords[i]);
}
for (int i = 0; i < dim + 1; i++)
(*robinOperators)[i] = new SurfaceOperator(alphaOp, *coords[i]);
delete alphaOp;
}
......@@ -137,28 +121,22 @@ namespace AMDiS {
: BoundaryCondition(type, rowFESpace_, colFESpace_),
neumannOperators(NULL),
robinOperators(NULL)
//matrix(dofMatrix)
{
int i, k, dim = rowFESpace->getMesh()->getDim();
int dim = rowFESpace->getMesh()->getDim();
// create barycentric coords for each vertex of each side
const Element *refElement = Global::getReferenceElement(dim);
coords = new VectorOfFixVecs<DimVec<double> >*[dim+1];
// for all element sides
for(i=0; i < dim+1; i++) {
coords[i] =
new VectorOfFixVecs<DimVec<double> >(dim,
dim,
DEFAULT_VALUE,
DimVec<double>(dim,
DEFAULT_VALUE,
0.0));
for (int i = 0; i < dim + 1; i++) {
coords[i] = new VectorOfFixVecs<DimVec<double> >(dim, dim, DEFAULT_VALUE,
DimVec<double>(dim,
DEFAULT_VALUE,
0.0));
// for each vertex of the side
for(k=0; k < dim; k++) {
int index =
refElement->getVertexOfPosition(INDEX_OF_DIM(dim-1, dim), i, k);
for (int k = 0; k < dim; k++) {
int index = refElement->getVertexOfPosition(INDEX_OF_DIM(dim - 1, dim), i, k);
(*coords[i])[k][index] = 1.0;
}
}
......@@ -166,10 +144,10 @@ namespace AMDiS {
neumannOperators = new DimVec<SurfaceOperator*>(dim, NO_INIT);
robinOperators = new DimVec<SurfaceOperator*>(dim, NO_INIT);
for(i=0; i < dim + 1; i++) {
if(jOp)
for (int i = 0; i < dim + 1; i++) {
if (jOp)
(*neumannOperators)[i] = new SurfaceOperator(jOp, *coords[i]);
if(alphaOp)
if (alphaOp)
(*robinOperators)[i] = new SurfaceOperator(alphaOp, *coords[i]);
}
}
......@@ -200,14 +178,12 @@ namespace AMDiS {
const BoundaryType* localBound,
int nBasFcts)
{
int dim = elInfo->getMesh()->getDim();
if (robinOperators) {
for (int i = 0; i < dim + 1; i++) {
if (elInfo->getBoundary(i) == boundaryType) {
int dim = elInfo->getMesh()->getDim();
for (int i = 0; i < dim + 1; i++)
if (elInfo->getBoundary(i) == boundaryType)
matrix->assemble(-1.0, elInfo, localBound, (*robinOperators)[i]);
}
}
}
}
......@@ -216,24 +192,18 @@ namespace AMDiS {
const DOFVectorBase<double> *dv)
{
FUNCNAME("RobinBC::fillBoundaryCondition()");
TEST_EXIT(matrix->getRowFESpace() == rowFESpace)
("invalid row fe space\n");
TEST_EXIT(matrix->getColFESpace() == colFESpace)
("invalid col fe space\n");
TEST_EXIT(matrix->getRowFESpace() == rowFESpace)("invalid row fe space\n");
TEST_EXIT(matrix->getColFESpace() == colFESpace)("invalid col fe space\n");
int dim = elInfo->getMesh()->getDim();
int iq;
DimVec<double> lambda(dim, NO_INIT);
double n_A_grdUh, val = 0.0;
WorldVector<double> normal;
const DimVec<WorldVector<double> > &Lambda = elInfo->getGrdLambda();
double det = elInfo->getDet();
int numPoints;
bool neumannQuad = false;
const BasisFunction *basFcts = dv->getFESpace()->getBasisFcts();
TEST_EXIT(basFcts == rowFESpace->getBasisFcts())("invalid basFcts\n");
......@@ -245,14 +215,14 @@ namespace AMDiS {
TEST_EXIT(neumannOperators || robinOperators)
("neither neumann nor robin operators set!\n");
if(!robinOperators)
if (!robinOperators) {
neumannQuad = true;
else {
if(neumannOperators) {
if((*neumannOperators)[0]->getAssembler(omp_get_thread_num())->
getZeroOrderAssembler()->getQuadrature()->getNumPoints() >
(*robinOperators)[0]->getAssembler(omp_get_thread_num())->
getZeroOrderAssembler()->getQuadrature()->getNumPoints())
} else {
if (neumannOperators) {
if ((*neumannOperators)[0]->getAssembler(omp_get_thread_num())->
getZeroOrderAssembler()->getQuadrature()->getNumPoints() >
(*robinOperators)[0]->getAssembler(omp_get_thread_num())->
getZeroOrderAssembler()->getQuadrature()->getNumPoints())
{
neumannQuad = true;
}
......@@ -260,15 +230,14 @@ namespace AMDiS {
}
Quadrature *quadrature = NULL;
int face;
std::vector<Operator*>::iterator op;
for(op=matrix->getOperatorsBegin(); op != matrix->getOperatorsEnd(); ++op) {
for (op = matrix->getOperatorsBegin(); op != matrix->getOperatorsEnd(); ++op) {
(*op)->getAssembler(omp_get_thread_num())->initElement(elInfo);
}
for(face = 0; face < dim+1; face++) {
for (face = 0; face < dim + 1; face++) {
elInfo->getNormal(face, normal);
......@@ -281,12 +250,10 @@ namespace AMDiS {
numPoints = quadrature->getNumPoints();
if(elInfo->getBoundary(face) == boundaryType) {
if (elInfo->getBoundary(face) == boundaryType) {
(*neumannOperators)[face]->getAssembler(omp_get_thread_num())->getZeroOrderAssembler()->
initElement(elInfo);
//const double *uhAtQp = quadrature->uhAtQp(basFcts, uhEl, NULL);
const double *uhAtQp = dv->getVecAtQPs(elInfo,
quadrature,
NULL,
......@@ -294,15 +261,14 @@ namespace AMDiS {
std::vector<double> f(numPoints, 0.0);
if(robinOperators) {
if (robinOperators)
(*robinOperators)[face]->evalZeroOrder(numPoints,
uhAtQp,
NULL,
NULL,
&f[0],
1.0);
}
WorldVector<double> *grdUh = new WorldVector<double>[numPoints];
WorldVector<double> *A_grdUh = new WorldVector<double>[numPoints];
......@@ -312,7 +278,7 @@ namespace AMDiS {
basFcts->evalGrdUh(lambda, Lambda, uhEl, &grdUh[iq]);
}
for(op=matrix->getOperatorsBegin(); op != matrix->getOperatorsEnd(); ++op) {
for (op = matrix->getOperatorsBegin(); op != matrix->getOperatorsEnd(); ++op) {
(*op)->weakEvalSecondOrder(numPoints,
grdUh,
A_grdUh);
......
......@@ -64,30 +64,26 @@ namespace AMDiS {
// create surface quadratures
if (secondOrder[myRank].size() > 0) {
degree = getQuadratureDegree(2);
// quad2 = SurfaceQuadrature::provideSurfaceQuadrature(dim, degree, coords);
quad2 = new SurfaceQuadrature(Quadrature::provideQuadrature(dim - 1, degree),
coords);
quad2 =
new SurfaceQuadrature(Quadrature::provideQuadrature(