From b49c9c79bf2de3b44f687e4fb63cd7317b5e8370 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Mon, 4 Jan 2010 12:50:30 +0000 Subject: [PATCH] Bugfix in SurfaceQuadrature. --- AMDiS/libtool | 85 ++++++++++-------- AMDiS/src/RobinBC.cc | 158 +++++++++++++-------------------- AMDiS/src/SurfaceOperator.h | 20 ++--- AMDiS/src/SurfaceQuadrature.cc | 10 +-- 4 files changed, 122 insertions(+), 151 deletions(-) diff --git a/AMDiS/libtool b/AMDiS/libtool index 486eabd3..e96f6706 100755 --- a/AMDiS/libtool +++ b/AMDiS/libtool @@ -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="" diff --git a/AMDiS/src/RobinBC.cc b/AMDiS/src/RobinBC.cc index b4c7cab8..def19d38 100644 --- a/AMDiS/src/RobinBC.cc +++ b/AMDiS/src/RobinBC.cc @@ -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); diff --git a/AMDiS/src/SurfaceOperator.h b/AMDiS/src/SurfaceOperator.h index f341ea4c..147555c6 100644 --- a/AMDiS/src/SurfaceOperator.h +++ b/AMDiS/src/SurfaceOperator.h @@ -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(dim - 1, degree), coords); } if (firstOrderGrdPsi[myRank].size() > 0) { degree = getQuadratureDegree(1, GRD_PSI); - quad1GrdPsi = new SurfaceQuadrature(Quadrature::provideQuadrature(dim - 1, degree), - coords); - //SurfaceQuadrature::provideSurfaceQuadrature(dim, degree, coords); + quad1GrdPsi = + new SurfaceQuadrature(Quadrature::provideQuadrature(dim - 1, degree), coords); } if (firstOrderGrdPhi[myRank].size() > 0) { degree = getQuadratureDegree(1, GRD_PHI); - quad1GrdPhi = new SurfaceQuadrature(Quadrature::provideQuadrature(dim - 1, degree), - coords); - //SurfaceQuadrature::provideSurfaceQuadrature(dim, degree, coords); + quad1GrdPhi = + new SurfaceQuadrature(Quadrature::provideQuadrature(dim - 1, degree), coords); } if (zeroOrder[myRank].size() > 0) { degree = getQuadratureDegree(0); - quad0 = new SurfaceQuadrature(Quadrature::provideQuadrature(dim - 1, degree), - coords); - //SurfaceQuadrature::provideSurfaceQuadrature(dim, degree, coords); + quad0 = + new SurfaceQuadrature(Quadrature::provideQuadrature(dim - 1, degree), coords); } // initialize assembler with surface quadratures diff --git a/AMDiS/src/SurfaceQuadrature.cc b/AMDiS/src/SurfaceQuadrature.cc index 4b78d2ca..2b1990d3 100644 --- a/AMDiS/src/SurfaceQuadrature.cc +++ b/AMDiS/src/SurfaceQuadrature.cc @@ -7,12 +7,12 @@ namespace AMDiS { SurfaceQuadrature::SurfaceQuadrature(Quadrature *q, VectorOfFixVecs<DimVec<double> > &c) - : Quadrature((quad->getName() + " surface").c_str(), - quad->getDegree(), - quad->getDim() + 1, - quad->getNumPoints(), + : Quadrature((q->getName() + " surface").c_str(), + q->getDegree(), + q->getDim() + 1, + q->getNumPoints(), NULL, - quad->getWeight()), + q->getWeight()), quad(q), coords(c) { -- GitLab