From d9b9eeb504b290b4aa2e96fe3c5fed52a0c8c4c0 Mon Sep 17 00:00:00 2001 From: treecity Date: Sat, 7 May 2011 15:00:55 +0000 Subject: [PATCH] =?utf8?q?[bem3d]=20neuste=20Version=20eingescheckt=20[bem?= =?utf8?q?3d]=20schnittstelle=20f=C3=BCr=20achsenorientierte=20Rechtecke?= =?utf8?q?=20[src]=20Karkulik=20skripte=20versucht=20zu=20testen=20->=20ei?= =?utf8?q?genartige=20L=C3=B6sungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://drops.fb12.tu-berlin.de/svn/bacc/trunk@19 26120e32-c555-405d-b3e1-1f783fb42516 --- src/bem3d/Makefile | 765 + src/bem3d/ROADMAP | 81 + src/bem3d/autom4te.cache/output.1 | 5 +- src/bem3d/autom4te.cache/output.2 | 5 +- src/bem3d/autom4te.cache/requests | 2 +- src/bem3d/autom4te.cache/traces.1 | 2 +- src/bem3d/autom4te.cache/traces.2 | 4 +- src/bem3d/config.status | 1272 + src/bem3d/configure | 5 +- src/bem3d/configure.ac | 4 +- src/bem3d/src/HLibOperator.cpp | 15 + src/bem3d/src/HLibOperator.hpp | 8 + src/bem3d/src/HLibOperator_fwd.hpp | 123 + src/bem3d/src/HLibOperator_tmpl.cpp | 201 + src/bem3d/src/Makefile | 582 + src/bem3d/src/Makefile.am | 2 +- src/bem3d/src/Makefile.in | 2 +- .../libhilbert_mesh_a-CouldNotDispatchCall.Po | 213 + .../libhilbert_mesh_a-DispatchIdNotSet.Po | 212 + .../.deps/libhilbert_mesh_a-FlexibleMesh.Po | 1314 + .../.deps/libhilbert_mesh_a-GenericVector.Po | 294 + src/bem3d/src/boundary_mesh/.deps/t.Po | 1313 + src/bem3d/src/boundary_mesh/Face.cpp | 2 + src/bem3d/src/boundary_mesh/Face.hpp | 182 +- src/bem3d/src/boundary_mesh/FaceDispatch.hpp | 103 + .../src/boundary_mesh/FaceDispatch_tmpl.cpp | 123 + src/bem3d/src/boundary_mesh/Face_tmpl.cpp | 319 +- src/bem3d/src/boundary_mesh/FlexibleMesh.cpp | 2 + src/bem3d/src/boundary_mesh/FlexibleMesh.hpp | 55 + .../src/boundary_mesh/FlexibleMesh_tmpl.cpp | 23 + src/bem3d/src/boundary_mesh/HalfEdge.cpp | 87 - src/bem3d/src/boundary_mesh/HalfEdge.hpp | 113 +- src/bem3d/src/boundary_mesh/HalfEdge_tmpl.cpp | 99 + src/bem3d/src/boundary_mesh/Makefile | 711 + src/bem3d/src/boundary_mesh/Makefile.am | 51 +- src/bem3d/src/boundary_mesh/Makefile.in | 195 +- src/bem3d/src/boundary_mesh/Marker.hpp | 8 + src/bem3d/src/boundary_mesh/Marker_fwd.hpp | 144 + src/bem3d/src/boundary_mesh/Marker_tmpl.cpp | 72 + src/bem3d/src/boundary_mesh/Mesh.cpp | 446 +- src/bem3d/src/boundary_mesh/Mesh.hpp | 209 +- src/bem3d/src/boundary_mesh/MeshBuilder.hpp | 26 + .../src/boundary_mesh/MeshBuilder_tmpl.cpp | 41 + src/bem3d/src/boundary_mesh/Vertex.cpp | 136 - src/bem3d/src/boundary_mesh/Vertex.hpp | 147 +- src/bem3d/src/boundary_mesh/Vertex_tmpl.cpp | 30 + .../src/boundary_mesh/algorithm/HandleObj.hpp | 27 + .../algorithm/HandleObj_tmpl.cpp | 193 + .../algorithm/RefineUniformly.hpp | 74 + .../algorithm/RefineUniformly_tmpl.cpp | 206 + src/bem3d/src/boundary_mesh/dispatchTest.cpp | 110 + src/bem3d/src/boundary_mesh/exception.hpp | 7 + .../exception/CouldNotDispatchCall.cpp | 12 + .../exception/CouldNotDispatchCall.hpp | 21 + .../exception/DispatchIdNotSet.cpp | 12 + .../exception/DispatchIdNotSet.hpp | 21 + .../exception/NoMatchingFaceType.hpp | 32 + .../exception/NoMatchingFaceType_tmpl.cpp | 68 + .../exception/NoMatchingFaceType_tmpl.hpp | 8 + .../face/ConvexQuadrilateral.hpp | 61 + .../face/ConvexQuadrilateral_tmpl.cpp | 95 + .../face/ConvexQuadrilateral_tmpl.hpp | 8 + .../src/boundary_mesh/face/Parallelogram.hpp | 59 + .../boundary_mesh/face/Parallelogram_tmpl.cpp | 77 + .../boundary_mesh/face/Parallelogram_tmpl.hpp | 8 + .../src/boundary_mesh/face/Quadrilateral.hpp | 66 + .../boundary_mesh/face/Quadrilateral_tmpl.cpp | 134 + .../boundary_mesh/face/Quadrilateral_tmpl.hpp | 8 + src/bem3d/src/boundary_mesh/face/Triangle.hpp | 60 + .../src/boundary_mesh/face/Triangle_tmpl.cpp | 106 + .../src/boundary_mesh/face/Triangle_tmpl.hpp | 8 + .../generic/AbstractIteratorBase.hpp | 32 - .../src/boundary_mesh/generic/Marking.cpp | 41 - .../src/boundary_mesh/generic/Marking.hpp | 32 - src/bem3d/src/boundary_mesh/layer/Marker.cpp | 168 - src/bem3d/src/boundary_mesh/layer/Marker.hpp | 42 - src/bem3d/src/boundary_mesh/mesh_compare.cpp | 4 +- .../src/boundary_mesh/mixin/ExportingObj.cpp | 51 - .../src/boundary_mesh/mixin/ExportingObj.hpp | 27 - .../src/boundary_mesh/mixin/LoadingObj.cpp | 126 - .../src/boundary_mesh/mixin/LoadingObj.hpp | 28 - .../boundary_mesh/mixin/RefiningAdaptivly.cpp | 2 +- .../boundary_mesh/mixin/RefiningUniformly.cpp | 97 - .../boundary_mesh/mixin/RefiningUniformly.hpp | 24 - src/bem3d/src/boundary_mesh/t.cpp | 41 +- src/bem3d/src/boundary_mesh/testhilbertmesh | Bin 0 -> 1283424 bytes src/bem3d/src/boundary_mesh/types.hpp | 13 + src/bem3d/src/config.h | 84 + src/bem3d/src/generic/BaseTypes.hpp | 24 + src/bem3d/src/generic/GenericVector.cpp | 12 - src/bem3d/src/generic/GenericVector.hpp | 20 +- src/bem3d/src/generic/GenericVector_tmpl.cpp | 30 +- src/bem3d/src/generic/Singleton.hpp | 23 + src/bem3d/src/generic/Singleton_tmpl.cpp | 17 + src/bem3d/src/generic/TypeList.hpp | 80 + src/bem3d/src/hilbert.hpp | 4 +- .../.deps/testLaplace-GenericVector.Po | 294 + .../laplace/.deps/testLaplace-HLibOperator.Po | 260 + .../.deps/testLaplace-SimpleLayerPotential.Po | 1430 ++ .../.deps/testLaplace-TriangleIntegrator.Po | 1387 ++ src/bem3d/src/laplace/.deps/testLaplace-t.Po | 1430 ++ src/bem3d/src/laplace/Makefile | 640 + src/bem3d/src/laplace/Makefile.am | 25 +- src/bem3d/src/laplace/Makefile.in | 640 + src/bem3d/src/laplace/SLPrecangle.cpp | 357 + src/bem3d/src/laplace/SLPrecangle.hpp | 21 + .../src/laplace/SimpleLayerPotential.cpp | 189 +- .../src/laplace/SimpleLayerPotential.hpp | 59 +- src/bem3d/src/laplace/TriangleIntegrator.cpp | 35 +- src/bem3d/src/laplace/TriangleIntegrator.hpp | 25 +- src/bem3d/src/laplace/V.ps | 19980 ++++++++++++++++ src/bem3d/src/laplace/clustertree.ps | 521 + src/bem3d/src/laplace/clustertree.txt | 1279 + src/bem3d/src/laplace/t.cpp | 45 +- src/bem3d/src/laplace/testLaplace | Bin 0 -> 2470530 bytes src/bem3d/src/mesh_explorer/Makefile | 329 + src/bem3d/src/mesh_explorer/Mesh.hpp | 11 + src/bem3d/src/mesh_explorer/MeshWidget.cpp | 198 + src/bem3d/src/mesh_explorer/MeshWidget.hpp | 54 + src/bem3d/src/mesh_explorer/mesh_explorer.cpp | 51 + src/bem3d/src/mesh_explorer/mesh_explorer.pro | 48 + .../src/mesh_explorer/moc_MeshWidget.cpp | 115 + .../.deps/libhilbert_spaces_a-P0Space.Po | 1384 ++ src/bem3d/src/spaces/.deps/testP0Space-t.Po | 1384 ++ src/bem3d/src/spaces/HLibSpace.hpp | 16 + src/bem3d/src/spaces/Makefile | 665 + src/bem3d/src/spaces/Makefile.am | 13 +- src/bem3d/src/spaces/Makefile.in | 11 +- src/bem3d/src/spaces/P0Space.cpp | 137 +- src/bem3d/src/spaces/P0Space.hpp | 58 +- src/bem3d/src/spaces/t.cpp | 47 +- src/bem3d/src/spaces/testP0Space | Bin 0 -> 1712309 bytes src/bem3d/src/stamp-h1 | 1 + src/build_A.cpp | 565 +- src/build_A.mexa64 | Bin 0 -> 17226 bytes src/exportCOEL.m | 18 + src/test_solveError.m | 4 +- 137 files changed, 43862 insertions(+), 2115 deletions(-) create mode 100644 src/bem3d/Makefile create mode 100644 src/bem3d/ROADMAP create mode 100755 src/bem3d/config.status create mode 100644 src/bem3d/src/HLibOperator.cpp create mode 100644 src/bem3d/src/HLibOperator.hpp create mode 100644 src/bem3d/src/HLibOperator_fwd.hpp create mode 100644 src/bem3d/src/HLibOperator_tmpl.cpp create mode 100644 src/bem3d/src/Makefile create mode 100644 src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-CouldNotDispatchCall.Po create mode 100644 src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-DispatchIdNotSet.Po create mode 100644 src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-FlexibleMesh.Po create mode 100644 src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-GenericVector.Po create mode 100644 src/bem3d/src/boundary_mesh/.deps/t.Po create mode 100644 src/bem3d/src/boundary_mesh/FaceDispatch.hpp create mode 100644 src/bem3d/src/boundary_mesh/FaceDispatch_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/FlexibleMesh.cpp create mode 100644 src/bem3d/src/boundary_mesh/FlexibleMesh.hpp create mode 100644 src/bem3d/src/boundary_mesh/FlexibleMesh_tmpl.cpp delete mode 100644 src/bem3d/src/boundary_mesh/HalfEdge.cpp create mode 100644 src/bem3d/src/boundary_mesh/HalfEdge_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/Makefile create mode 100644 src/bem3d/src/boundary_mesh/Marker.hpp create mode 100644 src/bem3d/src/boundary_mesh/Marker_fwd.hpp create mode 100644 src/bem3d/src/boundary_mesh/Marker_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/MeshBuilder.hpp create mode 100644 src/bem3d/src/boundary_mesh/MeshBuilder_tmpl.cpp delete mode 100644 src/bem3d/src/boundary_mesh/Vertex.cpp create mode 100644 src/bem3d/src/boundary_mesh/Vertex_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/algorithm/HandleObj.hpp create mode 100644 src/bem3d/src/boundary_mesh/algorithm/HandleObj_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/algorithm/RefineUniformly.hpp create mode 100644 src/bem3d/src/boundary_mesh/algorithm/RefineUniformly_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/dispatchTest.cpp create mode 100644 src/bem3d/src/boundary_mesh/exception.hpp create mode 100644 src/bem3d/src/boundary_mesh/exception/CouldNotDispatchCall.cpp create mode 100644 src/bem3d/src/boundary_mesh/exception/CouldNotDispatchCall.hpp create mode 100644 src/bem3d/src/boundary_mesh/exception/DispatchIdNotSet.cpp create mode 100644 src/bem3d/src/boundary_mesh/exception/DispatchIdNotSet.hpp create mode 100644 src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType.hpp create mode 100644 src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp create mode 100644 src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral.hpp create mode 100644 src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp create mode 100644 src/bem3d/src/boundary_mesh/face/Parallelogram.hpp create mode 100644 src/bem3d/src/boundary_mesh/face/Parallelogram_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/face/Parallelogram_tmpl.hpp create mode 100644 src/bem3d/src/boundary_mesh/face/Quadrilateral.hpp create mode 100644 src/bem3d/src/boundary_mesh/face/Quadrilateral_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/face/Quadrilateral_tmpl.hpp create mode 100644 src/bem3d/src/boundary_mesh/face/Triangle.hpp create mode 100644 src/bem3d/src/boundary_mesh/face/Triangle_tmpl.cpp create mode 100644 src/bem3d/src/boundary_mesh/face/Triangle_tmpl.hpp delete mode 100644 src/bem3d/src/boundary_mesh/generic/AbstractIteratorBase.hpp delete mode 100644 src/bem3d/src/boundary_mesh/generic/Marking.cpp delete mode 100644 src/bem3d/src/boundary_mesh/generic/Marking.hpp delete mode 100644 src/bem3d/src/boundary_mesh/layer/Marker.cpp delete mode 100644 src/bem3d/src/boundary_mesh/layer/Marker.hpp delete mode 100644 src/bem3d/src/boundary_mesh/mixin/ExportingObj.cpp delete mode 100644 src/bem3d/src/boundary_mesh/mixin/ExportingObj.hpp delete mode 100644 src/bem3d/src/boundary_mesh/mixin/LoadingObj.cpp delete mode 100644 src/bem3d/src/boundary_mesh/mixin/LoadingObj.hpp delete mode 100644 src/bem3d/src/boundary_mesh/mixin/RefiningUniformly.cpp delete mode 100644 src/bem3d/src/boundary_mesh/mixin/RefiningUniformly.hpp create mode 100755 src/bem3d/src/boundary_mesh/testhilbertmesh create mode 100644 src/bem3d/src/boundary_mesh/types.hpp create mode 100644 src/bem3d/src/config.h create mode 100644 src/bem3d/src/generic/BaseTypes.hpp create mode 100644 src/bem3d/src/generic/Singleton.hpp create mode 100644 src/bem3d/src/generic/Singleton_tmpl.cpp create mode 100644 src/bem3d/src/generic/TypeList.hpp create mode 100644 src/bem3d/src/laplace/.deps/testLaplace-GenericVector.Po create mode 100644 src/bem3d/src/laplace/.deps/testLaplace-HLibOperator.Po create mode 100644 src/bem3d/src/laplace/.deps/testLaplace-SimpleLayerPotential.Po create mode 100644 src/bem3d/src/laplace/.deps/testLaplace-TriangleIntegrator.Po create mode 100644 src/bem3d/src/laplace/.deps/testLaplace-t.Po create mode 100644 src/bem3d/src/laplace/Makefile create mode 100644 src/bem3d/src/laplace/Makefile.in create mode 100644 src/bem3d/src/laplace/SLPrecangle.cpp create mode 100644 src/bem3d/src/laplace/SLPrecangle.hpp create mode 100644 src/bem3d/src/laplace/V.ps create mode 100644 src/bem3d/src/laplace/clustertree.ps create mode 100644 src/bem3d/src/laplace/clustertree.txt create mode 100755 src/bem3d/src/laplace/testLaplace create mode 100644 src/bem3d/src/mesh_explorer/Makefile create mode 100644 src/bem3d/src/mesh_explorer/Mesh.hpp create mode 100644 src/bem3d/src/mesh_explorer/MeshWidget.cpp create mode 100644 src/bem3d/src/mesh_explorer/MeshWidget.hpp create mode 100644 src/bem3d/src/mesh_explorer/mesh_explorer.cpp create mode 100644 src/bem3d/src/mesh_explorer/mesh_explorer.pro create mode 100644 src/bem3d/src/mesh_explorer/moc_MeshWidget.cpp create mode 100644 src/bem3d/src/spaces/.deps/libhilbert_spaces_a-P0Space.Po create mode 100644 src/bem3d/src/spaces/.deps/testP0Space-t.Po create mode 100644 src/bem3d/src/spaces/HLibSpace.hpp create mode 100644 src/bem3d/src/spaces/Makefile create mode 100755 src/bem3d/src/spaces/testP0Space create mode 100644 src/bem3d/src/stamp-h1 create mode 100755 src/build_A.mexa64 create mode 100644 src/exportCOEL.m diff --git a/src/bem3d/Makefile b/src/bem3d/Makefile new file mode 100644 index 0000000..924a14d --- /dev/null +++ b/src/bem3d/Makefile @@ -0,0 +1,765 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +pkgdatadir = $(datadir)/hilbert3d +pkgincludedir = $(includedir)/hilbert3d +pkglibdir = $(libdir)/hilbert3d +pkglibexecdir = $(libexecdir)/hilbert3d +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \ + ChangeLog INSTALL NEWS depcomp install-sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_blas.m4 \ + $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_regex.m4 $(top_srcdir)/m4/ax_hlib.m4 \ + $(top_srcdir)/m4/ax_lapack.m4 \ + $(top_srcdir)/m4/ax_prog_doxygen.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run tar +AUTOCONF = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoconf +AUTOHEADER = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoheader +AUTOMAKE = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run automake-1.11 +AWK = mawk +BLAS_LIBS = -lblas +BOOST_CPPFLAGS = -I/usr/include +BOOST_LDFLAGS = -L/usr/lib +BOOST_REGEX_LIB = -lboost_regex-mt +BOOST_ROOT_PATH = /usr +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CXX = g++ +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DOXYGEN_PAPER_SIZE = +DX_CONFIG = Doxyfile +DX_DOCDIR = docs/doxygen +DX_DOT = +DX_DOXYGEN = +DX_DVIPS = +DX_EGREP = +DX_ENV = SRCDIR='.' PROJECT='Hilbert 3D' DOCDIR='docs/doxygen' VERSION='0.1.0' HAVE_DOT='NO' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='NO' GENERATE_LATEX='NO' +DX_FLAG_chi = 0 +DX_FLAG_chm = 0 +DX_FLAG_doc = 0 +DX_FLAG_dot = 0 +DX_FLAG_html = 0 +DX_FLAG_man = 0 +DX_FLAG_pdf = 0 +DX_FLAG_ps = 0 +DX_FLAG_rtf = 0 +DX_FLAG_xml = 0 +DX_HHC = +DX_LATEX = +DX_MAKEINDEX = +DX_PDFLATEX = +DX_PERL = /usr/bin/perl +DX_PROJECT = Hilbert 3D +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +F77 = gfortran +FFLAGS = -g -O2 +FLIBS = -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2 -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../.. -L/usr/lib/x86_64-linux-gnu -lgfortran -lm +GREP = /bin/grep +HLIB_CPPFLAGS = -I/usr/local/include +HLIB_LDFLAGS = -L/usr/local/lib +HLIB_LIB = -lhmatrix +HLIB_ROOT_PATH = /usr/local +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LAPACK_LIBS = -llapack +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +OBJEXT = o +PACKAGE = hilbert3d +PACKAGE_BUGREPORT = markus.mayr@tuwien.ac.at +PACKAGE_NAME = Hilbert 3D +PACKAGE_STRING = Hilbert 3D 0.1.0 +PACKAGE_TARNAME = hilbert3d +PACKAGE_URL = http://83.169.35.184/cgi-bin/gitweb?p=bem3d.git +PACKAGE_VERSION = 0.1.0 +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/bash +STRIP = +VERSION = 0.1.0 +abs_builddir = /home/treecity/workspace/bacc/src/bem3d +abs_srcdir = /home/treecity/workspace/bacc/src/bem3d +abs_top_builddir = /home/treecity/workspace/bacc/src/bem3d +abs_top_srcdir = /home/treecity/workspace/bacc/src/bem3d +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = gfortran +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +ACLOCAL_AMFLAGS = -I m4 +SUBDIRS = src +##DX_CLEAN_HTML = docs/doxygen/html +##DX_CLEAN_CHM = docs/doxygen/chm +###DX_CLEAN_CHI = docs/doxygen/hilbert3d.chi +##DX_CLEAN_MAN = docs/doxygen/man +##DX_CLEAN_RTF = docs/doxygen/rtf +##DX_CLEAN_XML = docs/doxygen/xml +##DX_CLEAN_PS = docs/doxygen/hilbert3d.ps +##DX_PS_GOAL = doxygen-ps +##DX_CLEAN_PDF = docs/doxygen/hilbert3d.pdf +##DX_PDF_GOAL = doxygen-pdf +##DX_CLEAN_LATEX = docs/doxygen/latex +#DX_CLEANFILES = \ +# docs/doxygen/hilbert3d.tag \ +# -r \ +# $(DX_CLEAN_HTML) \ +# $(DX_CLEAN_CHM) \ +# $(DX_CLEAN_CHI) \ +# $(DX_CLEAN_MAN) \ +# $(DX_CLEAN_RTF) \ +# $(DX_CLEAN_XML) \ +# $(DX_CLEAN_PDF) \ +# $(DX_CLEAN_PS) \ +# $(DX_CLEAN_LATEX) + +all: all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @$(am__cd) '$(distuninstallcheck_dir)' \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \ + distclean distclean-generic distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am + +##doxygen-ps: docs/doxygen/hilbert3d.ps +##docs/doxygen/hilbert3d.ps: docs/doxygen/hilbert3d.tag +## cd docs/doxygen/latex; \ +## rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ +## $(DX_LATEX) refman.tex; \ +## $(MAKEINDEX_PATH) refman.idx; \ +## $(DX_LATEX) refman.tex; \ +## countdown=5; \ +## while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ +## refman.log > /dev/null 2>&1 \ +## && test $$countdown -gt 0; do \ +## $(DX_LATEX) refman.tex; \ +## countdown=`expr $$countdown - 1`; \ +## done; \ +## $(DX_DVIPS) -o ../hilbert3d.ps refman.dvi +##doxygen-pdf: docs/doxygen/hilbert3d.pdf +##docs/doxygen/hilbert3d.pdf: docs/doxygen/hilbert3d.tag +## cd docs/doxygen/latex; \ +## rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ +## $(DX_PDFLATEX) refman.tex; \ +## $(DX_MAKEINDEX) refman.idx; \ +## $(DX_PDFLATEX) refman.tex; \ +## countdown=5; \ +## while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ +## refman.log > /dev/null 2>&1 \ +## && test $$countdown -gt 0; do \ +## $(DX_PDFLATEX) refman.tex; \ +## countdown=`expr $$countdown - 1`; \ +## done; \ +## mv refman.pdf ../hilbert3d.pdf +#.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL) +#.INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) +#doxygen-run: docs/doxygen/hilbert3d.tag +#doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) +#docs/doxygen/hilbert3d.tag: $(DX_CONFIG) $(pkginclude_HEADERS) +# rm -rf docs/doxygen +# $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/bem3d/ROADMAP b/src/bem3d/ROADMAP new file mode 100644 index 0000000..f32dec8 --- /dev/null +++ b/src/bem3d/ROADMAP @@ -0,0 +1,81 @@ +******************************************************************************* +* Version 0.2: Mission "V\phi=f" * +******************************************************************************* + +.=========================================================.==========.========. +| Aufgabe | Verantw. | Status | +|=========================================================|==========|========| +| Netzverwaltung | MM | teilw. | +|=========================================================|==========|========| +| 01) Das Speichern und effiziente Abrufen von Netzen, | MM | OK | +| die aus beliebigen Polygonen bestehen. | | | +|---------------------------------------------------------|----------|--------| +| 02) Laden und Speichern von Netzen im Wavefront-OBJ- | MM | OK | +| Format bzw. in einer Restriktion dieses Formats. | | | +|---------------------------------------------------------|----------|--------| +| 03) Uniforme Netzverfeinerung für Dreiecke und | MM | OK | +| konvexe Vierecke. | | | +|---------------------------------------------------------|----------|--------| +| 04) Adaptive Netzverfeinerung für Dreiecke und | MM | teilw. | +| konvexe Vierecke. | | | +|---------------------------------------------------------|----------|--------| +| 05) Ein einfaches, plattformunabhängiges Werkzeug zum | MM | OK | +| Darstellen von Netzen (mesh_explorer). | | | +|---------------------------------------------------------|----------|--------| +| 06) Mechanismen zum Verwalten des Codes für | MM | teilw. | +| verschiedenartige Polygone. | | | +|=========================================================|==========|========| +| Finite-Element-Räume | | | +|=========================================================|==========|========| +| 07) P0-Räume und P0-Elemente, d.h. Basisfunktionen. | MK | teilw. | +|---------------------------------------------------------|----------|--------| +| 08) Diskrete Funktionen als Linearkombination von | | ?? | +| Basisfunktionen. | | | +|=========================================================|==========|========| +| Operatoren | | | +|=========================================================|==========|========| +| 09) Einfachschichtpotential für Laplace für Dreiecke. | MK | teilw. | +|---------------------------------------------------------|----------|--------| +| 10) Einfachschichtpotential für Laplace und achsen- | PS,MM,MK | TODO | +| parallele Rechtecke. | | | +|---------------------------------------------------------|----------|--------| +| 11) Anbindung an die HLib zum Aufstellen der Matrizen | MK,MM | teilw. | +| und zum Lösen. | | | +|=========================================================|==========|========| +| Dokumentation | | | +|=========================================================|==========|========| +| Testen | | | +'========================================================='=========='========' + +@ Netzverwaltung: Es ist derzeit noch nicht möglich, ein Mesh-Template so zu + spezialisieren, dass es in eine Bibliothek kompiliert werden kann. +@ 02: Es werden nur die v- und f-Direktiven unterstützt. +@ 04: Die adaptive Netzverfeinerung wurde noch nicht vollständig von der alten + auf die neue Netzverwaltung übernommen. +@ 06: SingleDispatch ist implementiert und funktionstüchtig, DoubleDispatch + ist implementiert, muss jedoch noch getestet werden. +@ 10: Peter Schaefer arbeitet derzeit in einem externen Repository an dem + Einfachschichtpotential für achsenparallele Rechtecke. Sobald verfügbar + werden die entsprechenden Funktionen übernommen. +@ 11: Die Anbindung ist weitgehend ungetestet. + +******************************************************************************* +* Version 0.4: * +******************************************************************************* + +.=========================================================.==========.========. +| Aufgabe | Verantw. | Status | +|=========================================================|==========|========| +| Finite-Element-Räume | | | +|=========================================================|==========|========| +| Operatoren | | | +|=========================================================|==========|========| +| Fehler-Schätzer | | | +|=========================================================|==========|========| +| mesh_explorer | | | +|=========================================================|==========|========| +| Netzverwaltung | | | +|=========================================================|==========|========| +| Dokumentation | | | +'========================================================='=========='========' + diff --git a/src/bem3d/autom4te.cache/output.1 b/src/bem3d/autom4te.cache/output.1 index b34ae7e..6868db4 100755 --- a/src/bem3d/autom4te.cache/output.1 +++ b/src/bem3d/autom4te.cache/output.1 @@ -3590,7 +3590,7 @@ fi # Files: -DX_PROJECT=Hilbert 3D +DX_PROJECT="Hilbert 3D" DX_CONFIG=Doxyfile @@ -9337,7 +9337,7 @@ $as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h fi -ac_config_files="$ac_config_files Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile" +ac_config_files="$ac_config_files Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile src/laplace/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -10155,6 +10155,7 @@ do "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/boundary_mesh/Makefile") CONFIG_FILES="$CONFIG_FILES src/boundary_mesh/Makefile" ;; "src/spaces/Makefile") CONFIG_FILES="$CONFIG_FILES src/spaces/Makefile" ;; + "src/laplace/Makefile") CONFIG_FILES="$CONFIG_FILES src/laplace/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; esac diff --git a/src/bem3d/autom4te.cache/output.2 b/src/bem3d/autom4te.cache/output.2 index b34ae7e..6868db4 100755 --- a/src/bem3d/autom4te.cache/output.2 +++ b/src/bem3d/autom4te.cache/output.2 @@ -3590,7 +3590,7 @@ fi # Files: -DX_PROJECT=Hilbert 3D +DX_PROJECT="Hilbert 3D" DX_CONFIG=Doxyfile @@ -9337,7 +9337,7 @@ $as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h fi -ac_config_files="$ac_config_files Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile" +ac_config_files="$ac_config_files Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile src/laplace/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -10155,6 +10155,7 @@ do "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/boundary_mesh/Makefile") CONFIG_FILES="$CONFIG_FILES src/boundary_mesh/Makefile" ;; "src/spaces/Makefile") CONFIG_FILES="$CONFIG_FILES src/spaces/Makefile" ;; + "src/laplace/Makefile") CONFIG_FILES="$CONFIG_FILES src/laplace/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; esac diff --git a/src/bem3d/autom4te.cache/requests b/src/bem3d/autom4te.cache/requests index 8e7a009..85aa52a 100755 --- a/src/bem3d/autom4te.cache/requests +++ b/src/bem3d/autom4te.cache/requests @@ -105,9 +105,9 @@ 'AM_PROG_MKDIR_P' => 1, 'DX_FEATURE_chi' => 1, 'DX_IF_FEATURE' => 1, + 'DX_CHM_FEATURE' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'DX_FEATURE_doc' => 1, - 'DX_CHM_FEATURE' => 1, 'AM_MISSING_HAS_RUN' => 1, 'DX_PDF_FEATURE' => 1, 'AM_SUBST_NOTMAKE' => 1, diff --git a/src/bem3d/autom4te.cache/traces.1 b/src/bem3d/autom4te.cache/traces.1 index 1f1ebe0..8c32705 100755 --- a/src/bem3d/autom4te.cache/traces.1 +++ b/src/bem3d/autom4te.cache/traces.1 @@ -1485,7 +1485,7 @@ m4trace:configure.ac:6: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.ac:7: -1- m4_pattern_allow([^RANLIB$]) -m4trace:configure.ac:10: -1- DX_INIT_DOXYGEN([Hilbert 3D], [Doxyfile], [docs/doxygen]) +m4trace:configure.ac:10: -1- DX_INIT_DOXYGEN(["Hilbert 3D"], [Doxyfile], [docs/doxygen]) m4trace:configure.ac:10: -1- m4_pattern_allow([^DX_PROJECT$]) m4trace:configure.ac:10: -1- m4_pattern_allow([^DX_CONFIG$]) m4trace:configure.ac:10: -1- m4_pattern_allow([^DX_DOCDIR$]) diff --git a/src/bem3d/autom4te.cache/traces.2 b/src/bem3d/autom4te.cache/traces.2 index 9de8fcf..4a1e5e6 100755 --- a/src/bem3d/autom4te.cache/traces.2 +++ b/src/bem3d/autom4te.cache/traces.2 @@ -303,7 +303,7 @@ m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.ac:7: -1- AC_SUBST([RANLIB]) m4trace:configure.ac:7: -1- AC_SUBST_TRACE([RANLIB]) m4trace:configure.ac:7: -1- m4_pattern_allow([^RANLIB$]) -m4trace:configure.ac:10: -1- AC_SUBST([DX_PROJECT], [Hilbert 3D]) +m4trace:configure.ac:10: -1- AC_SUBST([DX_PROJECT], ["Hilbert 3D"]) m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DX_PROJECT]) m4trace:configure.ac:10: -1- m4_pattern_allow([^DX_PROJECT$]) m4trace:configure.ac:10: -1- AC_SUBST([DX_CONFIG], [ifelse([Doxyfile], [], Doxyfile, [Doxyfile])]) @@ -952,7 +952,7 @@ m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H]) m4trace:configure.ac:16: -1- m4_pattern_allow([^HAVE_STDBOOL_H$]) m4trace:configure.ac:16: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */ @%:@undef HAVE_STDBOOL_H]) -m4trace:configure.ac:18: -1- AC_CONFIG_FILES([Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile]) +m4trace:configure.ac:18: -1- AC_CONFIG_FILES([Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile src/laplace/Makefile]) m4trace:configure.ac:19: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.ac:19: -1- m4_pattern_allow([^LIB@&t@OBJS$]) diff --git a/src/bem3d/config.status b/src/bem3d/config.status new file mode 100755 index 0000000..5450625 --- /dev/null +++ b/src/bem3d/config.status @@ -0,0 +1,1272 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Hilbert 3D $as_me 0.1.0, which was +generated by GNU Autoconf 2.67. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile src/laplace/Makefile" +config_headers=" src/config.h" +config_commands=" depfiles" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to . +Hilbert 3D home page: ." + +ac_cs_config="" +ac_cs_version="\ +Hilbert 3D config.status 0.1.0 +configured by ./configure, generated by GNU Autoconf 2.67, + with options \"$ac_cs_config\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/treecity/workspace/bacc/src/bem3d' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/bin/mkdir -p' +AWK='mawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X '/bin/bash' './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" ac_aux_dir="." + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/boundary_mesh/Makefile") CONFIG_FILES="$CONFIG_FILES src/boundary_mesh/Makefile" ;; + "src/spaces/Makefile") CONFIG_FILES="$CONFIG_FILES src/spaces/Makefile" ;; + "src/laplace/Makefile") CONFIG_FILES="$CONFIG_FILES src/laplace/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +cat >>"$tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["EGREP"]="/bin/grep -E" +S["GREP"]="/bin/grep" +S["CPP"]="gcc -E" +S["HLIB_LIB"]="-lhmatrix" +S["HLIB_ROOT_PATH"]="/usr/local" +S["HLIB_LDFLAGS"]="-L/usr/local/lib" +S["HLIB_CPPFLAGS"]="-I/usr/local/include" +S["LAPACK_LIBS"]="-llapack" +S["BLAS_LIBS"]="-lblas" +S["FLIBS"]=" -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2 -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../.. -L/usr/lib/x86_64-linux-gnu "\ +"-lgfortran -lm" +S["ac_ct_F77"]="gfortran" +S["FFLAGS"]="-g -O2" +S["F77"]="gfortran" +S["BOOST_REGEX_LIB"]="-lboost_regex-mt" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["ac_ct_CC"]="gcc" +S["CFLAGS"]="-g -O2" +S["CC"]="gcc" +S["BOOST_ROOT_PATH"]="/usr" +S["BOOST_LDFLAGS"]="-L/usr/lib" +S["BOOST_CPPFLAGS"]="-I/usr/include" +S["DOXYGEN_PAPER_SIZE"]="" +S["DX_COND_latex_FALSE"]="" +S["DX_COND_latex_TRUE"]="#" +S["DX_COND_pdf_FALSE"]="" +S["DX_COND_pdf_TRUE"]="#" +S["DX_PDFLATEX"]="" +S["DX_FLAG_pdf"]="0" +S["DX_COND_ps_FALSE"]="" +S["DX_COND_ps_TRUE"]="#" +S["DX_EGREP"]="" +S["DX_DVIPS"]="" +S["DX_MAKEINDEX"]="" +S["DX_LATEX"]="" +S["DX_FLAG_ps"]="0" +S["DX_COND_html_FALSE"]="" +S["DX_COND_html_TRUE"]="#" +S["DX_FLAG_html"]="0" +S["DX_COND_chi_FALSE"]="" +S["DX_COND_chi_TRUE"]="#" +S["DX_FLAG_chi"]="0" +S["DX_COND_chm_FALSE"]="" +S["DX_COND_chm_TRUE"]="#" +S["DX_HHC"]="" +S["DX_FLAG_chm"]="0" +S["DX_COND_xml_FALSE"]="" +S["DX_COND_xml_TRUE"]="#" +S["DX_FLAG_xml"]="0" +S["DX_COND_rtf_FALSE"]="" +S["DX_COND_rtf_TRUE"]="#" +S["DX_FLAG_rtf"]="0" +S["DX_COND_man_FALSE"]="" +S["DX_COND_man_TRUE"]="#" +S["DX_FLAG_man"]="0" +S["DX_COND_dot_FALSE"]="" +S["DX_COND_dot_TRUE"]="#" +S["DX_DOT"]="" +S["DX_FLAG_dot"]="0" +S["DX_COND_doc_FALSE"]="" +S["DX_COND_doc_TRUE"]="#" +S["DX_PERL"]="/usr/bin/perl" +S["DX_DOXYGEN"]="" +S["DX_FLAG_doc"]="0" +S["DX_ENV"]=" SRCDIR='.' PROJECT='Hilbert 3D' DOCDIR='docs/doxygen' VERSION='0.1.0' HAVE_DOT='NO' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_"\ +"HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='NO' GENERATE_LATEX='NO'" +S["DX_DOCDIR"]="docs/doxygen" +S["DX_CONFIG"]="Doxyfile" +S["DX_PROJECT"]="Hilbert 3D" +S["RANLIB"]="ranlib" +S["am__fastdepCXX_FALSE"]="#" +S["am__fastdepCXX_TRUE"]="" +S["CXXDEPMODE"]="depmode=gcc3" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__quote"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CXX"]="g++" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CXXFLAGS"]="-g -O2" +S["CXX"]="g++" +S["am__untar"]="${AMTAR} xf -" +S["am__tar"]="${AMTAR} chof - \"$$tardir\"" +S["AMTAR"]="${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run tar" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="mawk" +S["mkdir_p"]="/bin/mkdir -p" +S["MKDIR_P"]="/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="" +S["install_sh"]="${SHELL} /home/treecity/workspace/bacc/src/bem3d/install-sh" +S["MAKEINFO"]="${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run makeinfo" +S["AUTOHEADER"]="${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoheader" +S["AUTOMAKE"]="${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run automake-1.11" +S["AUTOCONF"]="${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoconf" +S["ACLOCAL"]="${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run aclocal-1.11" +S["VERSION"]="0.1.0" +S["PACKAGE"]="hilbert3d" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="http://83.169.35.184/cgi-bin/gitweb?p=bem3d.git" +S["PACKAGE_BUGREPORT"]="markus.mayr@tuwien.ac.at" +S["PACKAGE_STRING"]="Hilbert 3D 0.1.0" +S["PACKAGE_VERSION"]="0.1.0" +S["PACKAGE_TARNAME"]="hilbert3d" +S["PACKAGE_NAME"]="Hilbert 3D" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +_ACAWK +cat >>"$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"Hilbert 3D\"" +D["PACKAGE_TARNAME"]=" \"hilbert3d\"" +D["PACKAGE_VERSION"]=" \"0.1.0\"" +D["PACKAGE_STRING"]=" \"Hilbert 3D 0.1.0\"" +D["PACKAGE_BUGREPORT"]=" \"markus.mayr@tuwien.ac.at\"" +D["PACKAGE_URL"]=" \"http://83.169.35.184/cgi-bin/gitweb?p=bem3d.git\"" +D["PACKAGE"]=" \"hilbert3d\"" +D["VERSION"]=" \"0.1.0\"" +D["HAVE_BOOST"]=" /**/" +D["HAVE_BOOST_REGEX"]=" /**/" +D["HAVE_BLAS"]=" 1" +D["HAVE_LAPACK"]=" 1" +D["HAVE_HLIB"]=" /**/" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE__BOOL"]=" 1" +D["HAVE_STDBOOL_H"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/src/bem3d/configure b/src/bem3d/configure index c23e2dd..e0e7146 100755 --- a/src/bem3d/configure +++ b/src/bem3d/configure @@ -3590,7 +3590,7 @@ fi # Files: -DX_PROJECT=Hilbert 3D +DX_PROJECT="Hilbert 3D" DX_CONFIG=Doxyfile @@ -9337,7 +9337,7 @@ $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi -ac_config_files="$ac_config_files Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile" +ac_config_files="$ac_config_files Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile src/laplace/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -10155,6 +10155,7 @@ do "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/boundary_mesh/Makefile") CONFIG_FILES="$CONFIG_FILES src/boundary_mesh/Makefile" ;; "src/spaces/Makefile") CONFIG_FILES="$CONFIG_FILES src/spaces/Makefile" ;; + "src/laplace/Makefile") CONFIG_FILES="$CONFIG_FILES src/laplace/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; esac diff --git a/src/bem3d/configure.ac b/src/bem3d/configure.ac index bdf94fb..06f3daf 100644 --- a/src/bem3d/configure.ac +++ b/src/bem3d/configure.ac @@ -7,7 +7,7 @@ AC_PROG_CXX AC_PROG_RANLIB AC_PROG_INSTALL -DX_INIT_DOXYGEN([Hilbert 3D], [Doxyfile], [docs/doxygen]) +DX_INIT_DOXYGEN(["Hilbert 3D"], [Doxyfile], [docs/doxygen]) AX_BOOST_BASE([1.38.0]) AX_BOOST_REGEX @@ -15,6 +15,6 @@ AX_HLIB AC_HEADER_STDBOOL -AC_CONFIG_FILES([Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile]) +AC_CONFIG_FILES([Makefile src/Makefile src/boundary_mesh/Makefile src/spaces/Makefile src/laplace/Makefile]) AC_OUTPUT diff --git a/src/bem3d/src/HLibOperator.cpp b/src/bem3d/src/HLibOperator.cpp new file mode 100644 index 0000000..f86b745 --- /dev/null +++ b/src/bem3d/src/HLibOperator.cpp @@ -0,0 +1,15 @@ +#include "HLibOperator_fwd.hpp" + +extern "C" +{ +# include "HLib/rkmatrix.h" +} + +void +HLibInitializer::initialize() +{ + init_rkmatrices(0); +} + +bool HLibInitializer::hLibInitialized = false; + diff --git a/src/bem3d/src/HLibOperator.hpp b/src/bem3d/src/HLibOperator.hpp new file mode 100644 index 0000000..21a238a --- /dev/null +++ b/src/bem3d/src/HLibOperator.hpp @@ -0,0 +1,8 @@ +#ifndef HILBERT3D_HLIBOPERATOR_HPP_GUARD_ +#define HILBERT3D_HLIBOPERATOR_HPP_GUARD_ + +#include "HLibOperator_fwd.hpp" +#include "HLibOperator_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/HLibOperator_fwd.hpp b/src/bem3d/src/HLibOperator_fwd.hpp new file mode 100644 index 0000000..dcf06f7 --- /dev/null +++ b/src/bem3d/src/HLibOperator_fwd.hpp @@ -0,0 +1,123 @@ +#ifndef HILBERT3D_HLIBOPERATOR_FWD_HPP_GUARD_ +#define HILBERT3D_HLIBOPERATOR_FWD_HPP_GUARD_ + +#include + +extern "C" +{ +# include "HLib/cluster.h" +# include "HLib/supermatrix.h" +# include "HLib/krylov.h" +# include "HLib/graphics.h" +# include "HLib/aca.h" +} + +#define ACA_KMAX 1e4 +#define ACA_EPS 1e-5 +#define ACA_STRATEGY HLIB_ACA_RELATIVE + +enum MatrixSymmetry +{ + SymmetricMatrix, + UnsymmetricMatrix +}; + +enum HLibOperatorConstructionMethod +{ + BuildHLibOperatorFull, + BuildHLibOperatorFromCluster +}; + +class HLibInitializer +{ + public: + static void initialize(); + + private: + static bool hLibInitialized; +}; + +/** + * @brief Base class for operators which are based upon HLib. + * + * This class template encapsulates most calls to the hierarchical matrix + * library HLib which are necessary to build an operator, which is cheap in + * terms of storage and computational complexity. + * + * The class takes an ansatz space and a test space class as template + * parameters. Spaces, which are used as template parameters, must provide the + * createClusterFactory method and the getNumberOfElements method. In other + * words they must implement the space::HLibSpace class. Apart from implementing + * the createClusterFactory method within the finite element space classes, it + * should not be necessary to make further calls to HLib functions. + * + * The third template parameter, symmetry, takes either the values + * UnsymmetricMatrix or SymmetricMatrix. For the symmetric case, we provide + * a more efficient implementation of the adaptive cross approximation + * algorithm, c.f. fillSupermatrixAca. + */ +template < class TAnsatzSpace, class TTestSpace, + enum MatrixSymmetry symmetry = UnsymmetricMatrix > +class HLibOperator +{ + public: + static const double defaultEpsForAcaAlgorithm = 1e-8; + static const double defaultAimedResidualForGMRes = 1e-6; + static const double defaultMaximumNumberOfStepsForGMRes = 100; + static const int hLibMinimalAdmissableBlockSize = 30; + static const enum HLibOperatorConstructionMethod + defaultOperatorConstructionMethod = BuildHLibOperatorFromCluster; + + HLibOperator( + const TAnsatzSpace& ansatzSpace, + const TTestSpace& testSpace, + double (&computeEntry)( const typename TAnsatzSpace::Element& e1, + const typename TTestSpace::Element& e2 ), + double acaEps = defaultEpsForAcaAlgorithm, + enum HLibOperatorConstructionMethod method = + defaultOperatorConstructionMethod); + virtual ~HLibOperator(); + + std::vector< double > solveGMRes( + const std::vector< double >& rhs, + double aimedResidual = defaultAimedResidualForGMRes, + double maximumNumberOfSteps = defaultMaximumNumberOfStepsForGMRes + ) const; + + private: + const TAnsatzSpace ansatzSpace_; + const TTestSpace testSpace_; + double (&computeEntry_)( const typename TAnsatzSpace::Element& e1, + const typename TTestSpace::Element& e2 ); + supermatrix* supermatrix_; + clustertree* rowClusterTree_; + clustertree* columnClusterTree_; + + static void fillSupermatrixAca( + supermatrix* matrix, + const cluster* rowCluster, + const cluster* columnCluster, + void* data, + double acaEps); + + /** + * @brief Wrapper method around the computeEntry_ function. + * + * @param i Index of an element within the ansatz space with respect to + * HLib's internal order. + * @param j Index of an element within the test space with respect to + * HLib's internal order. + * @param data A valid pointer to an HLibOperator instance. + * + * Using the HLibOperator instance data points to, this function determines + * the elements within the respective finite element spaces and calls the + * computeEntry_ function. + * + * @returns The result the computeEntry_ function returns for the determined + * space elements. + */ + static double computeEntryHelper( int i, int j, void* data ); +}; + +#endif + diff --git a/src/bem3d/src/HLibOperator_tmpl.cpp b/src/bem3d/src/HLibOperator_tmpl.cpp new file mode 100644 index 0000000..63005be --- /dev/null +++ b/src/bem3d/src/HLibOperator_tmpl.cpp @@ -0,0 +1,201 @@ +#include "HLibOperator_fwd.hpp" + +template < class TAnsatzSpace, class TTestSpace, + enum MatrixSymmetry symmetry > +HLibOperator< TAnsatzSpace, TTestSpace, symmetry >::HLibOperator( + const TAnsatzSpace& ansatzSpace, + const TTestSpace& testSpace, + double (&computeEntry)( const typename TAnsatzSpace::Element& e1, + const typename TTestSpace::Element& e2 ), + double acaEps, + enum HLibOperatorConstructionMethod method ) + : ansatzSpace_(ansatzSpace), testSpace_(testSpace), + computeEntry_(computeEntry), supermatrix_(0), + rowClusterTree_(0), columnClusterTree_(0) +{ + HLibInitializer::initialize(); + + unsigned int numberOfAnsatzElements = ansatzSpace_.getNumberOfElements(); + clusterfactory* ansatzFactory = ansatzSpace_.createClusterFactory(); + + + columnClusterTree_ = create_clustertree( + ansatzFactory, HLIB_GEOMETRIC, 30, /* XXX: What is this constant? */ + numberOfAnsatzElements * numberOfAnsatzElements); + del_clusterfactory( ansatzFactory ); + + write_clustertree(columnClusterTree_,"clustertree.txt"); + output_clustertree(columnClusterTree_,"clustertree.ps",0); + + unsigned int numberOfTestElements = testSpace_.getNumberOfElements(); + if ( &ansatzSpace == &testSpace ) + { + std::cerr << "TestSpace = AnsatzSpace" << std::endl; + rowClusterTree_ = columnClusterTree_; + } + else + { + clusterfactory* testFactory = testSpace_.createClusterFactory(); + rowClusterTree_ = create_clustertree( + testFactory, HLIB_GEOMETRIC, 30, /* XXX: What is this constant? */ + numberOfTestElements * numberOfTestElements ); + del_clusterfactory( testFactory ); + } + + if ( method == BuildHLibOperatorFull ) + { + supermatrix_ = build_full_supermatrix( + rowClusterTree_->root, columnClusterTree_->root ); + } + else if ( method == BuildHLibOperatorFromCluster ) + { + //assert(0); // TODO/XXX: Not implemented yet! + supermatrix_ = build_supermatrix_from_cluster( + rowClusterTree_->root, columnClusterTree_->root, + 1, 30, HLIB_MINADM); + } + else + { + assert(0); + } + + outputrank_supermatrix(supermatrix_,"V.ps"); +// print_cluster(rowClusterTree_->root,0,0); + + fillSupermatrixAca( + supermatrix_, + rowClusterTree_->root, + columnClusterTree_->root, + (void*) this, + acaEps); + +// fill_supermatrix_aca(supermatrix_,rowClusterTree_->root,columnClusterTree_->root,(void*) this, computeEntryHelper, acaEps); +} + +template < class TAnsatzSpace, class TTestSpace, + enum MatrixSymmetry symmetry > +HLibOperator< TAnsatzSpace, TTestSpace, symmetry >::~HLibOperator() +{ + del_supermatrix( supermatrix_ ); +} + +template < class TAnsatzSpace, class TTestSpace, + enum MatrixSymmetry symmetry > +std::vector< double > +HLibOperator< TAnsatzSpace, TTestSpace, symmetry >::solveGMRes( + const std::vector< double >& rhs, + double aimedResidual, + double maximumNumberOfSteps) const +{ + if ( rhs.size() != testSpace_.getNumberOfElements() ) + { + assert(0); /* TODO: Replace by an exception, name: *DimensionMismatch* */ + } + + std::vector< double > solution( ansatzSpace_.getNumberOfElements(), 0 ); + + /* TODO: Document this call and the effects for certain operators. + * Should it be possible to specify preconditioner matrices? + */ + solve_gmres_supermatrix( + supermatrix_, (double*)(&rhs[0]), &solution[0], + aimedResidual, maximumNumberOfSteps, + 0, HLIB_PREC_LU, + 0, HLIB_EVAL_DEFAULT, + 0); + + return solution; +} + + +// XXX: MK: is it necessary to have a template function here? +template < class TAnsatzSpace, class TTestSpace, + enum MatrixSymmetry symmetry > +void +HLibOperator< TAnsatzSpace, TTestSpace, symmetry >::fillSupermatrixAca( + supermatrix* matrix, + const cluster* rowCluster, + const cluster* columnCluster, + void* data, + double acaEps) +{ + // TODO/XXX: At the moment, this function only covers the full case, i.e. + // the constructor needs to be called with BuildHLibOperatorFull. + + rkmatrix* r = matrix->r; + int rank; + + if ( matrix->f != 0 ) + { + fullmatrix* full = matrix->f; + int rowClusterSize = rowCluster->size; + + for ( int i = 0; i < rowCluster->size; ++i ) + { + for ( int j = 0; j < columnCluster->size; ++j ) + { + full->e[ i + j*rowClusterSize ] = computeEntryHelper( + rowCluster->start + i, + columnCluster->start + j, + data ); + } + } + return; + } + + if ( r != 0) + { + if ( r->rows > r->cols ) + rank = r->cols; + else + rank = r->rows; + + if ( rank > ACA_KMAX) + rank = ACA_KMAX; + + r->k = rank; + r->a = allocate_matrix(r->rows,rank); + r->b = allocate_matrix(r->cols,rank); + + r->kt = newaca_fill_block(r->a, r->b, r->rows, r->cols, + rowCluster->start, columnCluster->start, + computeEntryHelper, data, + rank, acaEps, ACA_STRATEGY); + + r->a = (double*) realloc(r->a,r->rows*r->kt*sizeof(double)); + r->b = (double*) realloc(r->b,r->cols*r->kt*sizeof(double)); + r->k = r->kt; + + return; + } + + if(rowCluster->sons>0) { + if(columnCluster->sons>0) { + for(int i=0;isons;++i) + for(int j=0;jsons;++j) { + int s=i+j*rowCluster->sons; + fillSupermatrixAca(matrix->s[s],rowCluster->son[i],columnCluster->son[j],data,acaEps); + } + } else { + for(int i=0;isons;++i) + fillSupermatrixAca(matrix->s[i],rowCluster->son[i],columnCluster,data,acaEps); + } + } else { + for(int i=0;isons;++i) + fillSupermatrixAca(matrix->s[i],rowCluster,columnCluster->son[i],data,acaEps); + } + +} + +template < class TAnsatzSpace, class TTestSpace, + enum MatrixSymmetry symmetry > +double +HLibOperator< TAnsatzSpace, TTestSpace, symmetry >::computeEntryHelper( + int i, int j, void* data ) +{ + HLibOperator* op = static_cast< HLibOperator* >( data ); + int ourI = op->rowClusterTree_->dof2idx[ i ]; + int ourJ = op->columnClusterTree_->dof2idx[ j ]; + return op->computeEntry_( op->ansatzSpace_[ ourI ], op->testSpace_[ ourJ ] ); +} + diff --git a/src/bem3d/src/Makefile b/src/bem3d/src/Makefile new file mode 100644 index 0000000..90fcf89 --- /dev/null +++ b/src/bem3d/src/Makefile @@ -0,0 +1,582 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +pkgdatadir = $(datadir)/hilbert3d +pkgincludedir = $(includedir)/hilbert3d +pkglibdir = $(libdir)/hilbert3d +pkglibexecdir = $(libexecdir)/hilbert3d +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/config.h.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_blas.m4 \ + $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_regex.m4 $(top_srcdir)/m4/ax_hlib.m4 \ + $(top_srcdir)/m4/ax_lapack.m4 \ + $(top_srcdir)/m4/ax_prog_doxygen.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run tar +AUTOCONF = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoconf +AUTOHEADER = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoheader +AUTOMAKE = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run automake-1.11 +AWK = mawk +BLAS_LIBS = -lblas +BOOST_CPPFLAGS = -I/usr/include +BOOST_LDFLAGS = -L/usr/lib +BOOST_REGEX_LIB = -lboost_regex-mt +BOOST_ROOT_PATH = /usr +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CXX = g++ +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DOXYGEN_PAPER_SIZE = +DX_CONFIG = Doxyfile +DX_DOCDIR = docs/doxygen +DX_DOT = +DX_DOXYGEN = +DX_DVIPS = +DX_EGREP = +DX_ENV = SRCDIR='.' PROJECT='Hilbert 3D' DOCDIR='docs/doxygen' VERSION='0.1.0' HAVE_DOT='NO' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='NO' GENERATE_LATEX='NO' +DX_FLAG_chi = 0 +DX_FLAG_chm = 0 +DX_FLAG_doc = 0 +DX_FLAG_dot = 0 +DX_FLAG_html = 0 +DX_FLAG_man = 0 +DX_FLAG_pdf = 0 +DX_FLAG_ps = 0 +DX_FLAG_rtf = 0 +DX_FLAG_xml = 0 +DX_HHC = +DX_LATEX = +DX_MAKEINDEX = +DX_PDFLATEX = +DX_PERL = /usr/bin/perl +DX_PROJECT = Hilbert 3D +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +F77 = gfortran +FFLAGS = -g -O2 +FLIBS = -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2 -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../.. -L/usr/lib/x86_64-linux-gnu -lgfortran -lm +GREP = /bin/grep +HLIB_CPPFLAGS = -I/usr/local/include +HLIB_LDFLAGS = -L/usr/local/lib +HLIB_LIB = -lhmatrix +HLIB_ROOT_PATH = /usr/local +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LAPACK_LIBS = -llapack +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +OBJEXT = o +PACKAGE = hilbert3d +PACKAGE_BUGREPORT = markus.mayr@tuwien.ac.at +PACKAGE_NAME = Hilbert 3D +PACKAGE_STRING = Hilbert 3D 0.1.0 +PACKAGE_TARNAME = hilbert3d +PACKAGE_URL = http://83.169.35.184/cgi-bin/gitweb?p=bem3d.git +PACKAGE_VERSION = 0.1.0 +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/bash +STRIP = +VERSION = 0.1.0 +abs_builddir = /home/treecity/workspace/bacc/src/bem3d/src +abs_srcdir = /home/treecity/workspace/bacc/src/bem3d/src +abs_top_builddir = /home/treecity/workspace/bacc/src/bem3d +abs_top_srcdir = /home/treecity/workspace/bacc/src/bem3d +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = gfortran +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +SUBDIRS = boundary_mesh spaces laplace +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status src/config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-hdr \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/bem3d/src/Makefile.am b/src/bem3d/src/Makefile.am index c413d10..4f3282b 100644 --- a/src/bem3d/src/Makefile.am +++ b/src/bem3d/src/Makefile.am @@ -1,2 +1,2 @@ -SUBDIRS = boundary_mesh spaces laplace +SUBDIRS = boundary_mesh spaces laplace diff --git a/src/bem3d/src/Makefile.in b/src/bem3d/src/Makefile.in index 32853c9..af23781 100644 --- a/src/bem3d/src/Makefile.in +++ b/src/bem3d/src/Makefile.in @@ -218,7 +218,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = boundary_mesh spaces laplace +SUBDIRS = boundary_mesh spaces laplace all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive diff --git a/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-CouldNotDispatchCall.Po b/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-CouldNotDispatchCall.Po new file mode 100644 index 0000000..51de0f9 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-CouldNotDispatchCall.Po @@ -0,0 +1,213 @@ +libhilbert_mesh_a-CouldNotDispatchCall.o: \ + exception/CouldNotDispatchCall.cpp exception/CouldNotDispatchCall.hpp \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/stdexcept /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/stl_algobase.h /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/postypes.h \ + /usr/include/c++/4.5/cwchar /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/cctype /usr/include/ctype.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/basic_string.tcc + +exception/CouldNotDispatchCall.hpp: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/stdexcept: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/basic_string.tcc: diff --git a/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-DispatchIdNotSet.Po b/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-DispatchIdNotSet.Po new file mode 100644 index 0000000..64582a8 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-DispatchIdNotSet.Po @@ -0,0 +1,212 @@ +libhilbert_mesh_a-DispatchIdNotSet.o: exception/DispatchIdNotSet.cpp \ + exception/DispatchIdNotSet.hpp /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/stdexcept /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/stl_algobase.h /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/postypes.h \ + /usr/include/c++/4.5/cwchar /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/cctype /usr/include/ctype.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/basic_string.tcc + +exception/DispatchIdNotSet.hpp: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/stdexcept: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/basic_string.tcc: diff --git a/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-FlexibleMesh.Po b/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-FlexibleMesh.Po new file mode 100644 index 0000000..27fd0e8 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-FlexibleMesh.Po @@ -0,0 +1,1314 @@ +libhilbert_mesh_a-FlexibleMesh.o: FlexibleMesh.cpp FlexibleMesh.hpp \ + FaceDispatch.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc ../generic/Singleton.hpp \ + ../generic/Singleton_tmpl.cpp ../generic/Singleton.hpp \ + ../generic/TypeList.hpp ../generic/BaseTypes.hpp \ + ../generic/BaseTypes.hpp exception/DispatchIdNotSet.hpp \ + /usr/include/c++/4.5/stdexcept /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/postypes.h /usr/include/c++/4.5/cwchar \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/cctype /usr/include/ctype.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/bits/basic_string.tcc FaceDispatch_tmpl.cpp \ + exception/CouldNotDispatchCall.hpp /usr/include/c++/4.5/cassert \ + /usr/include/assert.h Face.hpp /usr/include/c++/4.5/iterator \ + /usr/include/c++/4.5/ostream /usr/include/c++/4.5/ios \ + /usr/include/c++/4.5/bits/ios_base.h \ + /usr/include/c++/4.5/bits/locale_classes.h \ + /usr/include/c++/4.5/bits/locale_classes.tcc \ + /usr/include/c++/4.5/streambuf /usr/include/c++/4.5/bits/streambuf.tcc \ + /usr/include/c++/4.5/bits/basic_ios.h \ + /usr/include/c++/4.5/bits/locale_facets.h /usr/include/c++/4.5/cwctype \ + /usr/include/wctype.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/4.5/bits/streambuf_iterator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/4.5/bits/locale_facets.tcc \ + /usr/include/c++/4.5/bits/basic_ios.tcc \ + /usr/include/c++/4.5/bits/ostream.tcc /usr/include/c++/4.5/istream \ + /usr/include/c++/4.5/bits/istream.tcc \ + /usr/include/c++/4.5/bits/stream_iterator.h types.hpp \ + /usr/include/c++/4.5/limits exception.hpp \ + exception/NoMatchingFaceType.hpp Face_tmpl.cpp \ + /usr/include/c++/4.5/sstream /usr/include/c++/4.5/bits/sstream.tcc \ + HalfEdge.hpp HalfEdge_tmpl.cpp Vertex.hpp ../generic/GenericVector.hpp \ + ../generic/GenericVector_tmpl.cpp ../generic/GenericVector.hpp \ + Vertex_tmpl.cpp Mesh.hpp MeshBuilder.hpp MeshBuilder_tmpl.cpp \ + /usr/include/boost/type_traits/is_pointer.hpp \ + /usr/include/boost/type_traits/is_member_pointer.hpp \ + /usr/include/boost/type_traits/config.hpp /usr/include/boost/config.hpp \ + /usr/include/boost/config/user.hpp \ + /usr/include/boost/config/select_compiler_config.hpp \ + /usr/include/boost/config/compiler/gcc.hpp \ + /usr/include/boost/config/select_stdlib_config.hpp \ + /usr/include/boost/config/no_tr1/utility.hpp \ + /usr/include/c++/4.5/utility /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/boost/config/stdlib/libstdcpp3.hpp \ + /usr/include/boost/config/select_platform_config.hpp \ + /usr/include/boost/config/platform/linux.hpp \ + /usr/include/c++/4.5/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/boost/config/posix_features.hpp \ + /usr/include/boost/config/suffix.hpp \ + /usr/include/boost/detail/workaround.hpp \ + /usr/include/boost/type_traits/is_member_function_pointer.hpp \ + /usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp \ + /usr/include/boost/type_traits/remove_cv.hpp \ + /usr/include/boost/type_traits/broken_compiler_spec.hpp \ + /usr/include/boost/mpl/aux_/lambda_support.hpp \ + /usr/include/boost/mpl/aux_/config/lambda.hpp \ + /usr/include/boost/mpl/aux_/config/ttp.hpp \ + /usr/include/boost/mpl/aux_/config/msvc.hpp \ + /usr/include/boost/mpl/aux_/config/gcc.hpp \ + /usr/include/boost/mpl/aux_/config/workaround.hpp \ + /usr/include/boost/mpl/aux_/config/ctps.hpp \ + /usr/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /usr/include/boost/type_traits/detail/type_trait_def.hpp \ + /usr/include/boost/type_traits/detail/template_arity_spec.hpp \ + /usr/include/boost/mpl/int.hpp /usr/include/boost/mpl/int_fwd.hpp \ + /usr/include/boost/mpl/aux_/adl_barrier.hpp \ + /usr/include/boost/mpl/aux_/config/adl.hpp \ + /usr/include/boost/mpl/aux_/config/intel.hpp \ + /usr/include/boost/mpl/aux_/nttp_decl.hpp \ + /usr/include/boost/mpl/aux_/config/nttp.hpp \ + /usr/include/boost/mpl/aux_/integral_wrapper.hpp \ + /usr/include/boost/mpl/integral_c_tag.hpp \ + /usr/include/boost/mpl/aux_/config/static_constant.hpp \ + /usr/include/boost/mpl/aux_/static_cast.hpp \ + /usr/include/boost/preprocessor/cat.hpp \ + /usr/include/boost/preprocessor/config/config.hpp \ + /usr/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/params.hpp \ + /usr/include/boost/mpl/aux_/config/preprocessor.hpp \ + /usr/include/boost/preprocessor/comma_if.hpp \ + /usr/include/boost/preprocessor/punctuation/comma_if.hpp \ + /usr/include/boost/preprocessor/control/if.hpp \ + /usr/include/boost/preprocessor/control/iif.hpp \ + /usr/include/boost/preprocessor/logical/bool.hpp \ + /usr/include/boost/preprocessor/facilities/empty.hpp \ + /usr/include/boost/preprocessor/punctuation/comma.hpp \ + /usr/include/boost/preprocessor/repeat.hpp \ + /usr/include/boost/preprocessor/repetition/repeat.hpp \ + /usr/include/boost/preprocessor/debug/error.hpp \ + /usr/include/boost/preprocessor/detail/auto_rec.hpp \ + /usr/include/boost/preprocessor/tuple/eat.hpp \ + /usr/include/boost/preprocessor/inc.hpp \ + /usr/include/boost/preprocessor/arithmetic/inc.hpp \ + /usr/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /usr/include/boost/type_traits/detail/type_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_def.hpp \ + /usr/include/boost/type_traits/integral_constant.hpp \ + /usr/include/boost/mpl/bool.hpp /usr/include/boost/mpl/bool_fwd.hpp \ + /usr/include/boost/mpl/integral_c.hpp \ + /usr/include/boost/mpl/integral_c_fwd.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/ice_and.hpp \ + /usr/include/boost/type_traits/detail/ice_not.hpp \ + /usr/include/boost/utility/enable_if.hpp Mesh.cpp \ + /usr/include/c++/4.5/iostream /usr/include/c++/4.5/set \ + /usr/include/c++/4.5/bits/stl_tree.h /usr/include/c++/4.5/bits/stl_set.h \ + /usr/include/c++/4.5/bits/stl_multiset.h /usr/include/c++/4.5/list \ + /usr/include/c++/4.5/bits/stl_list.h /usr/include/c++/4.5/bits/list.tcc \ + exception/NoMatchingFaceType_tmpl.hpp exception/NoMatchingFaceType.hpp \ + exception/NoMatchingFaceType_tmpl.cpp /usr/include/c++/4.5/cstring \ + /usr/include/string.h /usr/include/bits/string3.h face/Triangle_tmpl.hpp \ + face/Triangle.hpp face/../../generic/BaseTypes.hpp \ + face/Triangle_tmpl.cpp face/Triangle_tmpl.hpp face/../Face.hpp \ + face/Parallelogram_tmpl.hpp face/Parallelogram.hpp \ + face/ConvexQuadrilateral.hpp face/Quadrilateral.hpp face/../types.hpp \ + face/Parallelogram_tmpl.cpp /usr/include/c++/4.5/cmath \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/c++/4.5/bits/cmath.tcc \ + face/ConvexQuadrilateral_tmpl.hpp face/ConvexQuadrilateral_tmpl.cpp \ + face/Quadrilateral_tmpl.hpp face/Quadrilateral_tmpl.cpp \ + face/Parallelogram_tmpl.hpp algorithm/HandleObj.hpp \ + algorithm/HandleObj_tmpl.cpp /usr/include/c++/4.5/fstream \ + /usr/include/c++/4.5/bits/codecvt.h /usr/include/c++/4.5/cstdio \ + /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h \ + /usr/include/c++/4.5/bits/fstream.tcc /usr/include/boost/regex.hpp \ + /usr/include/boost/regex/config.hpp /usr/include/boost/regex/user.hpp \ + /usr/include/boost/regex/config/cwchar.hpp \ + /usr/include/boost/config/auto_link.hpp \ + /usr/include/boost/regex/v4/regex.hpp \ + /usr/include/boost/regex/v4/regex_workaround.hpp \ + /usr/include/c++/4.5/climits \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h /usr/include/c++/4.5/map \ + /usr/include/c++/4.5/bits/stl_map.h \ + /usr/include/c++/4.5/bits/stl_multimap.h /usr/include/boost/limits.hpp \ + /usr/include/boost/assert.hpp /usr/include/boost/cstdint.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h \ + /usr/include/stdint.h /usr/include/boost/throw_exception.hpp \ + /usr/include/boost/exception/detail/attribute_noreturn.hpp \ + /usr/include/boost/exception/exception.hpp \ + /usr/include/boost/current_function.hpp \ + /usr/include/boost/scoped_ptr.hpp \ + /usr/include/boost/smart_ptr/scoped_ptr.hpp \ + /usr/include/boost/checked_delete.hpp /usr/include/c++/4.5/memory \ + /usr/include/c++/4.5/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.5/backward/auto_ptr.h \ + /usr/include/boost/smart_ptr/detail/operator_bool.hpp \ + /usr/include/boost/scoped_array.hpp \ + /usr/include/boost/smart_ptr/scoped_array.hpp \ + /usr/include/boost/shared_ptr.hpp \ + /usr/include/boost/smart_ptr/shared_ptr.hpp \ + /usr/include/boost/config/no_tr1/memory.hpp \ + /usr/include/boost/smart_ptr/detail/shared_count.hpp \ + /usr/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /usr/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /usr/include/boost/detail/sp_typeinfo.hpp /usr/include/c++/4.5/typeinfo \ + /usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /usr/include/c++/4.5/functional \ + /usr/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /usr/include/boost/smart_ptr/detail/yield_k.hpp \ + /usr/include/boost/memory_order.hpp /usr/include/c++/4.5/locale \ + /usr/include/c++/4.5/bits/locale_facets_nonio.h \ + /usr/include/c++/4.5/ctime \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/4.5/bits/locale_facets_nonio.tcc \ + /usr/include/boost/regex_fwd.hpp \ + /usr/include/boost/regex/v4/regex_fwd.hpp \ + /usr/include/boost/regex/regex_traits.hpp \ + /usr/include/boost/regex/v4/regex_traits.hpp \ + /usr/include/boost/regex/v4/syntax_type.hpp \ + /usr/include/boost/regex/v4/error_type.hpp \ + /usr/include/boost/regex/v4/regex_traits_defaults.hpp \ + /usr/include/boost/regex/v4/cpp_regex_traits.hpp \ + /usr/include/boost/regex/pattern_except.hpp \ + /usr/include/boost/regex/pending/static_mutex.hpp \ + /usr/include/boost/regex/v4/primary_transform.hpp \ + /usr/include/boost/regex/pending/object_cache.hpp \ + /usr/include/boost/regex/v4/c_regex_traits.hpp \ + /usr/include/boost/mpl/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/type_wrapper.hpp \ + /usr/include/boost/mpl/aux_/yes_no.hpp \ + /usr/include/boost/mpl/aux_/config/arrays.hpp \ + /usr/include/boost/mpl/aux_/config/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/config/msvc_typename.hpp \ + /usr/include/boost/static_assert.hpp \ + /usr/include/boost/regex/v4/match_flags.hpp \ + /usr/include/boost/regex/v4/regex_raw_buffer.hpp \ + /usr/include/boost/regex/v4/char_regex_traits.hpp \ + /usr/include/boost/regex/v4/states.hpp \ + /usr/include/boost/regex/v4/regbase.hpp \ + /usr/include/boost/regex/v4/iterator_traits.hpp \ + /usr/include/boost/regex/v4/basic_regex.hpp \ + /usr/include/boost/type_traits/is_same.hpp \ + /usr/include/boost/functional/hash.hpp \ + /usr/include/boost/functional/hash/hash.hpp \ + /usr/include/boost/functional/hash/hash_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float.hpp \ + /usr/include/boost/functional/hash/detail/float_functions.hpp \ + /usr/include/boost/config/no_tr1/cmath.hpp \ + /usr/include/boost/functional/hash/detail/limits.hpp \ + /usr/include/boost/integer/static_log2.hpp \ + /usr/include/boost/integer_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float_generic.hpp \ + /usr/include/boost/functional/hash/extensions.hpp \ + /usr/include/boost/detail/container_fwd.hpp \ + /usr/include/boost/regex/v4/basic_regex_creator.hpp \ + /usr/include/boost/regex/v4/basic_regex_parser.hpp \ + /usr/include/boost/regex/v4/sub_match.hpp \ + /usr/include/boost/regex/v4/regex_format.hpp \ + /usr/include/boost/type_traits/is_function.hpp \ + /usr/include/boost/type_traits/is_reference.hpp \ + /usr/include/boost/type_traits/detail/false_result.hpp \ + /usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + /usr/include/boost/type_traits/is_class.hpp \ + /usr/include/boost/type_traits/intrinsics.hpp \ + /usr/include/boost/type_traits/is_volatile.hpp \ + /usr/include/boost/type_traits/is_convertible.hpp \ + /usr/include/boost/type_traits/detail/yes_no_type.hpp \ + /usr/include/boost/type_traits/is_array.hpp \ + /usr/include/boost/type_traits/add_reference.hpp \ + /usr/include/boost/type_traits/ice.hpp \ + /usr/include/boost/type_traits/detail/ice_or.hpp \ + /usr/include/boost/type_traits/detail/ice_eq.hpp \ + /usr/include/boost/type_traits/is_arithmetic.hpp \ + /usr/include/boost/type_traits/is_integral.hpp \ + /usr/include/boost/type_traits/is_float.hpp \ + /usr/include/boost/type_traits/is_void.hpp \ + /usr/include/boost/type_traits/is_abstract.hpp \ + /usr/include/boost/type_traits/remove_pointer.hpp \ + /usr/include/boost/mpl/if.hpp /usr/include/boost/mpl/aux_/value_wknd.hpp \ + /usr/include/boost/mpl/aux_/config/integral.hpp \ + /usr/include/boost/mpl/aux_/config/eti.hpp \ + /usr/include/boost/mpl/aux_/na_spec.hpp \ + /usr/include/boost/mpl/lambda_fwd.hpp \ + /usr/include/boost/mpl/void_fwd.hpp /usr/include/boost/mpl/aux_/na.hpp \ + /usr/include/boost/mpl/aux_/na_fwd.hpp \ + /usr/include/boost/mpl/aux_/lambda_arity_param.hpp \ + /usr/include/boost/mpl/aux_/arity.hpp \ + /usr/include/boost/mpl/aux_/config/dtp.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/enum.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp \ + /usr/include/boost/mpl/limits/arity.hpp \ + /usr/include/boost/preprocessor/logical/and.hpp \ + /usr/include/boost/preprocessor/logical/bitand.hpp \ + /usr/include/boost/preprocessor/identity.hpp \ + /usr/include/boost/preprocessor/facilities/identity.hpp \ + /usr/include/boost/preprocessor/empty.hpp \ + /usr/include/boost/preprocessor/arithmetic/add.hpp \ + /usr/include/boost/preprocessor/arithmetic/dec.hpp \ + /usr/include/boost/preprocessor/control/while.hpp \ + /usr/include/boost/preprocessor/list/fold_left.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_left.hpp \ + /usr/include/boost/preprocessor/control/expr_iif.hpp \ + /usr/include/boost/preprocessor/list/adt.hpp \ + /usr/include/boost/preprocessor/detail/is_binary.hpp \ + /usr/include/boost/preprocessor/detail/check.hpp \ + /usr/include/boost/preprocessor/logical/compl.hpp \ + /usr/include/boost/preprocessor/list/fold_right.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_right.hpp \ + /usr/include/boost/preprocessor/list/reverse.hpp \ + /usr/include/boost/preprocessor/control/detail/while.hpp \ + /usr/include/boost/preprocessor/tuple/elem.hpp \ + /usr/include/boost/preprocessor/arithmetic/sub.hpp \ + /usr/include/boost/mpl/and.hpp \ + /usr/include/boost/mpl/aux_/config/use_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/nested_type_wknd.hpp \ + /usr/include/boost/mpl/aux_/include_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/config/compiler.hpp \ + /usr/include/boost/preprocessor/stringize.hpp \ + /usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp \ + /usr/include/boost/mpl/not.hpp \ + /usr/include/boost/regex/v4/match_results.hpp \ + /usr/include/boost/regex/v4/protected_call.hpp \ + /usr/include/boost/regex/v4/perl_matcher.hpp \ + /usr/include/boost/regex/v4/iterator_category.hpp \ + /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp \ + /usr/include/boost/regex/v4/perl_matcher_common.hpp \ + /usr/include/boost/regex/v4/instances.hpp \ + /usr/include/boost/regex/v4/regex_match.hpp \ + /usr/include/boost/regex/v4/regex_search.hpp \ + /usr/include/boost/regex/v4/regex_iterator.hpp \ + /usr/include/boost/regex/v4/regex_token_iterator.hpp \ + /usr/include/boost/regex/v4/regex_grep.hpp \ + /usr/include/boost/regex/v4/regex_replace.hpp \ + /usr/include/boost/regex/v4/regex_merge.hpp \ + /usr/include/boost/regex/v4/regex_split.hpp algorithm/../MeshBuilder.hpp \ + algorithm/RefineUniformly.hpp algorithm/../types.hpp \ + algorithm/../FaceDispatch.hpp algorithm/RefineUniformly_tmpl.cpp \ + algorithm/RefineUniformly.hpp FlexibleMesh_tmpl.cpp + +FlexibleMesh.hpp: + +FaceDispatch.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +../generic/Singleton.hpp: + +../generic/Singleton_tmpl.cpp: + +../generic/Singleton.hpp: + +../generic/TypeList.hpp: + +../generic/BaseTypes.hpp: + +../generic/BaseTypes.hpp: + +exception/DispatchIdNotSet.hpp: + +/usr/include/c++/4.5/stdexcept: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/bits/basic_string.tcc: + +FaceDispatch_tmpl.cpp: + +exception/CouldNotDispatchCall.hpp: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: + +Face.hpp: + +/usr/include/c++/4.5/iterator: + +/usr/include/c++/4.5/ostream: + +/usr/include/c++/4.5/ios: + +/usr/include/c++/4.5/bits/ios_base.h: + +/usr/include/c++/4.5/bits/locale_classes.h: + +/usr/include/c++/4.5/bits/locale_classes.tcc: + +/usr/include/c++/4.5/streambuf: + +/usr/include/c++/4.5/bits/streambuf.tcc: + +/usr/include/c++/4.5/bits/basic_ios.h: + +/usr/include/c++/4.5/bits/locale_facets.h: + +/usr/include/c++/4.5/cwctype: + +/usr/include/wctype.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h: + +/usr/include/c++/4.5/bits/streambuf_iterator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h: + +/usr/include/c++/4.5/bits/locale_facets.tcc: + +/usr/include/c++/4.5/bits/basic_ios.tcc: + +/usr/include/c++/4.5/bits/ostream.tcc: + +/usr/include/c++/4.5/istream: + +/usr/include/c++/4.5/bits/istream.tcc: + +/usr/include/c++/4.5/bits/stream_iterator.h: + +types.hpp: + +/usr/include/c++/4.5/limits: + +exception.hpp: + +exception/NoMatchingFaceType.hpp: + +Face_tmpl.cpp: + +/usr/include/c++/4.5/sstream: + +/usr/include/c++/4.5/bits/sstream.tcc: + +HalfEdge.hpp: + +HalfEdge_tmpl.cpp: + +Vertex.hpp: + +../generic/GenericVector.hpp: + +../generic/GenericVector_tmpl.cpp: + +../generic/GenericVector.hpp: + +Vertex_tmpl.cpp: + +Mesh.hpp: + +MeshBuilder.hpp: + +MeshBuilder_tmpl.cpp: + +/usr/include/boost/type_traits/is_pointer.hpp: + +/usr/include/boost/type_traits/is_member_pointer.hpp: + +/usr/include/boost/type_traits/config.hpp: + +/usr/include/boost/config.hpp: + +/usr/include/boost/config/user.hpp: + +/usr/include/boost/config/select_compiler_config.hpp: + +/usr/include/boost/config/compiler/gcc.hpp: + +/usr/include/boost/config/select_stdlib_config.hpp: + +/usr/include/boost/config/no_tr1/utility.hpp: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/boost/config/stdlib/libstdcpp3.hpp: + +/usr/include/boost/config/select_platform_config.hpp: + +/usr/include/boost/config/platform/linux.hpp: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/boost/config/posix_features.hpp: + +/usr/include/boost/config/suffix.hpp: + +/usr/include/boost/detail/workaround.hpp: + +/usr/include/boost/type_traits/is_member_function_pointer.hpp: + +/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp: + +/usr/include/boost/type_traits/remove_cv.hpp: + +/usr/include/boost/type_traits/broken_compiler_spec.hpp: + +/usr/include/boost/mpl/aux_/lambda_support.hpp: + +/usr/include/boost/mpl/aux_/config/lambda.hpp: + +/usr/include/boost/mpl/aux_/config/ttp.hpp: + +/usr/include/boost/mpl/aux_/config/msvc.hpp: + +/usr/include/boost/mpl/aux_/config/gcc.hpp: + +/usr/include/boost/mpl/aux_/config/workaround.hpp: + +/usr/include/boost/mpl/aux_/config/ctps.hpp: + +/usr/include/boost/type_traits/detail/cv_traits_impl.hpp: + +/usr/include/boost/type_traits/detail/type_trait_def.hpp: + +/usr/include/boost/type_traits/detail/template_arity_spec.hpp: + +/usr/include/boost/mpl/int.hpp: + +/usr/include/boost/mpl/int_fwd.hpp: + +/usr/include/boost/mpl/aux_/adl_barrier.hpp: + +/usr/include/boost/mpl/aux_/config/adl.hpp: + +/usr/include/boost/mpl/aux_/config/intel.hpp: + +/usr/include/boost/mpl/aux_/nttp_decl.hpp: + +/usr/include/boost/mpl/aux_/config/nttp.hpp: + +/usr/include/boost/mpl/aux_/integral_wrapper.hpp: + +/usr/include/boost/mpl/integral_c_tag.hpp: + +/usr/include/boost/mpl/aux_/config/static_constant.hpp: + +/usr/include/boost/mpl/aux_/static_cast.hpp: + +/usr/include/boost/preprocessor/cat.hpp: + +/usr/include/boost/preprocessor/config/config.hpp: + +/usr/include/boost/mpl/aux_/template_arity_fwd.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/params.hpp: + +/usr/include/boost/mpl/aux_/config/preprocessor.hpp: + +/usr/include/boost/preprocessor/comma_if.hpp: + +/usr/include/boost/preprocessor/punctuation/comma_if.hpp: + +/usr/include/boost/preprocessor/control/if.hpp: + +/usr/include/boost/preprocessor/control/iif.hpp: + +/usr/include/boost/preprocessor/logical/bool.hpp: + +/usr/include/boost/preprocessor/facilities/empty.hpp: + +/usr/include/boost/preprocessor/punctuation/comma.hpp: + +/usr/include/boost/preprocessor/repeat.hpp: + +/usr/include/boost/preprocessor/repetition/repeat.hpp: + +/usr/include/boost/preprocessor/debug/error.hpp: + +/usr/include/boost/preprocessor/detail/auto_rec.hpp: + +/usr/include/boost/preprocessor/tuple/eat.hpp: + +/usr/include/boost/preprocessor/inc.hpp: + +/usr/include/boost/preprocessor/arithmetic/inc.hpp: + +/usr/include/boost/mpl/aux_/config/overload_resolution.hpp: + +/usr/include/boost/type_traits/detail/type_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_def.hpp: + +/usr/include/boost/type_traits/integral_constant.hpp: + +/usr/include/boost/mpl/bool.hpp: + +/usr/include/boost/mpl/bool_fwd.hpp: + +/usr/include/boost/mpl/integral_c.hpp: + +/usr/include/boost/mpl/integral_c_fwd.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/ice_and.hpp: + +/usr/include/boost/type_traits/detail/ice_not.hpp: + +/usr/include/boost/utility/enable_if.hpp: + +Mesh.cpp: + +/usr/include/c++/4.5/iostream: + +/usr/include/c++/4.5/set: + +/usr/include/c++/4.5/bits/stl_tree.h: + +/usr/include/c++/4.5/bits/stl_set.h: + +/usr/include/c++/4.5/bits/stl_multiset.h: + +/usr/include/c++/4.5/list: + +/usr/include/c++/4.5/bits/stl_list.h: + +/usr/include/c++/4.5/bits/list.tcc: + +exception/NoMatchingFaceType_tmpl.hpp: + +exception/NoMatchingFaceType.hpp: + +exception/NoMatchingFaceType_tmpl.cpp: + +/usr/include/c++/4.5/cstring: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +face/Triangle_tmpl.hpp: + +face/Triangle.hpp: + +face/../../generic/BaseTypes.hpp: + +face/Triangle_tmpl.cpp: + +face/Triangle_tmpl.hpp: + +face/../Face.hpp: + +face/Parallelogram_tmpl.hpp: + +face/Parallelogram.hpp: + +face/ConvexQuadrilateral.hpp: + +face/Quadrilateral.hpp: + +face/../types.hpp: + +face/Parallelogram_tmpl.cpp: + +/usr/include/c++/4.5/cmath: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/c++/4.5/bits/cmath.tcc: + +face/ConvexQuadrilateral_tmpl.hpp: + +face/ConvexQuadrilateral_tmpl.cpp: + +face/Quadrilateral_tmpl.hpp: + +face/Quadrilateral_tmpl.cpp: + +face/Parallelogram_tmpl.hpp: + +algorithm/HandleObj.hpp: + +algorithm/HandleObj_tmpl.cpp: + +/usr/include/c++/4.5/fstream: + +/usr/include/c++/4.5/bits/codecvt.h: + +/usr/include/c++/4.5/cstdio: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h: + +/usr/include/c++/4.5/bits/fstream.tcc: + +/usr/include/boost/regex.hpp: + +/usr/include/boost/regex/config.hpp: + +/usr/include/boost/regex/user.hpp: + +/usr/include/boost/regex/config/cwchar.hpp: + +/usr/include/boost/config/auto_link.hpp: + +/usr/include/boost/regex/v4/regex.hpp: + +/usr/include/boost/regex/v4/regex_workaround.hpp: + +/usr/include/c++/4.5/climits: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/map: + +/usr/include/c++/4.5/bits/stl_map.h: + +/usr/include/c++/4.5/bits/stl_multimap.h: + +/usr/include/boost/limits.hpp: + +/usr/include/boost/assert.hpp: + +/usr/include/boost/cstdint.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/boost/throw_exception.hpp: + +/usr/include/boost/exception/detail/attribute_noreturn.hpp: + +/usr/include/boost/exception/exception.hpp: + +/usr/include/boost/current_function.hpp: + +/usr/include/boost/scoped_ptr.hpp: + +/usr/include/boost/smart_ptr/scoped_ptr.hpp: + +/usr/include/boost/checked_delete.hpp: + +/usr/include/c++/4.5/memory: + +/usr/include/c++/4.5/bits/stl_raw_storage_iter.h: + +/usr/include/c++/4.5/backward/auto_ptr.h: + +/usr/include/boost/smart_ptr/detail/operator_bool.hpp: + +/usr/include/boost/scoped_array.hpp: + +/usr/include/boost/smart_ptr/scoped_array.hpp: + +/usr/include/boost/shared_ptr.hpp: + +/usr/include/boost/smart_ptr/shared_ptr.hpp: + +/usr/include/boost/config/no_tr1/memory.hpp: + +/usr/include/boost/smart_ptr/detail/shared_count.hpp: + +/usr/include/boost/smart_ptr/bad_weak_ptr.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base.hpp: + +/usr/include/boost/smart_ptr/detail/sp_has_sync.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp: + +/usr/include/boost/detail/sp_typeinfo.hpp: + +/usr/include/c++/4.5/typeinfo: + +/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/boost/smart_ptr/detail/sp_convertible.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_pool.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_sync.hpp: + +/usr/include/boost/smart_ptr/detail/yield_k.hpp: + +/usr/include/boost/memory_order.hpp: + +/usr/include/c++/4.5/locale: + +/usr/include/c++/4.5/bits/locale_facets_nonio.h: + +/usr/include/c++/4.5/ctime: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h: + +/usr/include/libintl.h: + +/usr/include/c++/4.5/bits/locale_facets_nonio.tcc: + +/usr/include/boost/regex_fwd.hpp: + +/usr/include/boost/regex/v4/regex_fwd.hpp: + +/usr/include/boost/regex/regex_traits.hpp: + +/usr/include/boost/regex/v4/regex_traits.hpp: + +/usr/include/boost/regex/v4/syntax_type.hpp: + +/usr/include/boost/regex/v4/error_type.hpp: + +/usr/include/boost/regex/v4/regex_traits_defaults.hpp: + +/usr/include/boost/regex/v4/cpp_regex_traits.hpp: + +/usr/include/boost/regex/pattern_except.hpp: + +/usr/include/boost/regex/pending/static_mutex.hpp: + +/usr/include/boost/regex/v4/primary_transform.hpp: + +/usr/include/boost/regex/pending/object_cache.hpp: + +/usr/include/boost/regex/v4/c_regex_traits.hpp: + +/usr/include/boost/mpl/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/type_wrapper.hpp: + +/usr/include/boost/mpl/aux_/yes_no.hpp: + +/usr/include/boost/mpl/aux_/config/arrays.hpp: + +/usr/include/boost/mpl/aux_/config/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/config/msvc_typename.hpp: + +/usr/include/boost/static_assert.hpp: + +/usr/include/boost/regex/v4/match_flags.hpp: + +/usr/include/boost/regex/v4/regex_raw_buffer.hpp: + +/usr/include/boost/regex/v4/char_regex_traits.hpp: + +/usr/include/boost/regex/v4/states.hpp: + +/usr/include/boost/regex/v4/regbase.hpp: + +/usr/include/boost/regex/v4/iterator_traits.hpp: + +/usr/include/boost/regex/v4/basic_regex.hpp: + +/usr/include/boost/type_traits/is_same.hpp: + +/usr/include/boost/functional/hash.hpp: + +/usr/include/boost/functional/hash/hash.hpp: + +/usr/include/boost/functional/hash/hash_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float.hpp: + +/usr/include/boost/functional/hash/detail/float_functions.hpp: + +/usr/include/boost/config/no_tr1/cmath.hpp: + +/usr/include/boost/functional/hash/detail/limits.hpp: + +/usr/include/boost/integer/static_log2.hpp: + +/usr/include/boost/integer_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float_generic.hpp: + +/usr/include/boost/functional/hash/extensions.hpp: + +/usr/include/boost/detail/container_fwd.hpp: + +/usr/include/boost/regex/v4/basic_regex_creator.hpp: + +/usr/include/boost/regex/v4/basic_regex_parser.hpp: + +/usr/include/boost/regex/v4/sub_match.hpp: + +/usr/include/boost/regex/v4/regex_format.hpp: + +/usr/include/boost/type_traits/is_function.hpp: + +/usr/include/boost/type_traits/is_reference.hpp: + +/usr/include/boost/type_traits/detail/false_result.hpp: + +/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp: + +/usr/include/boost/type_traits/is_class.hpp: + +/usr/include/boost/type_traits/intrinsics.hpp: + +/usr/include/boost/type_traits/is_volatile.hpp: + +/usr/include/boost/type_traits/is_convertible.hpp: + +/usr/include/boost/type_traits/detail/yes_no_type.hpp: + +/usr/include/boost/type_traits/is_array.hpp: + +/usr/include/boost/type_traits/add_reference.hpp: + +/usr/include/boost/type_traits/ice.hpp: + +/usr/include/boost/type_traits/detail/ice_or.hpp: + +/usr/include/boost/type_traits/detail/ice_eq.hpp: + +/usr/include/boost/type_traits/is_arithmetic.hpp: + +/usr/include/boost/type_traits/is_integral.hpp: + +/usr/include/boost/type_traits/is_float.hpp: + +/usr/include/boost/type_traits/is_void.hpp: + +/usr/include/boost/type_traits/is_abstract.hpp: + +/usr/include/boost/type_traits/remove_pointer.hpp: + +/usr/include/boost/mpl/if.hpp: + +/usr/include/boost/mpl/aux_/value_wknd.hpp: + +/usr/include/boost/mpl/aux_/config/integral.hpp: + +/usr/include/boost/mpl/aux_/config/eti.hpp: + +/usr/include/boost/mpl/aux_/na_spec.hpp: + +/usr/include/boost/mpl/lambda_fwd.hpp: + +/usr/include/boost/mpl/void_fwd.hpp: + +/usr/include/boost/mpl/aux_/na.hpp: + +/usr/include/boost/mpl/aux_/na_fwd.hpp: + +/usr/include/boost/mpl/aux_/lambda_arity_param.hpp: + +/usr/include/boost/mpl/aux_/arity.hpp: + +/usr/include/boost/mpl/aux_/config/dtp.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/enum.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp: + +/usr/include/boost/mpl/limits/arity.hpp: + +/usr/include/boost/preprocessor/logical/and.hpp: + +/usr/include/boost/preprocessor/logical/bitand.hpp: + +/usr/include/boost/preprocessor/identity.hpp: + +/usr/include/boost/preprocessor/facilities/identity.hpp: + +/usr/include/boost/preprocessor/empty.hpp: + +/usr/include/boost/preprocessor/arithmetic/add.hpp: + +/usr/include/boost/preprocessor/arithmetic/dec.hpp: + +/usr/include/boost/preprocessor/control/while.hpp: + +/usr/include/boost/preprocessor/list/fold_left.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_left.hpp: + +/usr/include/boost/preprocessor/control/expr_iif.hpp: + +/usr/include/boost/preprocessor/list/adt.hpp: + +/usr/include/boost/preprocessor/detail/is_binary.hpp: + +/usr/include/boost/preprocessor/detail/check.hpp: + +/usr/include/boost/preprocessor/logical/compl.hpp: + +/usr/include/boost/preprocessor/list/fold_right.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_right.hpp: + +/usr/include/boost/preprocessor/list/reverse.hpp: + +/usr/include/boost/preprocessor/control/detail/while.hpp: + +/usr/include/boost/preprocessor/tuple/elem.hpp: + +/usr/include/boost/preprocessor/arithmetic/sub.hpp: + +/usr/include/boost/mpl/and.hpp: + +/usr/include/boost/mpl/aux_/config/use_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/nested_type_wknd.hpp: + +/usr/include/boost/mpl/aux_/include_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/config/compiler.hpp: + +/usr/include/boost/preprocessor/stringize.hpp: + +/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp: + +/usr/include/boost/mpl/not.hpp: + +/usr/include/boost/regex/v4/match_results.hpp: + +/usr/include/boost/regex/v4/protected_call.hpp: + +/usr/include/boost/regex/v4/perl_matcher.hpp: + +/usr/include/boost/regex/v4/iterator_category.hpp: + +/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp: + +/usr/include/boost/regex/v4/perl_matcher_common.hpp: + +/usr/include/boost/regex/v4/instances.hpp: + +/usr/include/boost/regex/v4/regex_match.hpp: + +/usr/include/boost/regex/v4/regex_search.hpp: + +/usr/include/boost/regex/v4/regex_iterator.hpp: + +/usr/include/boost/regex/v4/regex_token_iterator.hpp: + +/usr/include/boost/regex/v4/regex_grep.hpp: + +/usr/include/boost/regex/v4/regex_replace.hpp: + +/usr/include/boost/regex/v4/regex_merge.hpp: + +/usr/include/boost/regex/v4/regex_split.hpp: + +algorithm/../MeshBuilder.hpp: + +algorithm/RefineUniformly.hpp: + +algorithm/../types.hpp: + +algorithm/../FaceDispatch.hpp: + +algorithm/RefineUniformly_tmpl.cpp: + +algorithm/RefineUniformly.hpp: + +FlexibleMesh_tmpl.cpp: diff --git a/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-GenericVector.Po b/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-GenericVector.Po new file mode 100644 index 0000000..247e377 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/.deps/libhilbert_mesh_a-GenericVector.Po @@ -0,0 +1,294 @@ +libhilbert_mesh_a-GenericVector.o: ../generic/GenericVector.cpp \ + ../generic/GenericVector.hpp /usr/include/c++/4.5/ostream \ + /usr/include/c++/4.5/ios /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/postypes.h /usr/include/c++/4.5/cwchar \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/cctype \ + /usr/include/ctype.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/c++/4.5/bits/ios_base.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/bits/locale_classes.h /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/basic_string.tcc \ + /usr/include/c++/4.5/bits/locale_classes.tcc \ + /usr/include/c++/4.5/streambuf /usr/include/c++/4.5/bits/streambuf.tcc \ + /usr/include/c++/4.5/bits/basic_ios.h \ + /usr/include/c++/4.5/bits/locale_facets.h /usr/include/c++/4.5/cwctype \ + /usr/include/wctype.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/4.5/bits/streambuf_iterator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/4.5/bits/locale_facets.tcc \ + /usr/include/c++/4.5/bits/basic_ios.tcc \ + /usr/include/c++/4.5/bits/ostream.tcc ../generic/GenericVector_tmpl.cpp \ + /usr/include/c++/4.5/cassert /usr/include/assert.h \ + /usr/include/c++/4.5/cmath /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/c++/4.5/bits/cmath.tcc + +../generic/GenericVector.hpp: + +/usr/include/c++/4.5/ostream: + +/usr/include/c++/4.5/ios: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ios_base.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/bits/locale_classes.h: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/basic_string.tcc: + +/usr/include/c++/4.5/bits/locale_classes.tcc: + +/usr/include/c++/4.5/streambuf: + +/usr/include/c++/4.5/bits/streambuf.tcc: + +/usr/include/c++/4.5/bits/basic_ios.h: + +/usr/include/c++/4.5/bits/locale_facets.h: + +/usr/include/c++/4.5/cwctype: + +/usr/include/wctype.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h: + +/usr/include/c++/4.5/bits/streambuf_iterator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h: + +/usr/include/c++/4.5/bits/locale_facets.tcc: + +/usr/include/c++/4.5/bits/basic_ios.tcc: + +/usr/include/c++/4.5/bits/ostream.tcc: + +../generic/GenericVector_tmpl.cpp: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: + +/usr/include/c++/4.5/cmath: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/c++/4.5/bits/cmath.tcc: diff --git a/src/bem3d/src/boundary_mesh/.deps/t.Po b/src/bem3d/src/boundary_mesh/.deps/t.Po new file mode 100644 index 0000000..5717b26 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/.deps/t.Po @@ -0,0 +1,1313 @@ +t.o: t.cpp FlexibleMesh.hpp FaceDispatch.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc ../generic/Singleton.hpp \ + ../generic/Singleton_tmpl.cpp ../generic/Singleton.hpp \ + ../generic/TypeList.hpp ../generic/BaseTypes.hpp \ + ../generic/BaseTypes.hpp exception/DispatchIdNotSet.hpp \ + /usr/include/c++/4.5/stdexcept /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/postypes.h /usr/include/c++/4.5/cwchar \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/cctype /usr/include/ctype.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/bits/basic_string.tcc FaceDispatch_tmpl.cpp \ + exception/CouldNotDispatchCall.hpp /usr/include/c++/4.5/cassert \ + /usr/include/assert.h Face.hpp /usr/include/c++/4.5/iterator \ + /usr/include/c++/4.5/ostream /usr/include/c++/4.5/ios \ + /usr/include/c++/4.5/bits/ios_base.h \ + /usr/include/c++/4.5/bits/locale_classes.h \ + /usr/include/c++/4.5/bits/locale_classes.tcc \ + /usr/include/c++/4.5/streambuf /usr/include/c++/4.5/bits/streambuf.tcc \ + /usr/include/c++/4.5/bits/basic_ios.h \ + /usr/include/c++/4.5/bits/locale_facets.h /usr/include/c++/4.5/cwctype \ + /usr/include/wctype.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/4.5/bits/streambuf_iterator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/4.5/bits/locale_facets.tcc \ + /usr/include/c++/4.5/bits/basic_ios.tcc \ + /usr/include/c++/4.5/bits/ostream.tcc /usr/include/c++/4.5/istream \ + /usr/include/c++/4.5/bits/istream.tcc \ + /usr/include/c++/4.5/bits/stream_iterator.h types.hpp \ + /usr/include/c++/4.5/limits exception.hpp \ + exception/NoMatchingFaceType.hpp Face_tmpl.cpp \ + /usr/include/c++/4.5/sstream /usr/include/c++/4.5/bits/sstream.tcc \ + HalfEdge.hpp HalfEdge_tmpl.cpp Vertex.hpp ../generic/GenericVector.hpp \ + ../generic/GenericVector_tmpl.cpp ../generic/GenericVector.hpp \ + Vertex_tmpl.cpp Mesh.hpp MeshBuilder.hpp MeshBuilder_tmpl.cpp \ + /usr/include/boost/type_traits/is_pointer.hpp \ + /usr/include/boost/type_traits/is_member_pointer.hpp \ + /usr/include/boost/type_traits/config.hpp /usr/include/boost/config.hpp \ + /usr/include/boost/config/user.hpp \ + /usr/include/boost/config/select_compiler_config.hpp \ + /usr/include/boost/config/compiler/gcc.hpp \ + /usr/include/boost/config/select_stdlib_config.hpp \ + /usr/include/boost/config/no_tr1/utility.hpp \ + /usr/include/c++/4.5/utility /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/boost/config/stdlib/libstdcpp3.hpp \ + /usr/include/boost/config/select_platform_config.hpp \ + /usr/include/boost/config/platform/linux.hpp \ + /usr/include/c++/4.5/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/boost/config/posix_features.hpp \ + /usr/include/boost/config/suffix.hpp \ + /usr/include/boost/detail/workaround.hpp \ + /usr/include/boost/type_traits/is_member_function_pointer.hpp \ + /usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp \ + /usr/include/boost/type_traits/remove_cv.hpp \ + /usr/include/boost/type_traits/broken_compiler_spec.hpp \ + /usr/include/boost/mpl/aux_/lambda_support.hpp \ + /usr/include/boost/mpl/aux_/config/lambda.hpp \ + /usr/include/boost/mpl/aux_/config/ttp.hpp \ + /usr/include/boost/mpl/aux_/config/msvc.hpp \ + /usr/include/boost/mpl/aux_/config/gcc.hpp \ + /usr/include/boost/mpl/aux_/config/workaround.hpp \ + /usr/include/boost/mpl/aux_/config/ctps.hpp \ + /usr/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /usr/include/boost/type_traits/detail/type_trait_def.hpp \ + /usr/include/boost/type_traits/detail/template_arity_spec.hpp \ + /usr/include/boost/mpl/int.hpp /usr/include/boost/mpl/int_fwd.hpp \ + /usr/include/boost/mpl/aux_/adl_barrier.hpp \ + /usr/include/boost/mpl/aux_/config/adl.hpp \ + /usr/include/boost/mpl/aux_/config/intel.hpp \ + /usr/include/boost/mpl/aux_/nttp_decl.hpp \ + /usr/include/boost/mpl/aux_/config/nttp.hpp \ + /usr/include/boost/mpl/aux_/integral_wrapper.hpp \ + /usr/include/boost/mpl/integral_c_tag.hpp \ + /usr/include/boost/mpl/aux_/config/static_constant.hpp \ + /usr/include/boost/mpl/aux_/static_cast.hpp \ + /usr/include/boost/preprocessor/cat.hpp \ + /usr/include/boost/preprocessor/config/config.hpp \ + /usr/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/params.hpp \ + /usr/include/boost/mpl/aux_/config/preprocessor.hpp \ + /usr/include/boost/preprocessor/comma_if.hpp \ + /usr/include/boost/preprocessor/punctuation/comma_if.hpp \ + /usr/include/boost/preprocessor/control/if.hpp \ + /usr/include/boost/preprocessor/control/iif.hpp \ + /usr/include/boost/preprocessor/logical/bool.hpp \ + /usr/include/boost/preprocessor/facilities/empty.hpp \ + /usr/include/boost/preprocessor/punctuation/comma.hpp \ + /usr/include/boost/preprocessor/repeat.hpp \ + /usr/include/boost/preprocessor/repetition/repeat.hpp \ + /usr/include/boost/preprocessor/debug/error.hpp \ + /usr/include/boost/preprocessor/detail/auto_rec.hpp \ + /usr/include/boost/preprocessor/tuple/eat.hpp \ + /usr/include/boost/preprocessor/inc.hpp \ + /usr/include/boost/preprocessor/arithmetic/inc.hpp \ + /usr/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /usr/include/boost/type_traits/detail/type_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_def.hpp \ + /usr/include/boost/type_traits/integral_constant.hpp \ + /usr/include/boost/mpl/bool.hpp /usr/include/boost/mpl/bool_fwd.hpp \ + /usr/include/boost/mpl/integral_c.hpp \ + /usr/include/boost/mpl/integral_c_fwd.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/ice_and.hpp \ + /usr/include/boost/type_traits/detail/ice_not.hpp \ + /usr/include/boost/utility/enable_if.hpp Mesh.cpp \ + /usr/include/c++/4.5/iostream /usr/include/c++/4.5/set \ + /usr/include/c++/4.5/bits/stl_tree.h /usr/include/c++/4.5/bits/stl_set.h \ + /usr/include/c++/4.5/bits/stl_multiset.h /usr/include/c++/4.5/list \ + /usr/include/c++/4.5/bits/stl_list.h /usr/include/c++/4.5/bits/list.tcc \ + exception/NoMatchingFaceType_tmpl.hpp exception/NoMatchingFaceType.hpp \ + exception/NoMatchingFaceType_tmpl.cpp /usr/include/c++/4.5/cstring \ + /usr/include/string.h /usr/include/bits/string3.h face/Triangle_tmpl.hpp \ + face/Triangle.hpp face/../../generic/BaseTypes.hpp \ + face/Triangle_tmpl.cpp face/Triangle_tmpl.hpp face/../Face.hpp \ + face/Parallelogram_tmpl.hpp face/Parallelogram.hpp \ + face/ConvexQuadrilateral.hpp face/Quadrilateral.hpp face/../types.hpp \ + face/Parallelogram_tmpl.cpp /usr/include/c++/4.5/cmath \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/c++/4.5/bits/cmath.tcc \ + face/ConvexQuadrilateral_tmpl.hpp face/ConvexQuadrilateral_tmpl.cpp \ + face/Quadrilateral_tmpl.hpp face/Quadrilateral_tmpl.cpp \ + face/Parallelogram_tmpl.hpp algorithm/HandleObj.hpp \ + algorithm/HandleObj_tmpl.cpp /usr/include/c++/4.5/fstream \ + /usr/include/c++/4.5/bits/codecvt.h /usr/include/c++/4.5/cstdio \ + /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h \ + /usr/include/c++/4.5/bits/fstream.tcc /usr/include/boost/regex.hpp \ + /usr/include/boost/regex/config.hpp /usr/include/boost/regex/user.hpp \ + /usr/include/boost/regex/config/cwchar.hpp \ + /usr/include/boost/config/auto_link.hpp \ + /usr/include/boost/regex/v4/regex.hpp \ + /usr/include/boost/regex/v4/regex_workaround.hpp \ + /usr/include/c++/4.5/climits \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h /usr/include/c++/4.5/map \ + /usr/include/c++/4.5/bits/stl_map.h \ + /usr/include/c++/4.5/bits/stl_multimap.h /usr/include/boost/limits.hpp \ + /usr/include/boost/assert.hpp /usr/include/boost/cstdint.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h \ + /usr/include/stdint.h /usr/include/boost/throw_exception.hpp \ + /usr/include/boost/exception/detail/attribute_noreturn.hpp \ + /usr/include/boost/exception/exception.hpp \ + /usr/include/boost/current_function.hpp \ + /usr/include/boost/scoped_ptr.hpp \ + /usr/include/boost/smart_ptr/scoped_ptr.hpp \ + /usr/include/boost/checked_delete.hpp /usr/include/c++/4.5/memory \ + /usr/include/c++/4.5/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.5/backward/auto_ptr.h \ + /usr/include/boost/smart_ptr/detail/operator_bool.hpp \ + /usr/include/boost/scoped_array.hpp \ + /usr/include/boost/smart_ptr/scoped_array.hpp \ + /usr/include/boost/shared_ptr.hpp \ + /usr/include/boost/smart_ptr/shared_ptr.hpp \ + /usr/include/boost/config/no_tr1/memory.hpp \ + /usr/include/boost/smart_ptr/detail/shared_count.hpp \ + /usr/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /usr/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /usr/include/boost/detail/sp_typeinfo.hpp /usr/include/c++/4.5/typeinfo \ + /usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /usr/include/c++/4.5/functional \ + /usr/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /usr/include/boost/smart_ptr/detail/yield_k.hpp \ + /usr/include/boost/memory_order.hpp /usr/include/c++/4.5/locale \ + /usr/include/c++/4.5/bits/locale_facets_nonio.h \ + /usr/include/c++/4.5/ctime \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/4.5/bits/locale_facets_nonio.tcc \ + /usr/include/boost/regex_fwd.hpp \ + /usr/include/boost/regex/v4/regex_fwd.hpp \ + /usr/include/boost/regex/regex_traits.hpp \ + /usr/include/boost/regex/v4/regex_traits.hpp \ + /usr/include/boost/regex/v4/syntax_type.hpp \ + /usr/include/boost/regex/v4/error_type.hpp \ + /usr/include/boost/regex/v4/regex_traits_defaults.hpp \ + /usr/include/boost/regex/v4/cpp_regex_traits.hpp \ + /usr/include/boost/regex/pattern_except.hpp \ + /usr/include/boost/regex/pending/static_mutex.hpp \ + /usr/include/boost/regex/v4/primary_transform.hpp \ + /usr/include/boost/regex/pending/object_cache.hpp \ + /usr/include/boost/regex/v4/c_regex_traits.hpp \ + /usr/include/boost/mpl/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/type_wrapper.hpp \ + /usr/include/boost/mpl/aux_/yes_no.hpp \ + /usr/include/boost/mpl/aux_/config/arrays.hpp \ + /usr/include/boost/mpl/aux_/config/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/config/msvc_typename.hpp \ + /usr/include/boost/static_assert.hpp \ + /usr/include/boost/regex/v4/match_flags.hpp \ + /usr/include/boost/regex/v4/regex_raw_buffer.hpp \ + /usr/include/boost/regex/v4/char_regex_traits.hpp \ + /usr/include/boost/regex/v4/states.hpp \ + /usr/include/boost/regex/v4/regbase.hpp \ + /usr/include/boost/regex/v4/iterator_traits.hpp \ + /usr/include/boost/regex/v4/basic_regex.hpp \ + /usr/include/boost/type_traits/is_same.hpp \ + /usr/include/boost/functional/hash.hpp \ + /usr/include/boost/functional/hash/hash.hpp \ + /usr/include/boost/functional/hash/hash_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float.hpp \ + /usr/include/boost/functional/hash/detail/float_functions.hpp \ + /usr/include/boost/config/no_tr1/cmath.hpp \ + /usr/include/boost/functional/hash/detail/limits.hpp \ + /usr/include/boost/integer/static_log2.hpp \ + /usr/include/boost/integer_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float_generic.hpp \ + /usr/include/boost/functional/hash/extensions.hpp \ + /usr/include/boost/detail/container_fwd.hpp \ + /usr/include/boost/regex/v4/basic_regex_creator.hpp \ + /usr/include/boost/regex/v4/basic_regex_parser.hpp \ + /usr/include/boost/regex/v4/sub_match.hpp \ + /usr/include/boost/regex/v4/regex_format.hpp \ + /usr/include/boost/type_traits/is_function.hpp \ + /usr/include/boost/type_traits/is_reference.hpp \ + /usr/include/boost/type_traits/detail/false_result.hpp \ + /usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + /usr/include/boost/type_traits/is_class.hpp \ + /usr/include/boost/type_traits/intrinsics.hpp \ + /usr/include/boost/type_traits/is_volatile.hpp \ + /usr/include/boost/type_traits/is_convertible.hpp \ + /usr/include/boost/type_traits/detail/yes_no_type.hpp \ + /usr/include/boost/type_traits/is_array.hpp \ + /usr/include/boost/type_traits/add_reference.hpp \ + /usr/include/boost/type_traits/ice.hpp \ + /usr/include/boost/type_traits/detail/ice_or.hpp \ + /usr/include/boost/type_traits/detail/ice_eq.hpp \ + /usr/include/boost/type_traits/is_arithmetic.hpp \ + /usr/include/boost/type_traits/is_integral.hpp \ + /usr/include/boost/type_traits/is_float.hpp \ + /usr/include/boost/type_traits/is_void.hpp \ + /usr/include/boost/type_traits/is_abstract.hpp \ + /usr/include/boost/type_traits/remove_pointer.hpp \ + /usr/include/boost/mpl/if.hpp /usr/include/boost/mpl/aux_/value_wknd.hpp \ + /usr/include/boost/mpl/aux_/config/integral.hpp \ + /usr/include/boost/mpl/aux_/config/eti.hpp \ + /usr/include/boost/mpl/aux_/na_spec.hpp \ + /usr/include/boost/mpl/lambda_fwd.hpp \ + /usr/include/boost/mpl/void_fwd.hpp /usr/include/boost/mpl/aux_/na.hpp \ + /usr/include/boost/mpl/aux_/na_fwd.hpp \ + /usr/include/boost/mpl/aux_/lambda_arity_param.hpp \ + /usr/include/boost/mpl/aux_/arity.hpp \ + /usr/include/boost/mpl/aux_/config/dtp.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/enum.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp \ + /usr/include/boost/mpl/limits/arity.hpp \ + /usr/include/boost/preprocessor/logical/and.hpp \ + /usr/include/boost/preprocessor/logical/bitand.hpp \ + /usr/include/boost/preprocessor/identity.hpp \ + /usr/include/boost/preprocessor/facilities/identity.hpp \ + /usr/include/boost/preprocessor/empty.hpp \ + /usr/include/boost/preprocessor/arithmetic/add.hpp \ + /usr/include/boost/preprocessor/arithmetic/dec.hpp \ + /usr/include/boost/preprocessor/control/while.hpp \ + /usr/include/boost/preprocessor/list/fold_left.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_left.hpp \ + /usr/include/boost/preprocessor/control/expr_iif.hpp \ + /usr/include/boost/preprocessor/list/adt.hpp \ + /usr/include/boost/preprocessor/detail/is_binary.hpp \ + /usr/include/boost/preprocessor/detail/check.hpp \ + /usr/include/boost/preprocessor/logical/compl.hpp \ + /usr/include/boost/preprocessor/list/fold_right.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_right.hpp \ + /usr/include/boost/preprocessor/list/reverse.hpp \ + /usr/include/boost/preprocessor/control/detail/while.hpp \ + /usr/include/boost/preprocessor/tuple/elem.hpp \ + /usr/include/boost/preprocessor/arithmetic/sub.hpp \ + /usr/include/boost/mpl/and.hpp \ + /usr/include/boost/mpl/aux_/config/use_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/nested_type_wknd.hpp \ + /usr/include/boost/mpl/aux_/include_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/config/compiler.hpp \ + /usr/include/boost/preprocessor/stringize.hpp \ + /usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp \ + /usr/include/boost/mpl/not.hpp \ + /usr/include/boost/regex/v4/match_results.hpp \ + /usr/include/boost/regex/v4/protected_call.hpp \ + /usr/include/boost/regex/v4/perl_matcher.hpp \ + /usr/include/boost/regex/v4/iterator_category.hpp \ + /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp \ + /usr/include/boost/regex/v4/perl_matcher_common.hpp \ + /usr/include/boost/regex/v4/instances.hpp \ + /usr/include/boost/regex/v4/regex_match.hpp \ + /usr/include/boost/regex/v4/regex_search.hpp \ + /usr/include/boost/regex/v4/regex_iterator.hpp \ + /usr/include/boost/regex/v4/regex_token_iterator.hpp \ + /usr/include/boost/regex/v4/regex_grep.hpp \ + /usr/include/boost/regex/v4/regex_replace.hpp \ + /usr/include/boost/regex/v4/regex_merge.hpp \ + /usr/include/boost/regex/v4/regex_split.hpp algorithm/../MeshBuilder.hpp \ + algorithm/RefineUniformly.hpp algorithm/../types.hpp \ + algorithm/../FaceDispatch.hpp algorithm/RefineUniformly_tmpl.cpp \ + algorithm/RefineUniformly.hpp FlexibleMesh_tmpl.cpp + +FlexibleMesh.hpp: + +FaceDispatch.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +../generic/Singleton.hpp: + +../generic/Singleton_tmpl.cpp: + +../generic/Singleton.hpp: + +../generic/TypeList.hpp: + +../generic/BaseTypes.hpp: + +../generic/BaseTypes.hpp: + +exception/DispatchIdNotSet.hpp: + +/usr/include/c++/4.5/stdexcept: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/bits/basic_string.tcc: + +FaceDispatch_tmpl.cpp: + +exception/CouldNotDispatchCall.hpp: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: + +Face.hpp: + +/usr/include/c++/4.5/iterator: + +/usr/include/c++/4.5/ostream: + +/usr/include/c++/4.5/ios: + +/usr/include/c++/4.5/bits/ios_base.h: + +/usr/include/c++/4.5/bits/locale_classes.h: + +/usr/include/c++/4.5/bits/locale_classes.tcc: + +/usr/include/c++/4.5/streambuf: + +/usr/include/c++/4.5/bits/streambuf.tcc: + +/usr/include/c++/4.5/bits/basic_ios.h: + +/usr/include/c++/4.5/bits/locale_facets.h: + +/usr/include/c++/4.5/cwctype: + +/usr/include/wctype.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h: + +/usr/include/c++/4.5/bits/streambuf_iterator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h: + +/usr/include/c++/4.5/bits/locale_facets.tcc: + +/usr/include/c++/4.5/bits/basic_ios.tcc: + +/usr/include/c++/4.5/bits/ostream.tcc: + +/usr/include/c++/4.5/istream: + +/usr/include/c++/4.5/bits/istream.tcc: + +/usr/include/c++/4.5/bits/stream_iterator.h: + +types.hpp: + +/usr/include/c++/4.5/limits: + +exception.hpp: + +exception/NoMatchingFaceType.hpp: + +Face_tmpl.cpp: + +/usr/include/c++/4.5/sstream: + +/usr/include/c++/4.5/bits/sstream.tcc: + +HalfEdge.hpp: + +HalfEdge_tmpl.cpp: + +Vertex.hpp: + +../generic/GenericVector.hpp: + +../generic/GenericVector_tmpl.cpp: + +../generic/GenericVector.hpp: + +Vertex_tmpl.cpp: + +Mesh.hpp: + +MeshBuilder.hpp: + +MeshBuilder_tmpl.cpp: + +/usr/include/boost/type_traits/is_pointer.hpp: + +/usr/include/boost/type_traits/is_member_pointer.hpp: + +/usr/include/boost/type_traits/config.hpp: + +/usr/include/boost/config.hpp: + +/usr/include/boost/config/user.hpp: + +/usr/include/boost/config/select_compiler_config.hpp: + +/usr/include/boost/config/compiler/gcc.hpp: + +/usr/include/boost/config/select_stdlib_config.hpp: + +/usr/include/boost/config/no_tr1/utility.hpp: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/boost/config/stdlib/libstdcpp3.hpp: + +/usr/include/boost/config/select_platform_config.hpp: + +/usr/include/boost/config/platform/linux.hpp: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/boost/config/posix_features.hpp: + +/usr/include/boost/config/suffix.hpp: + +/usr/include/boost/detail/workaround.hpp: + +/usr/include/boost/type_traits/is_member_function_pointer.hpp: + +/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp: + +/usr/include/boost/type_traits/remove_cv.hpp: + +/usr/include/boost/type_traits/broken_compiler_spec.hpp: + +/usr/include/boost/mpl/aux_/lambda_support.hpp: + +/usr/include/boost/mpl/aux_/config/lambda.hpp: + +/usr/include/boost/mpl/aux_/config/ttp.hpp: + +/usr/include/boost/mpl/aux_/config/msvc.hpp: + +/usr/include/boost/mpl/aux_/config/gcc.hpp: + +/usr/include/boost/mpl/aux_/config/workaround.hpp: + +/usr/include/boost/mpl/aux_/config/ctps.hpp: + +/usr/include/boost/type_traits/detail/cv_traits_impl.hpp: + +/usr/include/boost/type_traits/detail/type_trait_def.hpp: + +/usr/include/boost/type_traits/detail/template_arity_spec.hpp: + +/usr/include/boost/mpl/int.hpp: + +/usr/include/boost/mpl/int_fwd.hpp: + +/usr/include/boost/mpl/aux_/adl_barrier.hpp: + +/usr/include/boost/mpl/aux_/config/adl.hpp: + +/usr/include/boost/mpl/aux_/config/intel.hpp: + +/usr/include/boost/mpl/aux_/nttp_decl.hpp: + +/usr/include/boost/mpl/aux_/config/nttp.hpp: + +/usr/include/boost/mpl/aux_/integral_wrapper.hpp: + +/usr/include/boost/mpl/integral_c_tag.hpp: + +/usr/include/boost/mpl/aux_/config/static_constant.hpp: + +/usr/include/boost/mpl/aux_/static_cast.hpp: + +/usr/include/boost/preprocessor/cat.hpp: + +/usr/include/boost/preprocessor/config/config.hpp: + +/usr/include/boost/mpl/aux_/template_arity_fwd.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/params.hpp: + +/usr/include/boost/mpl/aux_/config/preprocessor.hpp: + +/usr/include/boost/preprocessor/comma_if.hpp: + +/usr/include/boost/preprocessor/punctuation/comma_if.hpp: + +/usr/include/boost/preprocessor/control/if.hpp: + +/usr/include/boost/preprocessor/control/iif.hpp: + +/usr/include/boost/preprocessor/logical/bool.hpp: + +/usr/include/boost/preprocessor/facilities/empty.hpp: + +/usr/include/boost/preprocessor/punctuation/comma.hpp: + +/usr/include/boost/preprocessor/repeat.hpp: + +/usr/include/boost/preprocessor/repetition/repeat.hpp: + +/usr/include/boost/preprocessor/debug/error.hpp: + +/usr/include/boost/preprocessor/detail/auto_rec.hpp: + +/usr/include/boost/preprocessor/tuple/eat.hpp: + +/usr/include/boost/preprocessor/inc.hpp: + +/usr/include/boost/preprocessor/arithmetic/inc.hpp: + +/usr/include/boost/mpl/aux_/config/overload_resolution.hpp: + +/usr/include/boost/type_traits/detail/type_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_def.hpp: + +/usr/include/boost/type_traits/integral_constant.hpp: + +/usr/include/boost/mpl/bool.hpp: + +/usr/include/boost/mpl/bool_fwd.hpp: + +/usr/include/boost/mpl/integral_c.hpp: + +/usr/include/boost/mpl/integral_c_fwd.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/ice_and.hpp: + +/usr/include/boost/type_traits/detail/ice_not.hpp: + +/usr/include/boost/utility/enable_if.hpp: + +Mesh.cpp: + +/usr/include/c++/4.5/iostream: + +/usr/include/c++/4.5/set: + +/usr/include/c++/4.5/bits/stl_tree.h: + +/usr/include/c++/4.5/bits/stl_set.h: + +/usr/include/c++/4.5/bits/stl_multiset.h: + +/usr/include/c++/4.5/list: + +/usr/include/c++/4.5/bits/stl_list.h: + +/usr/include/c++/4.5/bits/list.tcc: + +exception/NoMatchingFaceType_tmpl.hpp: + +exception/NoMatchingFaceType.hpp: + +exception/NoMatchingFaceType_tmpl.cpp: + +/usr/include/c++/4.5/cstring: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +face/Triangle_tmpl.hpp: + +face/Triangle.hpp: + +face/../../generic/BaseTypes.hpp: + +face/Triangle_tmpl.cpp: + +face/Triangle_tmpl.hpp: + +face/../Face.hpp: + +face/Parallelogram_tmpl.hpp: + +face/Parallelogram.hpp: + +face/ConvexQuadrilateral.hpp: + +face/Quadrilateral.hpp: + +face/../types.hpp: + +face/Parallelogram_tmpl.cpp: + +/usr/include/c++/4.5/cmath: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/c++/4.5/bits/cmath.tcc: + +face/ConvexQuadrilateral_tmpl.hpp: + +face/ConvexQuadrilateral_tmpl.cpp: + +face/Quadrilateral_tmpl.hpp: + +face/Quadrilateral_tmpl.cpp: + +face/Parallelogram_tmpl.hpp: + +algorithm/HandleObj.hpp: + +algorithm/HandleObj_tmpl.cpp: + +/usr/include/c++/4.5/fstream: + +/usr/include/c++/4.5/bits/codecvt.h: + +/usr/include/c++/4.5/cstdio: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h: + +/usr/include/c++/4.5/bits/fstream.tcc: + +/usr/include/boost/regex.hpp: + +/usr/include/boost/regex/config.hpp: + +/usr/include/boost/regex/user.hpp: + +/usr/include/boost/regex/config/cwchar.hpp: + +/usr/include/boost/config/auto_link.hpp: + +/usr/include/boost/regex/v4/regex.hpp: + +/usr/include/boost/regex/v4/regex_workaround.hpp: + +/usr/include/c++/4.5/climits: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/map: + +/usr/include/c++/4.5/bits/stl_map.h: + +/usr/include/c++/4.5/bits/stl_multimap.h: + +/usr/include/boost/limits.hpp: + +/usr/include/boost/assert.hpp: + +/usr/include/boost/cstdint.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/boost/throw_exception.hpp: + +/usr/include/boost/exception/detail/attribute_noreturn.hpp: + +/usr/include/boost/exception/exception.hpp: + +/usr/include/boost/current_function.hpp: + +/usr/include/boost/scoped_ptr.hpp: + +/usr/include/boost/smart_ptr/scoped_ptr.hpp: + +/usr/include/boost/checked_delete.hpp: + +/usr/include/c++/4.5/memory: + +/usr/include/c++/4.5/bits/stl_raw_storage_iter.h: + +/usr/include/c++/4.5/backward/auto_ptr.h: + +/usr/include/boost/smart_ptr/detail/operator_bool.hpp: + +/usr/include/boost/scoped_array.hpp: + +/usr/include/boost/smart_ptr/scoped_array.hpp: + +/usr/include/boost/shared_ptr.hpp: + +/usr/include/boost/smart_ptr/shared_ptr.hpp: + +/usr/include/boost/config/no_tr1/memory.hpp: + +/usr/include/boost/smart_ptr/detail/shared_count.hpp: + +/usr/include/boost/smart_ptr/bad_weak_ptr.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base.hpp: + +/usr/include/boost/smart_ptr/detail/sp_has_sync.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp: + +/usr/include/boost/detail/sp_typeinfo.hpp: + +/usr/include/c++/4.5/typeinfo: + +/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/boost/smart_ptr/detail/sp_convertible.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_pool.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_sync.hpp: + +/usr/include/boost/smart_ptr/detail/yield_k.hpp: + +/usr/include/boost/memory_order.hpp: + +/usr/include/c++/4.5/locale: + +/usr/include/c++/4.5/bits/locale_facets_nonio.h: + +/usr/include/c++/4.5/ctime: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h: + +/usr/include/libintl.h: + +/usr/include/c++/4.5/bits/locale_facets_nonio.tcc: + +/usr/include/boost/regex_fwd.hpp: + +/usr/include/boost/regex/v4/regex_fwd.hpp: + +/usr/include/boost/regex/regex_traits.hpp: + +/usr/include/boost/regex/v4/regex_traits.hpp: + +/usr/include/boost/regex/v4/syntax_type.hpp: + +/usr/include/boost/regex/v4/error_type.hpp: + +/usr/include/boost/regex/v4/regex_traits_defaults.hpp: + +/usr/include/boost/regex/v4/cpp_regex_traits.hpp: + +/usr/include/boost/regex/pattern_except.hpp: + +/usr/include/boost/regex/pending/static_mutex.hpp: + +/usr/include/boost/regex/v4/primary_transform.hpp: + +/usr/include/boost/regex/pending/object_cache.hpp: + +/usr/include/boost/regex/v4/c_regex_traits.hpp: + +/usr/include/boost/mpl/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/type_wrapper.hpp: + +/usr/include/boost/mpl/aux_/yes_no.hpp: + +/usr/include/boost/mpl/aux_/config/arrays.hpp: + +/usr/include/boost/mpl/aux_/config/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/config/msvc_typename.hpp: + +/usr/include/boost/static_assert.hpp: + +/usr/include/boost/regex/v4/match_flags.hpp: + +/usr/include/boost/regex/v4/regex_raw_buffer.hpp: + +/usr/include/boost/regex/v4/char_regex_traits.hpp: + +/usr/include/boost/regex/v4/states.hpp: + +/usr/include/boost/regex/v4/regbase.hpp: + +/usr/include/boost/regex/v4/iterator_traits.hpp: + +/usr/include/boost/regex/v4/basic_regex.hpp: + +/usr/include/boost/type_traits/is_same.hpp: + +/usr/include/boost/functional/hash.hpp: + +/usr/include/boost/functional/hash/hash.hpp: + +/usr/include/boost/functional/hash/hash_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float.hpp: + +/usr/include/boost/functional/hash/detail/float_functions.hpp: + +/usr/include/boost/config/no_tr1/cmath.hpp: + +/usr/include/boost/functional/hash/detail/limits.hpp: + +/usr/include/boost/integer/static_log2.hpp: + +/usr/include/boost/integer_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float_generic.hpp: + +/usr/include/boost/functional/hash/extensions.hpp: + +/usr/include/boost/detail/container_fwd.hpp: + +/usr/include/boost/regex/v4/basic_regex_creator.hpp: + +/usr/include/boost/regex/v4/basic_regex_parser.hpp: + +/usr/include/boost/regex/v4/sub_match.hpp: + +/usr/include/boost/regex/v4/regex_format.hpp: + +/usr/include/boost/type_traits/is_function.hpp: + +/usr/include/boost/type_traits/is_reference.hpp: + +/usr/include/boost/type_traits/detail/false_result.hpp: + +/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp: + +/usr/include/boost/type_traits/is_class.hpp: + +/usr/include/boost/type_traits/intrinsics.hpp: + +/usr/include/boost/type_traits/is_volatile.hpp: + +/usr/include/boost/type_traits/is_convertible.hpp: + +/usr/include/boost/type_traits/detail/yes_no_type.hpp: + +/usr/include/boost/type_traits/is_array.hpp: + +/usr/include/boost/type_traits/add_reference.hpp: + +/usr/include/boost/type_traits/ice.hpp: + +/usr/include/boost/type_traits/detail/ice_or.hpp: + +/usr/include/boost/type_traits/detail/ice_eq.hpp: + +/usr/include/boost/type_traits/is_arithmetic.hpp: + +/usr/include/boost/type_traits/is_integral.hpp: + +/usr/include/boost/type_traits/is_float.hpp: + +/usr/include/boost/type_traits/is_void.hpp: + +/usr/include/boost/type_traits/is_abstract.hpp: + +/usr/include/boost/type_traits/remove_pointer.hpp: + +/usr/include/boost/mpl/if.hpp: + +/usr/include/boost/mpl/aux_/value_wknd.hpp: + +/usr/include/boost/mpl/aux_/config/integral.hpp: + +/usr/include/boost/mpl/aux_/config/eti.hpp: + +/usr/include/boost/mpl/aux_/na_spec.hpp: + +/usr/include/boost/mpl/lambda_fwd.hpp: + +/usr/include/boost/mpl/void_fwd.hpp: + +/usr/include/boost/mpl/aux_/na.hpp: + +/usr/include/boost/mpl/aux_/na_fwd.hpp: + +/usr/include/boost/mpl/aux_/lambda_arity_param.hpp: + +/usr/include/boost/mpl/aux_/arity.hpp: + +/usr/include/boost/mpl/aux_/config/dtp.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/enum.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp: + +/usr/include/boost/mpl/limits/arity.hpp: + +/usr/include/boost/preprocessor/logical/and.hpp: + +/usr/include/boost/preprocessor/logical/bitand.hpp: + +/usr/include/boost/preprocessor/identity.hpp: + +/usr/include/boost/preprocessor/facilities/identity.hpp: + +/usr/include/boost/preprocessor/empty.hpp: + +/usr/include/boost/preprocessor/arithmetic/add.hpp: + +/usr/include/boost/preprocessor/arithmetic/dec.hpp: + +/usr/include/boost/preprocessor/control/while.hpp: + +/usr/include/boost/preprocessor/list/fold_left.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_left.hpp: + +/usr/include/boost/preprocessor/control/expr_iif.hpp: + +/usr/include/boost/preprocessor/list/adt.hpp: + +/usr/include/boost/preprocessor/detail/is_binary.hpp: + +/usr/include/boost/preprocessor/detail/check.hpp: + +/usr/include/boost/preprocessor/logical/compl.hpp: + +/usr/include/boost/preprocessor/list/fold_right.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_right.hpp: + +/usr/include/boost/preprocessor/list/reverse.hpp: + +/usr/include/boost/preprocessor/control/detail/while.hpp: + +/usr/include/boost/preprocessor/tuple/elem.hpp: + +/usr/include/boost/preprocessor/arithmetic/sub.hpp: + +/usr/include/boost/mpl/and.hpp: + +/usr/include/boost/mpl/aux_/config/use_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/nested_type_wknd.hpp: + +/usr/include/boost/mpl/aux_/include_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/config/compiler.hpp: + +/usr/include/boost/preprocessor/stringize.hpp: + +/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp: + +/usr/include/boost/mpl/not.hpp: + +/usr/include/boost/regex/v4/match_results.hpp: + +/usr/include/boost/regex/v4/protected_call.hpp: + +/usr/include/boost/regex/v4/perl_matcher.hpp: + +/usr/include/boost/regex/v4/iterator_category.hpp: + +/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp: + +/usr/include/boost/regex/v4/perl_matcher_common.hpp: + +/usr/include/boost/regex/v4/instances.hpp: + +/usr/include/boost/regex/v4/regex_match.hpp: + +/usr/include/boost/regex/v4/regex_search.hpp: + +/usr/include/boost/regex/v4/regex_iterator.hpp: + +/usr/include/boost/regex/v4/regex_token_iterator.hpp: + +/usr/include/boost/regex/v4/regex_grep.hpp: + +/usr/include/boost/regex/v4/regex_replace.hpp: + +/usr/include/boost/regex/v4/regex_merge.hpp: + +/usr/include/boost/regex/v4/regex_split.hpp: + +algorithm/../MeshBuilder.hpp: + +algorithm/RefineUniformly.hpp: + +algorithm/../types.hpp: + +algorithm/../FaceDispatch.hpp: + +algorithm/RefineUniformly_tmpl.cpp: + +algorithm/RefineUniformly.hpp: + +FlexibleMesh_tmpl.cpp: diff --git a/src/bem3d/src/boundary_mesh/Face.cpp b/src/bem3d/src/boundary_mesh/Face.cpp index 02b17f5..fae314a 100644 --- a/src/bem3d/src/boundary_mesh/Face.cpp +++ b/src/bem3d/src/boundary_mesh/Face.cpp @@ -5,6 +5,7 @@ using namespace boundary_mesh; +#if 0 Face::Face() : halfedge_(0) {} @@ -95,4 +96,5 @@ double Face::area() const assert(0); } } +#endif diff --git a/src/bem3d/src/boundary_mesh/Face.hpp b/src/bem3d/src/boundary_mesh/Face.hpp index eac4bed..29c5ef2 100644 --- a/src/bem3d/src/boundary_mesh/Face.hpp +++ b/src/bem3d/src/boundary_mesh/Face.hpp @@ -2,42 +2,130 @@ #define BOUNDARY_MESH_FACE_HPP_GUARD_ #include +#include + +#include "types.hpp" +#include "exception.hpp" +#include "FaceDispatch.hpp" + +/** + * @page boundary_mesh_faces The Face datatypes + * + * The boundary mesh library is a flexible template library, which provides + * optimized versions for many use cases. In terms of faces, the library is + * flexible by the means of allowing any number of different kinds of faces + * within a single mesh. At the same time, it provides optimizations for + * meshes, which consist only of one kind of faces. More details are provided + * in section @ref boundary_mesh_mesh_traits_faces. + * + * The library also makes strong use of C++'s type system so that it is + * possible to structure code in an idiomatic way. For more details on this, + * please refer to @ref boundary_mesh_face_specific_code. + * + * Furthermore, it is possible to add custom faces without modifying the + * code of the boundary mesh library. Further details can be found in section + * @ref boundary_mesh_adding_new_face_types. + * + * Within boundary mesh algorithms or other code related to boundary meshes, + * one should not refer to faces directly, but only by using the Mesh class. + * For example, provided Mesh is the name of the mesh class that is used, one + * should write Mesh::Triangle instead of Triangle< Mesh >. For technically + * interested people, a reason is provided below. + * + * We provide three different classes for each kind of faces. As an example, + * we consider the classes provided for triangles. + * - Triangle: This class provides an implementation which should be used + * when the given mesh only contains this kind of faces. It must + * not be used, when different kinds of faces are involved. + * - RTriangle: This class contains additional run-time information, which + * makes it possible to use instances of that class even if the + * given mesh contains different kinds of faces. + * For users of the mesh, it makes no difference which class is used, because + * they refer to that class only using Mesh::Triangle for built-in types or + * Mesh::Prop::Triangle for user types. Finally, for each kind of face, there + * is another class: + * - NoTriangle: This class is just an indicator, that the mesh does not + * contain any faces of that kind. + * + * Below, there is an UML diagram for all built-in types (Triangle, + * Quadrilateral, Parallelogram, Rectangle and AxisParallelRectangle). + * + * TODO: A proper diagram is missing. + */ + +/** + * @file Face.hpp + * + * TODO: Write documentation. + */ namespace boundary_mesh { - class Face; - class HalfEdge; - class Vertex; - - class Face + /** + * @class CommonFaceBase__ + * @brief A base class for all flavours of faces. + */ + template < class TMesh > + class CommonFaceBase__ { - template < class T > friend class Mesh; + template < class TFace, class TNext > friend class FaceFactory; public: - template < class T > - class Iterator__ : public std::iterator< std::input_iterator_tag, T > + typedef TMesh Mesh; + + enum WhereToStart + { + StartAtBeginning, + StartAtEnd + }; + + class IteratorBase__ { public: - Iterator__(const HalfEdge* startingEdge, bool end = false); - Iterator__(const Iterator__& copy); + IteratorBase__(const typename TMesh::HalfEdge& halfedge, + enum WhereToStart); + bool operator==(const IteratorBase__& rhs) const; + bool operator!=(const IteratorBase__& rhs) const; + IteratorBase__& operator++(); - bool operator==(const Iterator__< T >& rhs) const; - bool operator!=(const Iterator__< T >& rhs) const; - Iterator__< T >& operator++(); - const T& operator*() const; - const T* operator->() const; + protected: + const typename TMesh::HalfEdge* getCurrentHalfEdge() const; private: - const HalfEdge& getCurrentEdge() const; + const typename TMesh::HalfEdge* startingEdge_; + const typename TMesh::HalfEdge* currentEdge_; + }; - const HalfEdge* startingEdge_; - const HalfEdge* currentEdge_; + class ConstFaceIterator : public IteratorBase__, + std::iterator< std::input_iterator_tag, typename TMesh::Face > + { + public: + ConstFaceIterator(const typename TMesh::HalfEdge& halfedge, + enum WhereToStart); + ConstFaceIterator& operator++(); + const typename TMesh::Face& operator*() const; + const typename TMesh::Face* operator->() const; }; - public: - typedef Iterator__< Face > ConstFaceIterator; - typedef Iterator__< Vertex > ConstVertexIterator; - typedef Iterator__< HalfEdge > ConstEdgeIterator; + class ConstVertexIterator : public IteratorBase__, + std::iterator< std::input_iterator_tag, typename TMesh::Vertex > + { + public: + ConstVertexIterator(const typename TMesh::HalfEdge& halfedge, + enum WhereToStart); + const typename TMesh::Vertex& operator*() const; + const typename TMesh::Vertex* operator->() const; + }; + + class ConstEdgeIterator : public IteratorBase__, + std::iterator< std::input_iterator_tag, typename TMesh::HalfEdge > + { + public: + ConstEdgeIterator(const typename TMesh::HalfEdge& halfedge, + enum WhereToStart); + const typename TMesh::HalfEdge& operator*() const; + const typename TMesh::HalfEdge* operator->() const; + }; ConstVertexIterator begin_v() const; ConstVertexIterator end_v() const; @@ -46,21 +134,51 @@ namespace boundary_mesh ConstFaceIterator begin_f() const; ConstFaceIterator end_f() const; - unsigned int getNumberOfVertices() const; - bool isBoundaryFace() const; - bool operator==(const Face& rhs) const; - double area() const; + unsigned int getLocalEdgeId( + const typename TMesh::Prop::HalfEdge& edge ) const; + + bool operator==(const typename TMesh::Prop::HalfEdge& rhs) const; + + protected: + CommonFaceBase__( const typename TMesh::Prop::HalfEdge& halfedge ) + : halfedge_( halfedge ) {} private: - Face(); - void setHalfEdge(const HalfEdge& edge); + const typename TMesh::Prop::HalfEdge& halfedge_; + }; - const HalfEdge* halfedge_; + template < class TMesh > + class RFace : public CommonFaceBase__< TMesh > + { + public: + RFace( const typename TMesh::Prop::HalfEdge& halfedge, + geoid_t id) + : CommonFaceBase__< TMesh >(halfedge), id_(id) {} + typedef RFace< TMesh >* CommonSuperFace; + geoid_t getId() const; - static const ConstVertexIterator scVertexEndIterator; - static const ConstEdgeIterator scEdgeEndIterator; - static const ConstFaceIterator scFaceEndIterator; + virtual double computeArea() const =0; + virtual unsigned int getNumberOfVertices() const =0; + virtual dispatchId_t getDispatchId() const =0; + + private: + geoid_t id_; }; + + template < class TMesh > + class FaceVertexCache + : public generic::Singleton< FaceVertexCache< TMesh > > + { + public: + FaceVertexCache(); + static const typename TMesh::Vertex& Get( + const typename TMesh::Face* face, unsigned int id ); + + private: + const typename TMesh::Face* face_; + typename std::vector< const typename TMesh::Vertex* > vertices_; + }; + } #include "Face_tmpl.cpp" diff --git a/src/bem3d/src/boundary_mesh/FaceDispatch.hpp b/src/bem3d/src/boundary_mesh/FaceDispatch.hpp new file mode 100644 index 0000000..0cff98b --- /dev/null +++ b/src/bem3d/src/boundary_mesh/FaceDispatch.hpp @@ -0,0 +1,103 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACEDISPATCH_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACEDISPATCH_HPP_GUARD_ + +#include + +#include "../generic/Singleton.hpp" +#include "../generic/TypeList.hpp" +#include "../generic/BaseTypes.hpp" +#include "exception/DispatchIdNotSet.hpp" + +typedef int dispatchId_t; + +namespace boundary_mesh +{ + template < class TExecutor, class TBase, class TTypes, class TResult = void > + class StaticSingleDispatcher + { + public: + typedef TExecutor PARAM; + + static TResult Exec( + const TBase& face, + TExecutor exec); + }; + + template < class TExecutor, class TBase, class TResult > + class StaticSingleDispatcher< TExecutor, TBase, generic::NullType, TResult > + { + public: + typedef TExecutor PARAM; + + static TResult Exec( + const TBase& face, + TExecutor exec); + }; + + template < class TExecutor, class TMesh, class TResult = void > + class SingleFaceDispatcher + : public StaticSingleDispatcher< + TExecutor, + typename TMesh::Face, typename TMesh::FaceTypes, + TResult > + {}; + + template < class TExecutor, class TBaseLhs, class TTypesLhs, + class TBaseRhs = TBaseLhs, class TTypesRhs = TTypesLhs, + class TResult = void > + class StaticDoubleDispatcher + { + public: + typedef TExecutor PARAM; + + static TResult Exec( + const TBaseLhs& lhs, + const TBaseRhs& rhs, + const TExecutor& exec); + + template < class TLhs > + static TResult DispatchRhs( + const TLhs & lhs, + const TBaseRhs& rhs, + const TExecutor& exec); + }; + + template < class TExecutor, class TBaseLhs, + class TBaseRhs, class TTypesRhs, class TResult > + class StaticDoubleDispatcher< TExecutor, TBaseLhs, generic::NullType, + TBaseRhs, TTypesRhs, TResult > + { + public: + static TResult Exec( + const TBaseLhs& lhs, + const TBaseRhs& rhs, + const TExecutor& exec ); + }; + + template < class TExecutor, class TBaseLhs, class TTypesLhs, + class TBaseRhs, class TResult > + class StaticDoubleDispatcher< TExecutor, TBaseLhs, TTypesLhs, + TBaseRhs, generic::NullType, TResult > + { + public: + template < class TLhs > + static TResult DispatchRhs( + const TLhs& lhs, + const TBaseRhs& rhs, + const TExecutor& exec); + }; + + template < class TExecutor, class TMesh, class TResult > + class DoubleFaceDispatcher + : public StaticDoubleDispatcher< + TExecutor, + typename TMesh::Face, typename TMesh::FaceTypes, + typename TMesh::Face, typename TMesh::FaceTypes, + TResult > + {}; +} + +#include "FaceDispatch_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/FaceDispatch_tmpl.cpp b/src/bem3d/src/boundary_mesh/FaceDispatch_tmpl.cpp new file mode 100644 index 0000000..8380a16 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/FaceDispatch_tmpl.cpp @@ -0,0 +1,123 @@ +#ifdef HILBERT3D_BOUNDARY_MESH_FACEDISPATCH_CPP_GUARD_ +#error Please never include or compile this file directly. Include the \ + corresponding header file instead. +#else +#define HILBERT3D_BOUNDARY_MESH_FACEDISPATCH_CPP_GUARD_ +#include "FaceDispatch.hpp" + +#include "exception/CouldNotDispatchCall.hpp" + +#include + +namespace boundary_mesh +{ + template < class TExecutor, class TBase, class TTypes, class TResult > + TResult + StaticSingleDispatcher< TExecutor, TBase, TTypes, TResult >::Exec( + const TBase& face, + TExecutor exec) + { + typedef typename TTypes::Head Head; + typedef typename TTypes::Tail Tail; + + if (const Head* castedFace = dynamic_cast< const Head* >(&face)) + { + exec.exec( *castedFace ); + } + else + { + StaticSingleDispatcher< TExecutor, TBase, Tail, TResult >:: + Exec( face, exec ); + } + } + + template < class TExecutor, class TBase, class TResult > + TResult + StaticSingleDispatcher< TExecutor, TBase, generic::NullType, TResult >::Exec( + const TBase& face, + TExecutor exec) + { + throw new exception::CouldNotDispatchCall( + "Could not dispatch function call!\n"); + } + + template < class TExecutor, class TBaseLhs, class TTypesLhs, + class TBaseRhs, class TTypesRhs, class TResult > + TResult + StaticDoubleDispatcher< TExecutor, TBaseLhs, TTypesLhs, + TBaseRhs, TTypesRhs, TResult >::Exec( + const TBaseLhs& lhs, + const TBaseRhs& rhs, + const TExecutor& exec) + { + typedef typename TTypesLhs::Head Head; + typedef typename TTypesLhs::Tail Tail; + + if (const Head* p1 = dynamic_cast(&lhs)) + { + return StaticDoubleDispatcher< TExecutor, TBaseLhs, Head, + TBaseRhs, TTypesRhs, TResult >::DispatchRhs( *p1, rhs, exec ); + } + else + { + return StaticDoubleDispatcher< TExecutor, TBaseLhs, Tail, + TBaseRhs, TTypesRhs, TResult >::Exec( lhs, rhs, exec ); + } + } + + template < class TExecutor, class TBaseLhs, class TTypesLhs, + class TBaseRhs, class TTypesRhs, class TResult > + template < class TLhs > + TResult + StaticDoubleDispatcher< TExecutor, TBaseLhs, TTypesLhs, + TBaseRhs, TTypesRhs, TResult >::DispatchRhs( + const TLhs& lhs, + const TBaseRhs& rhs, + const TExecutor& exec) + { + typedef typename TTypesRhs::Head Head; + typedef typename TTypesRhs::Tail Tail; + + if (const Head* p2 = dynamic_cast(&rhs)) + { + return exec.exec( lhs, *p2 ); + } + else + { + return StaticDoubleDispatcher< TExecutor, TLhs, TTypesLhs, + TBaseRhs, Tail, TResult >::DispatchRhs( + lhs, rhs, exec ); + } + } + + template < class TExecutor, class TBaseLhs, + class TBaseRhs, class TTypesRhs, class TResult > + TResult + StaticDoubleDispatcher< TExecutor, TBaseLhs, generic::NullType, + TBaseRhs, TTypesRhs, TResult >::Exec( + const TBaseLhs& lhs, + const TBaseRhs& rhs, + const TExecutor& exec) + { + throw exception::CouldNotDispatchCall( + "Double Dispatcher: Could not dispatch left-hand side argument!\n"); + } + + template < class TExecutor, class TBaseLhs, class TTypesLhs, + class TBaseRhs, class TResult > + template < class TLhs > + TResult + StaticDoubleDispatcher< TExecutor, TBaseLhs, TTypesLhs, + TBaseRhs, generic::NullType, TResult >::DispatchRhs( + const TLhs& lhs, + const TBaseRhs& rhs, + const TExecutor& exec) + { + throw exception::CouldNotDispatchCall( + "Double Dispatcher: Could not dispatch right-hand side argument!\n"); + } + +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/Face_tmpl.cpp b/src/bem3d/src/boundary_mesh/Face_tmpl.cpp index 2830dc8..5f99319 100644 --- a/src/bem3d/src/boundary_mesh/Face_tmpl.cpp +++ b/src/bem3d/src/boundary_mesh/Face_tmpl.cpp @@ -1,135 +1,250 @@ -#ifdef MESH_FACE_TMPL_CPP_GUARD_ -#error "Never include this file directly! Use #include \"Face.hpp\" instead!" -#else +#ifndef MESH_FACE_TMPL_CPP_GUARD_ #define MESH_FACE_TMPL_CPP_GUARD_ #include +#include +#include -#include "HalfEdge.hpp" +#include "Face.hpp" namespace boundary_mesh { -template <> -inline -Face::Iterator__& -Face::Iterator__::operator++() -{ - do + template < class TMesh > + CommonFaceBase__< TMesh >::IteratorBase__::IteratorBase__( + const typename TMesh::HalfEdge& startingEdge, + enum WhereToStart whereToStart) + : startingEdge_( &startingEdge ), currentEdge_( &startingEdge ) + { + if ( whereToStart == StartAtEnd ) + { + currentEdge_ = 0; + return; + } + } + + template < class TMesh > + bool + CommonFaceBase__< TMesh >::IteratorBase__::operator==( + const CommonFaceBase__< TMesh >::IteratorBase__& rhs) const + { + assert( startingEdge_ == rhs.startingEdge_ ); + return currentEdge_ == rhs.currentEdge_; + } + + template < class TMesh > + bool + CommonFaceBase__< TMesh >::IteratorBase__::operator!=( + const CommonFaceBase__< TMesh >::IteratorBase__& rhs) const + { + return ! ( *this == rhs ); + } + + + template < class TMesh > + typename CommonFaceBase__< TMesh >::IteratorBase__& + CommonFaceBase__< TMesh >::IteratorBase__::operator++() { currentEdge_ = currentEdge_->getNextEdge(); if (currentEdge_ == startingEdge_) { currentEdge_ = 0; - break; } - } while (currentEdge_->getOppositeEdge() == 0); - return *this; -} + return *this; + } -template < class T > -inline -Face::Iterator__& -Face::Iterator__::operator++() -{ - currentEdge_ = currentEdge_->getNextEdge(); - if (currentEdge_ == startingEdge_) + template < class TMesh > + const typename TMesh::HalfEdge* + CommonFaceBase__< TMesh >::IteratorBase__::getCurrentHalfEdge() const { - currentEdge_ = 0; + return currentEdge_; } - return *this; -} -template <> -inline -Face::Iterator__::Iterator__(const HalfEdge* startingEdge, bool end) - : startingEdge_(startingEdge), currentEdge_(startingEdge) -{ - if (end) + template < class TMesh > + CommonFaceBase__< TMesh >::ConstFaceIterator::ConstFaceIterator( + const typename TMesh::HalfEdge& halfedge, + enum WhereToStart whereToStart) + : CommonFaceBase__< TMesh >::IteratorBase__( halfedge, whereToStart ) { - currentEdge_ = 0; - return; + if ( this->getCurrentHalfEdge() != 0 ) + { + if ( this->getCurrentHalfEdge()->getOppositeEdge() == 0 ) + ++(*this); + } } - if (getCurrentEdge().getOppositeEdge() == 0) - ++(*this); -} -template < class T > -inline -Face::Iterator__::Iterator__(const HalfEdge* startingEdge, bool end) - : startingEdge_(startingEdge), currentEdge_(startingEdge) -{ - if (end) + template < class TMesh > + typename CommonFaceBase__< TMesh >::ConstFaceIterator& + CommonFaceBase__< TMesh >::ConstFaceIterator::operator++() { - currentEdge_ = 0; - return; + do + { + CommonFaceBase__< TMesh >::IteratorBase__::operator++(); + } while ( this->getCurrentHalfEdge() != 0 + && this->getCurrentHalfEdge()->getOppositeEdge() == 0 ); } -} -template < class T > -inline -Face::Iterator__::Iterator__(const Face::Iterator__& copy) - : startingEdge_(copy.startingEdge_), currentEdge_(copy.currentEdge_) -{} - -template < class T > -inline -bool -Face::Iterator__::operator==( - const Face::Iterator__& rhs) const -{ - assert( startingEdge_ == rhs.startingEdge_ ); - return currentEdge_ == rhs.currentEdge_; -} + template < class TMesh > + const typename TMesh::Face& + CommonFaceBase__< TMesh >::ConstFaceIterator::operator*() const + { + assert( this->getCurrentHalfEdge() != 0 + && this->getCurrentHalfEdge()->getOppositeEdge() != 0); + return this->getCurrentHalfEdge()->getOppositeEdge()->getFace(); + } -template < class T > -inline -bool -Face::Iterator__::operator!=( - const Face::Iterator__& rhs) const -{ - return ! ( *this == rhs ); -} + template < class TMesh > + const typename TMesh::Face* + CommonFaceBase__< TMesh >::ConstFaceIterator::operator->() const + { + assert( this->getCurrentHalfEdge() != 0 + && this->getCurrentHalfEdge()->getOppositeEdge() != 0); + return &(this->getCurrentHalfEdge()->getOppositeEdge()->getFace()); + } -template <> -inline -const Vertex& -Face::Iterator__< Vertex >::operator*() const -{ - return getCurrentEdge().getStartVertex(); -} + template < class TMesh > + CommonFaceBase__< TMesh >::ConstVertexIterator::ConstVertexIterator( + const typename TMesh::HalfEdge& halfedge, + enum WhereToStart whereToStart) + : CommonFaceBase__< TMesh >::IteratorBase__( halfedge, whereToStart ) + {} -template <> -inline -const HalfEdge& -Face::Iterator__< HalfEdge >::operator*() const -{ - return getCurrentEdge(); -} + template < class TMesh > + const typename TMesh::Vertex& + CommonFaceBase__< TMesh >::ConstVertexIterator::operator*() const + { + assert( this->getCurrentHalfEdge() != 0 ); + return this->getCurrentHalfEdge()->getStartVertex(); + } -template <> -inline -const Face& -Face::Iterator__< Face >::operator*() const -{ - return getCurrentEdge().getOppositeEdge()->getFace(); -} + template < class TMesh > + const typename TMesh::Vertex* + CommonFaceBase__< TMesh >::ConstVertexIterator::operator->() const + { + assert( this->getCurrentHalfEdge() != 0 ); + &(this->getCurrentHalfEdge()->getStartVertex()); + } -template < class T > -inline -const T* -Face::Iterator__< T >::operator->() const -{ - return &(Face::Iterator__< T >::operator*( *this )); -} + template < class TMesh > + CommonFaceBase__< TMesh >::ConstEdgeIterator::ConstEdgeIterator( + const typename TMesh::HalfEdge& halfedge, + enum WhereToStart whereToStart) + : CommonFaceBase__< TMesh >::IteratorBase__( halfedge, whereToStart ) + {} -template < class T > -inline -const HalfEdge& -Face::Iterator__::getCurrentEdge() const -{ - return *currentEdge_; -} + template < class TMesh > + const typename TMesh::HalfEdge& + CommonFaceBase__< TMesh >::ConstEdgeIterator::operator*() const + { + assert( this->getCurrentHalfEdge() != 0 ); + return *(this->getCurrentHalfEdge()); + } + template < class TMesh > + const typename TMesh::HalfEdge* + CommonFaceBase__< TMesh >::ConstEdgeIterator::operator->() const + { + assert( this->getCurrentHalfEdge() != 0 ); + return this->getCurrentHalfEdge(); + } + + template < class TMesh > + typename CommonFaceBase__< TMesh >::ConstEdgeIterator + CommonFaceBase__< TMesh >::begin_e() const + { + return ConstEdgeIterator( halfedge_, StartAtBeginning ); + } + + template < class TMesh > + typename CommonFaceBase__< TMesh >::ConstEdgeIterator + CommonFaceBase__< TMesh >::end_e() const + { + return ConstEdgeIterator( halfedge_, StartAtEnd ); + } + + template < class TMesh > + typename CommonFaceBase__< TMesh >::ConstFaceIterator + CommonFaceBase__< TMesh >::begin_f() const + { + return ConstFaceIterator( halfedge_, StartAtBeginning ); + } + + template < class TMesh > + typename CommonFaceBase__< TMesh >::ConstFaceIterator + CommonFaceBase__< TMesh >::end_f() const + { + return ConstFaceIterator( halfedge_, StartAtEnd ); + } + + template < class TMesh > + typename CommonFaceBase__< TMesh >::ConstVertexIterator + CommonFaceBase__< TMesh >::begin_v() const + { + return ConstVertexIterator( halfedge_, StartAtBeginning ); + } + + template < class TMesh > + typename CommonFaceBase__< TMesh >::ConstVertexIterator + CommonFaceBase__< TMesh >::end_v() const + { + return ConstVertexIterator( halfedge_, StartAtEnd ); + } + + template < class TMesh > + unsigned int + CommonFaceBase__< TMesh >::getLocalEdgeId( + const typename TMesh::Prop::HalfEdge& edge ) const + { + unsigned int i = 0; + CommonFaceBase__< TMesh >::ConstEdgeIterator edgeIt = begin_e(); + assert( edgeIt != end_e() ); + + while ( *edgeIt != edge && ++edgeIt != end_e() ) + { + ++i; + } + + assert( edgeIt != end_e() ); + return i; + } + + template < class TMesh > + geoid_t + RFace< TMesh >::getId() const + { + return id_; + } + + template < class TMesh > + FaceVertexCache< TMesh >::FaceVertexCache() + : face_(0), + vertices_( std::vector< const typename TMesh::Vertex* >( + TMesh::Prop::maximumNumberOfEdgesPerFace ) ) + { + } + + template < class TMesh > + const typename TMesh::Vertex& + FaceVertexCache< TMesh >::Get( const typename TMesh::Face* face, + unsigned int id ) + { + FaceVertexCache& cache = + generic::Singleton< FaceVertexCache< TMesh > >::Get(); + + if ( cache.face_ != face ) + { + cache.face_ = face; + unsigned int i = 0; + + for ( typename TMesh::Face::ConstVertexIterator vertex = face->begin_v(); + vertex != face->end_v(); ++vertex ) + { + cache.vertices_[ i ] = &(*vertex); + ++i; + } + } + + return *(cache.vertices_[ id ]); + } } #endif diff --git a/src/bem3d/src/boundary_mesh/FlexibleMesh.cpp b/src/bem3d/src/boundary_mesh/FlexibleMesh.cpp new file mode 100644 index 0000000..4e4798b --- /dev/null +++ b/src/bem3d/src/boundary_mesh/FlexibleMesh.cpp @@ -0,0 +1,2 @@ +#include "FlexibleMesh.hpp" + diff --git a/src/bem3d/src/boundary_mesh/FlexibleMesh.hpp b/src/bem3d/src/boundary_mesh/FlexibleMesh.hpp new file mode 100644 index 0000000..4f7ff53 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/FlexibleMesh.hpp @@ -0,0 +1,55 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FLEXIBLEMESH_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FLEXIBLEMESH_HPP_GUARD_ + +#include "FaceDispatch.hpp" +#include "Face.hpp" +#include "HalfEdge.hpp" +#include "Vertex.hpp" +#include "Mesh.hpp" + +#include "../generic/TypeList.hpp" + +#include "face/Triangle_tmpl.hpp" +#include "face/Parallelogram_tmpl.hpp" + +#include "algorithm/HandleObj.hpp" +#include "algorithm/RefineUniformly.hpp" + +namespace boundary_mesh +{ + template < class TMesh > + struct FlexibleMeshProps + { + typedef UnlinkedVertex UVertex; + typedef VertexT< TMesh > Vertex; + typedef HalfEdgeT< TMesh > HalfEdge; + typedef RFace< TMesh >* IntFace; + typedef RFace< TMesh > Face; + + typedef face::RTriangle< TMesh > Triangle; + typedef face::RParallelogram< TMesh > Parallelogram; + typedef Parallelogram ConvexQuadrilateral; + typedef Parallelogram Quadrilateral; + + typedef HILBERT3D_TYPELIST_2( Triangle, Parallelogram ) FaceTypes; + + static const unsigned int maximumNumberOfEdgesPerFace = 4; + static const unsigned int maximumNumberOfHangingNodes = 1; + }; + + template < class TMesh > + struct FlexibleMeshAlgorithms + { + static TMesh (*loadFromObj)( const char* ); + static void (*saveAsObj)( const TMesh&, const char* ); + static TMesh (*refineUniformly)( const TMesh& ); + }; + + template class Mesh< FlexibleMeshProps, FlexibleMeshAlgorithms >; + typedef Mesh< FlexibleMeshProps, FlexibleMeshAlgorithms > FlexibleMesh; +} + +#include "FlexibleMesh_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/FlexibleMesh_tmpl.cpp b/src/bem3d/src/boundary_mesh/FlexibleMesh_tmpl.cpp new file mode 100644 index 0000000..56aff7f --- /dev/null +++ b/src/bem3d/src/boundary_mesh/FlexibleMesh_tmpl.cpp @@ -0,0 +1,23 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FLEXIBLEMESH_TMPL_CPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FLEXIBLEMESH_TMPL_CPP_GUARD_ + +#include "FlexibleMesh.hpp" +#include "FaceDispatch.hpp" + +namespace boundary_mesh +{ + template < class TMesh > + TMesh (* FlexibleMeshAlgorithms< TMesh >::loadFromObj)(const char*) + = &(algorithm::loadFromObj< TMesh >); + + template < class TMesh > + void (* FlexibleMeshAlgorithms< TMesh >::saveAsObj)(const TMesh&, const char*) + = &(algorithm::saveAsObj< TMesh >); + + template < class TMesh > + TMesh (* FlexibleMeshAlgorithms< TMesh >::refineUniformly)(const TMesh& ) + = &(algorithm::refineUniformly< TMesh >); +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/HalfEdge.cpp b/src/bem3d/src/boundary_mesh/HalfEdge.cpp deleted file mode 100644 index e7c95a3..0000000 --- a/src/bem3d/src/boundary_mesh/HalfEdge.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "HalfEdge.hpp" - -namespace boundary_mesh { -unsigned int HalfEdge::getNumberOfHangingNodes() const -{ - if (hanging_ == 0) - { - return 0; - } - else - { - HalfEdge* hanging = hanging_; - unsigned int hangingNodes = 0; - while ( (hanging = hanging->hanging_) != 0 ) - ++hangingNodes; - return hangingNodes; - } -} - -bool -HalfEdge::operator<(const HalfEdge& rhs) const -{ - const Vertex* my_min = start_; - const Vertex* my_max = end_; - const Vertex* rhs_min = rhs.start_; - const Vertex* rhs_max = rhs.end_; - - if ( my_min > my_max ) - { - my_min = end_; - my_max = start_; - } - - if ( rhs_min > rhs_max ) - { - rhs_min = rhs.end_; - rhs_max = rhs.start_; - } - - return ( my_min < rhs_min || ( my_min == rhs_min && my_max <= rhs_max ) ); -} - -bool -HalfEdge::oppositeEdgeCheck(const HalfEdge& rhs) const -{ - const Vertex* my_min = start_; - const Vertex* my_max = end_; - const Vertex* rhs_min = rhs.start_; - const Vertex* rhs_max = rhs.end_; - - if ( my_min > my_max ) - { - my_min = end_; - my_max = start_; - } - - if ( rhs_min > rhs_max ) - { - rhs_min = rhs.end_; - rhs_max = rhs.start_; - } - - return ( my_min == rhs_min && my_max == rhs_max ); -} - -bool -halfedge_p_comparator_lt_minmax_vertex( - const HalfEdge* lhs, const HalfEdge* rhs) -{ - if ( lhs == 0 ) - return lhs != rhs; - else if ( rhs == 0 ) - return false; - else - return *lhs < *rhs; -} - -bool -halfedge_p_comparator_lt_lexical_vertex( - const HalfEdge* lhs, const HalfEdge* rhs) -{ - return ( &(lhs->getStartVertex()) < &(rhs->getStartVertex()) || - ( &(lhs->getStartVertex()) == &(rhs->getStartVertex()) - && &(lhs->getEndVertex()) < &(rhs->getEndVertex()) ) ); -} -} - diff --git a/src/bem3d/src/boundary_mesh/HalfEdge.hpp b/src/bem3d/src/boundary_mesh/HalfEdge.hpp index b9a5d9f..6d3193b 100644 --- a/src/bem3d/src/boundary_mesh/HalfEdge.hpp +++ b/src/bem3d/src/boundary_mesh/HalfEdge.hpp @@ -1,73 +1,98 @@ -#ifndef MESH_HALFEDGE_HPP_GUARD_ -#define MESH_HALFEDGE_HPP_GUARD_ +#ifndef HILBERT3D_BOUNDARY_MESH_HALFEDGE_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_HALFEDGE_HPP_GUARD_ + +/** + * @file HalfEdge.hpp + * @brief Declares a half-edge data structure. + * + * Half-edges contain the information about the geometry of the boundary mesh, + * basically all information except for the coordinates of the vertices. + */ namespace boundary_mesh { - class Face; - class HalfEdge; - class Vertex; - - class HalfEdge + /** + * HalfEdgeT is a class template, which implements a half-edge data + * structure. The template parameter must be a class, which declares at + * least the class-local data types Face, HalfEdge and Vertex. This class + * does not make any assumptions on the Face and the Vertex type. The + * type TMesh::HalfEdge must however be equal to the HalfEdgeT< TMesh > + * type when TMesh is the template parameter passed to HalfEdgeT. + * + * TODO: Do not use the Mesh class as a friend class. Create a + * HalfEdgeBuilder class instead. This also requires some changes in the + * Mesh class. + */ + template < class TMesh > + class HalfEdgeT { - template < class T > friend class Mesh; + template < template class TProp, + template class TAlg > friend class Mesh; public: - HalfEdge(const Vertex& start, const Vertex& end, const Face& face) - : start_(&start), end_(&end), face_(&face), - pair_(0), prev_(0), next_(0), hanging_(0) - {} - - const Vertex& getStartVertex() const + const typename TMesh::Vertex& getStartVertex() const { return *start_; } - const Vertex& getEndVertex() const + const typename TMesh::Vertex& getEndVertex() const { return *end_; } - const Face& getFace() const - { return *face_; } - const HalfEdge* getOppositeEdge() const + const typename TMesh::Face& getFace() const + { assert( face_ != 0 ); return *face_; } + const typename TMesh::HalfEdge* getOppositeEdge() const { return pair_; } - const HalfEdge* getHangingEdge() const + const typename TMesh::HalfEdge* getHangingEdge() const { return hanging_; } - const HalfEdge* getPreviousEdge() const + const typename TMesh::HalfEdge* getPreviousEdge() const { return prev_; } - const HalfEdge* getNextEdge() const + const typename TMesh::HalfEdge* getNextEdge() const { return next_; } unsigned int getNumberOfHangingNodes() const; - bool operator<(const HalfEdge& halfedge) const; - bool oppositeEdgeCheck(const HalfEdge& halfedge) const; + bool operator<(const typename TMesh::HalfEdge& halfedge) const; + bool oppositeEdgeCheck(const typename TMesh::HalfEdge& halfedge) const; + + static bool compLtMinmaxVertex( + const typename TMesh::HalfEdge* lhs, + const typename TMesh::HalfEdge* rhs); + static bool compLtLexicalVertex( + const typename TMesh::HalfEdge* lhs, + const typename TMesh::HalfEdge* rhs); private: - HalfEdge(); - HalfEdge* getOppositeEdge() + HalfEdgeT(const typename TMesh::Vertex& start, + const typename TMesh::Vertex& end) + : start_(&start), end_(&end), face_(0), + pair_(0), prev_(0), next_(0), hanging_(0) + {} + + HalfEdgeT(); + typename TMesh::HalfEdge* getOppositeEdge() { return pair_; } - HalfEdge* getPreviousEdge() + typename TMesh::HalfEdge* getPreviousEdge() { return prev_; } - HalfEdge* getNextEdge() + typename TMesh::HalfEdge* getNextEdge() { return next_; } - HalfEdge* getHangingEdge() + typename TMesh::HalfEdge* getHangingEdge() { return hanging_; } - void setOppositeEdge(HalfEdge* oppositeEdge) + void setFace(typename TMesh::Face& face) + { face_ = &face; } + void setOppositeEdge(typename TMesh::HalfEdge* oppositeEdge) { pair_ = oppositeEdge; } - void setPreviousEdge(HalfEdge* prevEdge) + void setPreviousEdge(typename TMesh::HalfEdge* prevEdge) { prev_ = prevEdge; } - void setNextEdge(HalfEdge* nextEdge) + void setNextEdge(typename TMesh::HalfEdge* nextEdge) { next_ = nextEdge; } - void setHangingEdge(HalfEdge* hangingEdge) + void setHangingEdge(typename TMesh::HalfEdge* hangingEdge) { hanging_ = hangingEdge; } - const Vertex* start_; - const Vertex* end_; - const Face* face_; - HalfEdge* pair_; - HalfEdge* prev_; - HalfEdge* next_; - HalfEdge* hanging_; + const typename TMesh::Vertex* start_; + const typename TMesh::Vertex* end_; + const typename TMesh::Face* face_; + typename TMesh::HalfEdge* pair_; + typename TMesh::HalfEdge* prev_; + typename TMesh::HalfEdge* next_; + typename TMesh::HalfEdge* hanging_; }; - - bool halfedge_p_comparator_lt_minmax_vertex( - const HalfEdge* lhs, const HalfEdge* rhs); - bool halfedge_p_comparator_lt_lexical_vertex( - const HalfEdge* lhs, const HalfEdge* rhs); } +#include "HalfEdge_tmpl.cpp" + #endif diff --git a/src/bem3d/src/boundary_mesh/HalfEdge_tmpl.cpp b/src/bem3d/src/boundary_mesh/HalfEdge_tmpl.cpp new file mode 100644 index 0000000..f62a197 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/HalfEdge_tmpl.cpp @@ -0,0 +1,99 @@ +#include "HalfEdge.hpp" + +namespace boundary_mesh { +template < class TMesh > +unsigned int HalfEdgeT< TMesh >::getNumberOfHangingNodes() const +{ + if (hanging_ == 0) + { + return 0; + } + else + { + typename TMesh::HalfEdge* hanging = hanging_; + unsigned int hangingNodes = 0; + while ( (hanging = hanging->hanging_) != 0 ) + ++hangingNodes; + return hangingNodes; + } +} + +template < class TMesh > +bool +HalfEdgeT< TMesh >::operator<(const typename TMesh::HalfEdge& rhs) const +{ + const typename TMesh::Vertex* my_min = start_; + const typename TMesh::Vertex* my_max = end_; + const typename TMesh::Vertex* rhs_min = rhs.start_; + const typename TMesh::Vertex* rhs_max = rhs.end_; + + if ( my_min > my_max ) + { + my_min = end_; + my_max = start_; + } + + if ( rhs_min > rhs_max ) + { + rhs_min = rhs.end_; + rhs_max = rhs.start_; + } + + return ( my_min < rhs_min || ( my_min == rhs_min && my_max <= rhs_max ) ); +} + +template < class TMesh > +bool +HalfEdgeT< TMesh >::oppositeEdgeCheck(const typename TMesh::HalfEdge& rhs) const +{ + const typename TMesh::Vertex* my_min = start_; + const typename TMesh::Vertex* my_max = end_; + const typename TMesh::Vertex* rhs_min = rhs.start_; + const typename TMesh::Vertex* rhs_max = rhs.end_; + + if ( my_min > my_max ) + { + my_min = end_; + my_max = start_; + } + + if ( rhs_min > rhs_max ) + { + rhs_min = (rhs.end_); + rhs_max = (rhs.start_); + } + + return ( my_min == rhs_min && my_max == rhs_max ); +} + +template < class TMesh > +bool +HalfEdgeT< TMesh >::compLtMinmaxVertex( + const typename TMesh::HalfEdge* lhs, + const typename TMesh::HalfEdge* rhs) +{ + if ( lhs == 0 ) + return lhs != rhs; + else if ( rhs == 0 ) + return false; + else + return *lhs < *rhs; +} + +template < class TMesh > +bool +HalfEdgeT::compLtLexicalVertex( + const typename TMesh::HalfEdge* lhs, + const typename TMesh::HalfEdge* rhs) +{ + if ( lhs == 0 ) + return lhs != rhs; + else if ( rhs == 0) + return false; + else + return ( &(lhs->getStartVertex()) < &(rhs->getStartVertex()) || + ( &(lhs->getStartVertex()) == &(rhs->getStartVertex()) + && &(lhs->getEndVertex()) < &(rhs->getEndVertex()) ) ); +} +} + diff --git a/src/bem3d/src/boundary_mesh/Makefile b/src/bem3d/src/boundary_mesh/Makefile new file mode 100644 index 0000000..1011ccb --- /dev/null +++ b/src/bem3d/src/boundary_mesh/Makefile @@ -0,0 +1,711 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/boundary_mesh/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + + +pkgdatadir = $(datadir)/hilbert3d +pkgincludedir = $(includedir)/hilbert3d +pkglibdir = $(libdir)/hilbert3d +pkglibexecdir = $(libexecdir)/hilbert3d +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +bin_PROGRAMS = testhilbertmesh$(EXEEXT) +subdir = src/boundary_mesh +DIST_COMMON = $(libhilbert_mesh_a_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(testhilbertmesh_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_blas.m4 \ + $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_regex.m4 $(top_srcdir)/m4/ax_hlib.m4 \ + $(top_srcdir)/m4/ax_lapack.m4 \ + $(top_srcdir)/m4/ax_prog_doxygen.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(libhilbert_mesh_adir)" \ + "$(DESTDIR)$(testhilbertmeshdir)" +LIBRARIES = $(lib_LIBRARIES) +AR = ar +ARFLAGS = cru +libhilbert_mesh_a_AR = $(AR) $(ARFLAGS) +libhilbert_mesh_a_LIBADD = +am_libhilbert_mesh_a_OBJECTS = \ + libhilbert_mesh_a-CouldNotDispatchCall.$(OBJEXT) \ + libhilbert_mesh_a-DispatchIdNotSet.$(OBJEXT) \ + libhilbert_mesh_a-GenericVector.$(OBJEXT) \ + libhilbert_mesh_a-FlexibleMesh.$(OBJEXT) +libhilbert_mesh_a_OBJECTS = $(am_libhilbert_mesh_a_OBJECTS) +PROGRAMS = $(bin_PROGRAMS) +am_testhilbertmesh_OBJECTS = t.$(OBJEXT) +testhilbertmesh_OBJECTS = $(am_testhilbertmesh_OBJECTS) +am__DEPENDENCIES_1 = +testhilbertmesh_DEPENDENCIES = $(am__DEPENDENCIES_1) libhilbert-mesh.a +DEFAULT_INCLUDES = -I. -I$(top_builddir)/src +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +SOURCES = $(libhilbert_mesh_a_SOURCES) $(testhilbertmesh_SOURCES) +DIST_SOURCES = $(libhilbert_mesh_a_SOURCES) $(testhilbertmesh_SOURCES) +HEADERS = $(libhilbert_mesh_a_HEADERS) $(testhilbertmesh_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run tar +AUTOCONF = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoconf +AUTOHEADER = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoheader +AUTOMAKE = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run automake-1.11 +AWK = mawk +BLAS_LIBS = -lblas +BOOST_CPPFLAGS = -I/usr/include +BOOST_LDFLAGS = -L/usr/lib +BOOST_REGEX_LIB = -lboost_regex-mt +BOOST_ROOT_PATH = /usr +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CXX = g++ +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DOXYGEN_PAPER_SIZE = +DX_CONFIG = Doxyfile +DX_DOCDIR = docs/doxygen +DX_DOT = +DX_DOXYGEN = +DX_DVIPS = +DX_EGREP = +DX_ENV = SRCDIR='.' PROJECT='Hilbert 3D' DOCDIR='docs/doxygen' VERSION='0.1.0' HAVE_DOT='NO' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='NO' GENERATE_LATEX='NO' +DX_FLAG_chi = 0 +DX_FLAG_chm = 0 +DX_FLAG_doc = 0 +DX_FLAG_dot = 0 +DX_FLAG_html = 0 +DX_FLAG_man = 0 +DX_FLAG_pdf = 0 +DX_FLAG_ps = 0 +DX_FLAG_rtf = 0 +DX_FLAG_xml = 0 +DX_HHC = +DX_LATEX = +DX_MAKEINDEX = +DX_PDFLATEX = +DX_PERL = /usr/bin/perl +DX_PROJECT = Hilbert 3D +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +F77 = gfortran +FFLAGS = -g -O2 +FLIBS = -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2 -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../.. -L/usr/lib/x86_64-linux-gnu -lgfortran -lm +GREP = /bin/grep +HLIB_CPPFLAGS = -I/usr/local/include +HLIB_LDFLAGS = -L/usr/local/lib +HLIB_LIB = -lhmatrix +HLIB_ROOT_PATH = /usr/local +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LAPACK_LIBS = -llapack +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +OBJEXT = o +PACKAGE = hilbert3d +PACKAGE_BUGREPORT = markus.mayr@tuwien.ac.at +PACKAGE_NAME = Hilbert 3D +PACKAGE_STRING = Hilbert 3D 0.1.0 +PACKAGE_TARNAME = hilbert3d +PACKAGE_URL = http://83.169.35.184/cgi-bin/gitweb?p=bem3d.git +PACKAGE_VERSION = 0.1.0 +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/bash +STRIP = +VERSION = 0.1.0 +abs_builddir = /home/treecity/workspace/bacc/src/bem3d/src/boundary_mesh +abs_srcdir = /home/treecity/workspace/bacc/src/bem3d/src/boundary_mesh +abs_top_builddir = /home/treecity/workspace/bacc/src/bem3d +abs_top_srcdir = /home/treecity/workspace/bacc/src/bem3d +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = gfortran +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +lib_LIBRARIES = libhilbert-mesh.a +libhilbert_mesh_adir = . +libhilbert_mesh_a_SOURCES = \ + exception/CouldNotDispatchCall.cpp exception/DispatchIdNotSet.cpp \ + ../generic/GenericVector.cpp FlexibleMesh.cpp + +libhilbert_mesh_a_HEADERS = \ + Face.hpp Face.cpp FaceDispatch.hpp FaceDispatch_tmpl.cpp FlexibleMesh.hpp \ + FlexibleMesh_tmpl.cpp HalfEdge.hpp HalfEdge_tmpl.cpp MeshBuilder.hpp \ + MeshBuilder_tmpl.cpp Mesh.hpp Mesh.cpp types.hpp Vertex.hpp Vertex_tmpl.cpp \ + algorithm/HandleObj.hpp algorithm/HandleObj_tmpl.cpp \ + algorithm/RefineUniformly.hpp algorithm/RefineUniformly_tmpl.cpp \ + exception/CouldNotDispatchCall.hpp exception/DispatchIdNotSet.hpp \ + exception/NoMatchingFaceType.hpp exception/NoMatchingFaceType_tmpl.cpp \ + face/ConvexQuadrilateral.hpp face/ConvexQuadrilateral_tmpl.cpp \ + face/Parallelogram.hpp face/Parallelogram_tmpl.cpp \ + face/Quadrilateral.hpp face/Quadrilateral_tmpl.cpp \ + face/Triangle.hpp face/Triangle_tmpl.cpp \ + ../generic/BaseTypes.hpp ../generic/TypeList.hpp \ + ../generic/Singleton.hpp ../generic/Singleton_tmpl.cpp \ + ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp + +libhilbert_mesh_a_CPPFLAGS = $(CPPFLAGS) +testhilbertmeshdir = . +testhilbertmesh_SOURCES = t.cpp +testhilbertmesh_HEADERS = \ + Face.hpp HalfEdge.hpp FlexibleMesh.hpp Mesh.hpp Vertex.hpp \ + ../generic/GenericVector.hpp exception/DispatchIdNotSet.hpp \ + exception/NoMatchingFaceType.hpp exception/CouldNotDispatchCall.hpp \ + algorithm/HandleObj.hpp algorithm/RefineUniformly.hpp + +testhilbertmesh_LDADD = $(BOOST_REGEX_LIB) libhilbert-mesh.a +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/boundary_mesh/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/boundary_mesh/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + if test -f $$p; then \ + $(am__strip_dir) \ + echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \ + ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \ + cd "$(DESTDIR)$(libdir)" && rm -f $$files + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +libhilbert-mesh.a: $(libhilbert_mesh_a_OBJECTS) $(libhilbert_mesh_a_DEPENDENCIES) + -rm -f libhilbert-mesh.a + $(libhilbert_mesh_a_AR) libhilbert-mesh.a $(libhilbert_mesh_a_OBJECTS) $(libhilbert_mesh_a_LIBADD) + $(RANLIB) libhilbert-mesh.a +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +testhilbertmesh$(EXEEXT): $(testhilbertmesh_OBJECTS) $(testhilbertmesh_DEPENDENCIES) + @rm -f testhilbertmesh$(EXEEXT) + $(CXXLINK) $(testhilbertmesh_OBJECTS) $(testhilbertmesh_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Po +include ./$(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Po +include ./$(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Po +include ./$(DEPDIR)/libhilbert_mesh_a-GenericVector.Po +include ./$(DEPDIR)/t.Po + +.cpp.o: + $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: + $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +libhilbert_mesh_a-CouldNotDispatchCall.o: exception/CouldNotDispatchCall.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-CouldNotDispatchCall.o -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Tpo -c -o libhilbert_mesh_a-CouldNotDispatchCall.o `test -f 'exception/CouldNotDispatchCall.cpp' || echo '$(srcdir)/'`exception/CouldNotDispatchCall.cpp + $(am__mv) $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Tpo $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Po +# source='exception/CouldNotDispatchCall.cpp' object='libhilbert_mesh_a-CouldNotDispatchCall.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-CouldNotDispatchCall.o `test -f 'exception/CouldNotDispatchCall.cpp' || echo '$(srcdir)/'`exception/CouldNotDispatchCall.cpp + +libhilbert_mesh_a-CouldNotDispatchCall.obj: exception/CouldNotDispatchCall.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-CouldNotDispatchCall.obj -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Tpo -c -o libhilbert_mesh_a-CouldNotDispatchCall.obj `if test -f 'exception/CouldNotDispatchCall.cpp'; then $(CYGPATH_W) 'exception/CouldNotDispatchCall.cpp'; else $(CYGPATH_W) '$(srcdir)/exception/CouldNotDispatchCall.cpp'; fi` + $(am__mv) $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Tpo $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Po +# source='exception/CouldNotDispatchCall.cpp' object='libhilbert_mesh_a-CouldNotDispatchCall.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-CouldNotDispatchCall.obj `if test -f 'exception/CouldNotDispatchCall.cpp'; then $(CYGPATH_W) 'exception/CouldNotDispatchCall.cpp'; else $(CYGPATH_W) '$(srcdir)/exception/CouldNotDispatchCall.cpp'; fi` + +libhilbert_mesh_a-DispatchIdNotSet.o: exception/DispatchIdNotSet.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-DispatchIdNotSet.o -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Tpo -c -o libhilbert_mesh_a-DispatchIdNotSet.o `test -f 'exception/DispatchIdNotSet.cpp' || echo '$(srcdir)/'`exception/DispatchIdNotSet.cpp + $(am__mv) $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Tpo $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Po +# source='exception/DispatchIdNotSet.cpp' object='libhilbert_mesh_a-DispatchIdNotSet.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-DispatchIdNotSet.o `test -f 'exception/DispatchIdNotSet.cpp' || echo '$(srcdir)/'`exception/DispatchIdNotSet.cpp + +libhilbert_mesh_a-DispatchIdNotSet.obj: exception/DispatchIdNotSet.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-DispatchIdNotSet.obj -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Tpo -c -o libhilbert_mesh_a-DispatchIdNotSet.obj `if test -f 'exception/DispatchIdNotSet.cpp'; then $(CYGPATH_W) 'exception/DispatchIdNotSet.cpp'; else $(CYGPATH_W) '$(srcdir)/exception/DispatchIdNotSet.cpp'; fi` + $(am__mv) $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Tpo $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Po +# source='exception/DispatchIdNotSet.cpp' object='libhilbert_mesh_a-DispatchIdNotSet.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-DispatchIdNotSet.obj `if test -f 'exception/DispatchIdNotSet.cpp'; then $(CYGPATH_W) 'exception/DispatchIdNotSet.cpp'; else $(CYGPATH_W) '$(srcdir)/exception/DispatchIdNotSet.cpp'; fi` + +libhilbert_mesh_a-GenericVector.o: ../generic/GenericVector.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-GenericVector.o -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-GenericVector.Tpo -c -o libhilbert_mesh_a-GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp + $(am__mv) $(DEPDIR)/libhilbert_mesh_a-GenericVector.Tpo $(DEPDIR)/libhilbert_mesh_a-GenericVector.Po +# source='../generic/GenericVector.cpp' object='libhilbert_mesh_a-GenericVector.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp + +libhilbert_mesh_a-GenericVector.obj: ../generic/GenericVector.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-GenericVector.obj -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-GenericVector.Tpo -c -o libhilbert_mesh_a-GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` + $(am__mv) $(DEPDIR)/libhilbert_mesh_a-GenericVector.Tpo $(DEPDIR)/libhilbert_mesh_a-GenericVector.Po +# source='../generic/GenericVector.cpp' object='libhilbert_mesh_a-GenericVector.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` + +libhilbert_mesh_a-FlexibleMesh.o: FlexibleMesh.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-FlexibleMesh.o -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Tpo -c -o libhilbert_mesh_a-FlexibleMesh.o `test -f 'FlexibleMesh.cpp' || echo '$(srcdir)/'`FlexibleMesh.cpp + $(am__mv) $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Tpo $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Po +# source='FlexibleMesh.cpp' object='libhilbert_mesh_a-FlexibleMesh.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-FlexibleMesh.o `test -f 'FlexibleMesh.cpp' || echo '$(srcdir)/'`FlexibleMesh.cpp + +libhilbert_mesh_a-FlexibleMesh.obj: FlexibleMesh.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-FlexibleMesh.obj -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Tpo -c -o libhilbert_mesh_a-FlexibleMesh.obj `if test -f 'FlexibleMesh.cpp'; then $(CYGPATH_W) 'FlexibleMesh.cpp'; else $(CYGPATH_W) '$(srcdir)/FlexibleMesh.cpp'; fi` + $(am__mv) $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Tpo $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Po +# source='FlexibleMesh.cpp' object='libhilbert_mesh_a-FlexibleMesh.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-FlexibleMesh.obj `if test -f 'FlexibleMesh.cpp'; then $(CYGPATH_W) 'FlexibleMesh.cpp'; else $(CYGPATH_W) '$(srcdir)/FlexibleMesh.cpp'; fi` +install-libhilbert_mesh_aHEADERS: $(libhilbert_mesh_a_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(libhilbert_mesh_adir)" || $(MKDIR_P) "$(DESTDIR)$(libhilbert_mesh_adir)" + @list='$(libhilbert_mesh_a_HEADERS)'; test -n "$(libhilbert_mesh_adir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libhilbert_mesh_adir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libhilbert_mesh_adir)" || exit $$?; \ + done + +uninstall-libhilbert_mesh_aHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libhilbert_mesh_a_HEADERS)'; test -n "$(libhilbert_mesh_adir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(libhilbert_mesh_adir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(libhilbert_mesh_adir)" && rm -f $$files +install-testhilbertmeshHEADERS: $(testhilbertmesh_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(testhilbertmeshdir)" || $(MKDIR_P) "$(DESTDIR)$(testhilbertmeshdir)" + @list='$(testhilbertmesh_HEADERS)'; test -n "$(testhilbertmeshdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(testhilbertmeshdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(testhilbertmeshdir)" || exit $$?; \ + done + +uninstall-testhilbertmeshHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(testhilbertmesh_HEADERS)'; test -n "$(testhilbertmeshdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(testhilbertmeshdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(testhilbertmeshdir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libhilbert_mesh_adir)" "$(DESTDIR)$(testhilbertmeshdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-libhilbert_mesh_aHEADERS \ + install-testhilbertmeshHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-libLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-libLIBRARIES \ + uninstall-libhilbert_mesh_aHEADERS \ + uninstall-testhilbertmeshHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLIBRARIES install-libhilbert_mesh_aHEADERS \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip install-testhilbertmeshHEADERS \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-libLIBRARIES \ + uninstall-libhilbert_mesh_aHEADERS \ + uninstall-testhilbertmeshHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/bem3d/src/boundary_mesh/Makefile.am b/src/bem3d/src/boundary_mesh/Makefile.am index 03eada2..247cc63 100644 --- a/src/bem3d/src/boundary_mesh/Makefile.am +++ b/src/bem3d/src/boundary_mesh/Makefile.am @@ -1,38 +1,33 @@ -bin_PROGRAMS = testhilbertmesh mesh_compare +bin_PROGRAMS = testhilbertmesh lib_LIBRARIES = libhilbert-mesh.a libhilbert_mesh_adir = . -libhilbert_mesh_a_HEADERS = \ - Face.hpp Face_tmpl.cpp HalfEdge.hpp Mesh.hpp Mesh.cpp Vertex.hpp \ - ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp \ - mixin/ExportingObj.hpp mixin/ExportingObj.cpp \ - mixin/LoadingObj.hpp mixin/LoadingObj.cpp \ - layer/Marker.hpp layer/Marker.cpp mixin/MeshMixin.hpp \ - mixin/RefiningAdaptivly.hpp mixin/RefiningAdaptivly.cpp \ - mixin/RefiningUniformly.hpp mixin/RefiningUniformly.cpp libhilbert_mesh_a_SOURCES = \ - Face.cpp HalfEdge.cpp Vertex.cpp \ - ../generic/GenericVector.cpp - + exception/CouldNotDispatchCall.cpp exception/DispatchIdNotSet.cpp \ + ../generic/GenericVector.cpp FlexibleMesh.cpp +libhilbert_mesh_a_HEADERS = \ + Face.hpp Face.cpp FaceDispatch.hpp FaceDispatch_tmpl.cpp FlexibleMesh.hpp \ + FlexibleMesh_tmpl.cpp HalfEdge.hpp HalfEdge_tmpl.cpp MeshBuilder.hpp \ + MeshBuilder_tmpl.cpp Mesh.hpp Mesh.cpp types.hpp Vertex.hpp Vertex_tmpl.cpp \ + algorithm/HandleObj.hpp algorithm/HandleObj_tmpl.cpp \ + algorithm/RefineUniformly.hpp algorithm/RefineUniformly_tmpl.cpp \ + exception/CouldNotDispatchCall.hpp exception/DispatchIdNotSet.hpp \ + exception/NoMatchingFaceType.hpp exception/NoMatchingFaceType_tmpl.cpp \ + face/ConvexQuadrilateral.hpp face/ConvexQuadrilateral_tmpl.cpp \ + face/Parallelogram.hpp face/Parallelogram_tmpl.cpp \ + face/Quadrilateral.hpp face/Quadrilateral_tmpl.cpp \ + face/Triangle.hpp face/Triangle_tmpl.cpp \ + ../generic/BaseTypes.hpp ../generic/TypeList.hpp \ + ../generic/Singleton.hpp ../generic/Singleton_tmpl.cpp \ + ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp +libhilbert_mesh_a_CPPFLAGS = $(CPPFLAGS) testhilbertmeshdir = . testhilbertmesh_SOURCES = t.cpp testhilbertmesh_HEADERS = \ - Face.hpp HalfEdge.hpp Mesh.hpp Mesh.cpp Vertex.hpp \ - ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp \ - mixin/ExportingObj.hpp mixin/ExportingObj.cpp \ - mixin/LoadingObj.hpp mixin/LoadingObj.cpp \ - layer/Marker.hpp layer/Marker.cpp mixin/MeshMixin.hpp \ - mixin/RefiningAdaptivly.hpp mixin/RefiningAdaptivly.cpp \ - mixin/RefiningUniformly.hpp mixin/RefiningUniformly.cpp + Face.hpp HalfEdge.hpp FlexibleMesh.hpp Mesh.hpp Vertex.hpp \ + ../generic/GenericVector.hpp exception/DispatchIdNotSet.hpp \ + exception/NoMatchingFaceType.hpp exception/CouldNotDispatchCall.hpp \ + algorithm/HandleObj.hpp algorithm/RefineUniformly.hpp testhilbertmesh_LDADD = $(BOOST_REGEX_LIB) libhilbert-mesh.a -mesh_comparedir = . -mesh_compare_SOURCES = mesh_compare.cpp -mesh_compare_HEADERS = \ - Face.hpp HalfEdge.hpp Mesh.hpp Mesh.cpp Vertex.hpp \ - mixin/ExportingObj.hpp mixin/ExportingObj.cpp \ - mixin/LoadingObj.hpp mixin/LoadingObj.cpp \ - mixin/Comparing.hpp mixin/Comparing.cpp -mesh_compare_LDADD = $(BOOST_REGEX_LIB) libhilbert-mesh.a - diff --git a/src/bem3d/src/boundary_mesh/Makefile.in b/src/bem3d/src/boundary_mesh/Makefile.in index b38c191..9798cb5 100644 --- a/src/bem3d/src/boundary_mesh/Makefile.in +++ b/src/bem3d/src/boundary_mesh/Makefile.in @@ -34,11 +34,10 @@ POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : -bin_PROGRAMS = testhilbertmesh$(EXEEXT) mesh_compare$(EXEEXT) +bin_PROGRAMS = testhilbertmesh$(EXEEXT) subdir = src/boundary_mesh -DIST_COMMON = $(libhilbert_mesh_a_HEADERS) $(mesh_compare_HEADERS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(testhilbertmesh_HEADERS) +DIST_COMMON = $(libhilbert_mesh_a_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(testhilbertmesh_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_blas.m4 \ $(top_srcdir)/m4/ax_boost_base.m4 \ @@ -74,23 +73,22 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(libhilbert_mesh_adir)" \ - "$(DESTDIR)$(mesh_comparedir)" \ "$(DESTDIR)$(testhilbertmeshdir)" LIBRARIES = $(lib_LIBRARIES) AR = ar ARFLAGS = cru libhilbert_mesh_a_AR = $(AR) $(ARFLAGS) libhilbert_mesh_a_LIBADD = -am_libhilbert_mesh_a_OBJECTS = Face.$(OBJEXT) HalfEdge.$(OBJEXT) \ - Vertex.$(OBJEXT) GenericVector.$(OBJEXT) +am_libhilbert_mesh_a_OBJECTS = \ + libhilbert_mesh_a-CouldNotDispatchCall.$(OBJEXT) \ + libhilbert_mesh_a-DispatchIdNotSet.$(OBJEXT) \ + libhilbert_mesh_a-GenericVector.$(OBJEXT) \ + libhilbert_mesh_a-FlexibleMesh.$(OBJEXT) libhilbert_mesh_a_OBJECTS = $(am_libhilbert_mesh_a_OBJECTS) PROGRAMS = $(bin_PROGRAMS) -am_mesh_compare_OBJECTS = mesh_compare.$(OBJEXT) -mesh_compare_OBJECTS = $(am_mesh_compare_OBJECTS) -am__DEPENDENCIES_1 = -mesh_compare_DEPENDENCIES = $(am__DEPENDENCIES_1) libhilbert-mesh.a am_testhilbertmesh_OBJECTS = t.$(OBJEXT) testhilbertmesh_OBJECTS = $(am_testhilbertmesh_OBJECTS) +am__DEPENDENCIES_1 = testhilbertmesh_DEPENDENCIES = $(am__DEPENDENCIES_1) libhilbert-mesh.a DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -101,12 +99,9 @@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -SOURCES = $(libhilbert_mesh_a_SOURCES) $(mesh_compare_SOURCES) \ - $(testhilbertmesh_SOURCES) -DIST_SOURCES = $(libhilbert_mesh_a_SOURCES) $(mesh_compare_SOURCES) \ - $(testhilbertmesh_SOURCES) -HEADERS = $(libhilbert_mesh_a_HEADERS) $(mesh_compare_HEADERS) \ - $(testhilbertmesh_HEADERS) +SOURCES = $(libhilbert_mesh_a_SOURCES) $(testhilbertmesh_SOURCES) +DIST_SOURCES = $(libhilbert_mesh_a_SOURCES) $(testhilbertmesh_SOURCES) +HEADERS = $(libhilbert_mesh_a_HEADERS) $(testhilbertmesh_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -241,40 +236,36 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ lib_LIBRARIES = libhilbert-mesh.a libhilbert_mesh_adir = . -libhilbert_mesh_a_HEADERS = \ - Face.hpp Face_tmpl.cpp HalfEdge.hpp Mesh.hpp Mesh.cpp Vertex.hpp \ - ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp \ - mixin/ExportingObj.hpp mixin/ExportingObj.cpp \ - mixin/LoadingObj.hpp mixin/LoadingObj.cpp \ - layer/Marker.hpp layer/Marker.cpp mixin/MeshMixin.hpp \ - mixin/RefiningAdaptivly.hpp mixin/RefiningAdaptivly.cpp \ - mixin/RefiningUniformly.hpp mixin/RefiningUniformly.cpp - libhilbert_mesh_a_SOURCES = \ - Face.cpp HalfEdge.cpp Vertex.cpp \ - ../generic/GenericVector.cpp + exception/CouldNotDispatchCall.cpp exception/DispatchIdNotSet.cpp \ + ../generic/GenericVector.cpp FlexibleMesh.cpp +libhilbert_mesh_a_HEADERS = \ + Face.hpp Face.cpp FaceDispatch.hpp FaceDispatch_tmpl.cpp FlexibleMesh.hpp \ + FlexibleMesh_tmpl.cpp HalfEdge.hpp HalfEdge_tmpl.cpp MeshBuilder.hpp \ + MeshBuilder_tmpl.cpp Mesh.hpp Mesh.cpp types.hpp Vertex.hpp Vertex_tmpl.cpp \ + algorithm/HandleObj.hpp algorithm/HandleObj_tmpl.cpp \ + algorithm/RefineUniformly.hpp algorithm/RefineUniformly_tmpl.cpp \ + exception/CouldNotDispatchCall.hpp exception/DispatchIdNotSet.hpp \ + exception/NoMatchingFaceType.hpp exception/NoMatchingFaceType_tmpl.cpp \ + face/ConvexQuadrilateral.hpp face/ConvexQuadrilateral_tmpl.cpp \ + face/Parallelogram.hpp face/Parallelogram_tmpl.cpp \ + face/Quadrilateral.hpp face/Quadrilateral_tmpl.cpp \ + face/Triangle.hpp face/Triangle_tmpl.cpp \ + ../generic/BaseTypes.hpp ../generic/TypeList.hpp \ + ../generic/Singleton.hpp ../generic/Singleton_tmpl.cpp \ + ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp + +libhilbert_mesh_a_CPPFLAGS = $(CPPFLAGS) testhilbertmeshdir = . testhilbertmesh_SOURCES = t.cpp testhilbertmesh_HEADERS = \ - Face.hpp HalfEdge.hpp Mesh.hpp Mesh.cpp Vertex.hpp \ - ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp \ - mixin/ExportingObj.hpp mixin/ExportingObj.cpp \ - mixin/LoadingObj.hpp mixin/LoadingObj.cpp \ - layer/Marker.hpp layer/Marker.cpp mixin/MeshMixin.hpp \ - mixin/RefiningAdaptivly.hpp mixin/RefiningAdaptivly.cpp \ - mixin/RefiningUniformly.hpp mixin/RefiningUniformly.cpp + Face.hpp HalfEdge.hpp FlexibleMesh.hpp Mesh.hpp Vertex.hpp \ + ../generic/GenericVector.hpp exception/DispatchIdNotSet.hpp \ + exception/NoMatchingFaceType.hpp exception/CouldNotDispatchCall.hpp \ + algorithm/HandleObj.hpp algorithm/RefineUniformly.hpp testhilbertmesh_LDADD = $(BOOST_REGEX_LIB) libhilbert-mesh.a -mesh_comparedir = . -mesh_compare_SOURCES = mesh_compare.cpp -mesh_compare_HEADERS = \ - Face.hpp HalfEdge.hpp Mesh.hpp Mesh.cpp Vertex.hpp \ - mixin/ExportingObj.hpp mixin/ExportingObj.cpp \ - mixin/LoadingObj.hpp mixin/LoadingObj.cpp \ - mixin/Comparing.hpp mixin/Comparing.cpp - -mesh_compare_LDADD = $(BOOST_REGEX_LIB) libhilbert-mesh.a all: all-am .SUFFIXES: @@ -382,9 +373,6 @@ uninstall-binPROGRAMS: clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -mesh_compare$(EXEEXT): $(mesh_compare_OBJECTS) $(mesh_compare_DEPENDENCIES) - @rm -f mesh_compare$(EXEEXT) - $(CXXLINK) $(mesh_compare_OBJECTS) $(mesh_compare_LDADD) $(LIBS) testhilbertmesh$(EXEEXT): $(testhilbertmesh_OBJECTS) $(testhilbertmesh_DEPENDENCIES) @rm -f testhilbertmesh$(EXEEXT) $(CXXLINK) $(testhilbertmesh_OBJECTS) $(testhilbertmesh_LDADD) $(LIBS) @@ -395,11 +383,10 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Face.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GenericVector.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HalfEdge.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Vertex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mesh_compare.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhilbert_mesh_a-GenericVector.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t.Po@am__quote@ .cpp.o: @@ -416,19 +403,61 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -GenericVector.o: ../generic/GenericVector.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GenericVector.o -MD -MP -MF $(DEPDIR)/GenericVector.Tpo -c -o GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GenericVector.Tpo $(DEPDIR)/GenericVector.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../generic/GenericVector.cpp' object='GenericVector.o' libtool=no @AMDEPBACKSLASH@ +libhilbert_mesh_a-CouldNotDispatchCall.o: exception/CouldNotDispatchCall.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-CouldNotDispatchCall.o -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Tpo -c -o libhilbert_mesh_a-CouldNotDispatchCall.o `test -f 'exception/CouldNotDispatchCall.cpp' || echo '$(srcdir)/'`exception/CouldNotDispatchCall.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Tpo $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='exception/CouldNotDispatchCall.cpp' object='libhilbert_mesh_a-CouldNotDispatchCall.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-CouldNotDispatchCall.o `test -f 'exception/CouldNotDispatchCall.cpp' || echo '$(srcdir)/'`exception/CouldNotDispatchCall.cpp + +libhilbert_mesh_a-CouldNotDispatchCall.obj: exception/CouldNotDispatchCall.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-CouldNotDispatchCall.obj -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Tpo -c -o libhilbert_mesh_a-CouldNotDispatchCall.obj `if test -f 'exception/CouldNotDispatchCall.cpp'; then $(CYGPATH_W) 'exception/CouldNotDispatchCall.cpp'; else $(CYGPATH_W) '$(srcdir)/exception/CouldNotDispatchCall.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Tpo $(DEPDIR)/libhilbert_mesh_a-CouldNotDispatchCall.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='exception/CouldNotDispatchCall.cpp' object='libhilbert_mesh_a-CouldNotDispatchCall.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-CouldNotDispatchCall.obj `if test -f 'exception/CouldNotDispatchCall.cpp'; then $(CYGPATH_W) 'exception/CouldNotDispatchCall.cpp'; else $(CYGPATH_W) '$(srcdir)/exception/CouldNotDispatchCall.cpp'; fi` + +libhilbert_mesh_a-DispatchIdNotSet.o: exception/DispatchIdNotSet.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-DispatchIdNotSet.o -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Tpo -c -o libhilbert_mesh_a-DispatchIdNotSet.o `test -f 'exception/DispatchIdNotSet.cpp' || echo '$(srcdir)/'`exception/DispatchIdNotSet.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Tpo $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='exception/DispatchIdNotSet.cpp' object='libhilbert_mesh_a-DispatchIdNotSet.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-DispatchIdNotSet.o `test -f 'exception/DispatchIdNotSet.cpp' || echo '$(srcdir)/'`exception/DispatchIdNotSet.cpp + +libhilbert_mesh_a-DispatchIdNotSet.obj: exception/DispatchIdNotSet.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-DispatchIdNotSet.obj -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Tpo -c -o libhilbert_mesh_a-DispatchIdNotSet.obj `if test -f 'exception/DispatchIdNotSet.cpp'; then $(CYGPATH_W) 'exception/DispatchIdNotSet.cpp'; else $(CYGPATH_W) '$(srcdir)/exception/DispatchIdNotSet.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Tpo $(DEPDIR)/libhilbert_mesh_a-DispatchIdNotSet.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='exception/DispatchIdNotSet.cpp' object='libhilbert_mesh_a-DispatchIdNotSet.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-DispatchIdNotSet.obj `if test -f 'exception/DispatchIdNotSet.cpp'; then $(CYGPATH_W) 'exception/DispatchIdNotSet.cpp'; else $(CYGPATH_W) '$(srcdir)/exception/DispatchIdNotSet.cpp'; fi` + +libhilbert_mesh_a-GenericVector.o: ../generic/GenericVector.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-GenericVector.o -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-GenericVector.Tpo -c -o libhilbert_mesh_a-GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libhilbert_mesh_a-GenericVector.Tpo $(DEPDIR)/libhilbert_mesh_a-GenericVector.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../generic/GenericVector.cpp' object='libhilbert_mesh_a-GenericVector.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp + +libhilbert_mesh_a-GenericVector.obj: ../generic/GenericVector.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-GenericVector.obj -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-GenericVector.Tpo -c -o libhilbert_mesh_a-GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libhilbert_mesh_a-GenericVector.Tpo $(DEPDIR)/libhilbert_mesh_a-GenericVector.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../generic/GenericVector.cpp' object='libhilbert_mesh_a-GenericVector.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` -GenericVector.obj: ../generic/GenericVector.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GenericVector.obj -MD -MP -MF $(DEPDIR)/GenericVector.Tpo -c -o GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GenericVector.Tpo $(DEPDIR)/GenericVector.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../generic/GenericVector.cpp' object='GenericVector.obj' libtool=no @AMDEPBACKSLASH@ +libhilbert_mesh_a-FlexibleMesh.o: FlexibleMesh.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-FlexibleMesh.o -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Tpo -c -o libhilbert_mesh_a-FlexibleMesh.o `test -f 'FlexibleMesh.cpp' || echo '$(srcdir)/'`FlexibleMesh.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Tpo $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FlexibleMesh.cpp' object='libhilbert_mesh_a-FlexibleMesh.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-FlexibleMesh.o `test -f 'FlexibleMesh.cpp' || echo '$(srcdir)/'`FlexibleMesh.cpp + +libhilbert_mesh_a-FlexibleMesh.obj: FlexibleMesh.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhilbert_mesh_a-FlexibleMesh.obj -MD -MP -MF $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Tpo -c -o libhilbert_mesh_a-FlexibleMesh.obj `if test -f 'FlexibleMesh.cpp'; then $(CYGPATH_W) 'FlexibleMesh.cpp'; else $(CYGPATH_W) '$(srcdir)/FlexibleMesh.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Tpo $(DEPDIR)/libhilbert_mesh_a-FlexibleMesh.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FlexibleMesh.cpp' object='libhilbert_mesh_a-FlexibleMesh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhilbert_mesh_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhilbert_mesh_a-FlexibleMesh.obj `if test -f 'FlexibleMesh.cpp'; then $(CYGPATH_W) 'FlexibleMesh.cpp'; else $(CYGPATH_W) '$(srcdir)/FlexibleMesh.cpp'; fi` install-libhilbert_mesh_aHEADERS: $(libhilbert_mesh_a_HEADERS) @$(NORMAL_INSTALL) test -z "$(libhilbert_mesh_adir)" || $(MKDIR_P) "$(DESTDIR)$(libhilbert_mesh_adir)" @@ -449,26 +478,6 @@ uninstall-libhilbert_mesh_aHEADERS: test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libhilbert_mesh_adir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libhilbert_mesh_adir)" && rm -f $$files -install-mesh_compareHEADERS: $(mesh_compare_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(mesh_comparedir)" || $(MKDIR_P) "$(DESTDIR)$(mesh_comparedir)" - @list='$(mesh_compare_HEADERS)'; test -n "$(mesh_comparedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(mesh_comparedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(mesh_comparedir)" || exit $$?; \ - done - -uninstall-mesh_compareHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(mesh_compare_HEADERS)'; test -n "$(mesh_comparedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(mesh_comparedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(mesh_comparedir)" && rm -f $$files install-testhilbertmeshHEADERS: $(testhilbertmesh_HEADERS) @$(NORMAL_INSTALL) test -z "$(testhilbertmeshdir)" || $(MKDIR_P) "$(DESTDIR)$(testhilbertmeshdir)" @@ -576,7 +585,7 @@ check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libhilbert_mesh_adir)" "$(DESTDIR)$(mesh_comparedir)" "$(DESTDIR)$(testhilbertmeshdir)"; do \ + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libhilbert_mesh_adir)" "$(DESTDIR)$(testhilbertmeshdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -628,7 +637,7 @@ info: info-am info-am: install-data-am: install-libhilbert_mesh_aHEADERS \ - install-mesh_compareHEADERS install-testhilbertmeshHEADERS + install-testhilbertmeshHEADERS install-dvi: install-dvi-am @@ -675,7 +684,7 @@ ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-libLIBRARIES \ uninstall-libhilbert_mesh_aHEADERS \ - uninstall-mesh_compareHEADERS uninstall-testhilbertmeshHEADERS + uninstall-testhilbertmeshHEADERS .MAKE: install-am install-strip @@ -687,14 +696,14 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libLIBRARIES \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLIBRARIES install-libhilbert_mesh_aHEADERS \ - install-man install-mesh_compareHEADERS install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - install-testhilbertmeshHEADERS installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ - ps ps-am tags uninstall uninstall-am uninstall-binPROGRAMS \ - uninstall-libLIBRARIES uninstall-libhilbert_mesh_aHEADERS \ - uninstall-mesh_compareHEADERS uninstall-testhilbertmeshHEADERS + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip install-testhilbertmeshHEADERS \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-libLIBRARIES \ + uninstall-libhilbert_mesh_aHEADERS \ + uninstall-testhilbertmeshHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/src/bem3d/src/boundary_mesh/Marker.hpp b/src/bem3d/src/boundary_mesh/Marker.hpp new file mode 100644 index 0000000..67fd4a1 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/Marker.hpp @@ -0,0 +1,8 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_MARKER_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_MARKER_HPP_GUARD_ + +#include "Marker_fwd.hpp" +#include "Marker_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/Marker_fwd.hpp b/src/bem3d/src/boundary_mesh/Marker_fwd.hpp new file mode 100644 index 0000000..6be62d2 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/Marker_fwd.hpp @@ -0,0 +1,144 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_MARKER_FWD_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_MARKER_FWD_HPP_GUARD_ + +#include + +namespace boundary_mesh +{ + /** + * The Marker class contains state information about a specific Mesh instance. + * It stores whether a certain edge is marked with respect to a certain face. + * This class was written for and is extensivly used within the adaptive + * refinement algorithms. There, we also provide functions to build the + * closure of a marking with respect to certain shape regularity constraints. + * + * In order to follow our design principle of objects being "immutable after + * construction", we provide the MarkerBuilder class which exposes methods + * to build or instantize a Marker instance step by step. + */ + template < class TMesh > + class Marker + { + template friend class MarkerBuilder; // MK changed this: XXX: why do i have to write typename, and not class TMesh? + + public: + /** + * @param face This is a face, which is contained within the Mesh + * instance this Marker instance was created for. + * @param edge This is a half-edge, which is contained within the Mesh + * instance this Marker instance was created for. + * + * TODO: Error handling? At the moment: + * The method fails and terminates the program if either face or edge + * are not within the Mesh instance, this Marker instance was created for, + * if compiled wihtout the NDEBUG flag. Otherwise, behaviour is undefined. + * + * @returns Whether the given half-edge is marked with respect to the + * given face. + */ + bool isMarked( const typename TMesh::Face& face, + const typename TMesh::HalfEdge& edge) const; + + private: + const TMesh& mesh_; + std::vector< bool > marked_; + + /** + * @param mesh + * + * Creates and initializes a Marker instance which has enough space to + * mark any number of edges. + */ + Marker( const TMesh& mesh ); + + /** + * @param marker + * + * Creates a copy of the given Marker instance. + */ + Marker( const Marker& marker ); + + /** + * @param face This is a face, which is contained within the Mesh + * instance this Marker instance was created for. + * @param edge This is a half-edge, which is contained within the Mesh + * instance this Marker instance was created for. + * + * TODO: Error handling? At the moment: + * The method fails and terminates the program if either face or edge + * are not within the Mesh instance, this Marker instance was created for, + * if compiled wihtout the NDEBUG flag. Otherwise, behaviour is undefined. + * + * This method marks the given edge with respect to the given face. + * Subsequent class to the method isMarked with the same face and the same + * edge will return true. + */ + void mark( const typename TMesh::Face& face, + const typename TMesh::HalfEdge& edge); + + /** + * @param face This is a face, which is contained within the Mesh + * instance this Marker instance was created for. + * @param edge This is a half-edge, which is contained within the Mesh + * instance this Marker instance was created for. + * + * TODO: Error handling? At the moment: + * The method fails and terminates the program if either face or edge + * are not within the Mesh instance, this Marker instance was created for, + * if compiled wihtout the NDEBUG flag. Otherwise, behaviour is undefined. + * + * @returns The index of the given face/edge combination with respect to + * the boolean vector, the marker flags are stored within. + */ + geoid_t getIndex( const typename TMesh::Face& face, + const typename TMesh::HalfEdge& edge) const; + }; + + /** + * TODO: Write documentation for MarkerBuilder class. + */ + template < class TMesh > + class MarkerBuilder + { + public: + /** + * @param mesh + * + * Creates a new MeshBuilder instance with respect to the given Mesh + * instance. + */ + MarkerBuilder( const TMesh& mesh ); + + /** + * @param marker + * + * Create a new MeshBuilder instance with respect to the same Mesh + * instance the given Marker instance refers to. Also marks all the + * face/edge combinations, which are marked within the given Marker + * instance. + */ + MarkerBuilder( const Marker< TMesh >& marker ); + + /** + * @param face This is a face, which is contained within the Mesh + * instance this Marker instance was created for. + * @param edge This is a half-edge, which is contained within the Mesh + * instance this Marker instance was created for. + * + * Marks the given face/edge combination within the Marker instance. + */ + void mark( const typename TMesh::Face& face, + const typename TMesh::HalfEdge& edge ); + + /** + * @returns Delivers the Marker instance that is built by this class. + */ + Marker< TMesh > deliver(); + + private: + Marker< TMesh > marker_; + }; +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/Marker_tmpl.cpp b/src/bem3d/src/boundary_mesh/Marker_tmpl.cpp new file mode 100644 index 0000000..c7e6efc --- /dev/null +++ b/src/bem3d/src/boundary_mesh/Marker_tmpl.cpp @@ -0,0 +1,72 @@ +#include "Marker_fwd.hpp" +#include + +namespace boundary_mesh +{ + template < class TMesh > + bool + Marker< TMesh >::isMarked( const typename TMesh::Face& face, + const typename TMesh::HalfEdge& edge ) const + { + geoid_t idx = getIndex( face, edge ); + assert( idx < marked_.size() ); + return marked_[ idx ]; + } + + template < class TMesh > + Marker< TMesh >::Marker( const TMesh& mesh ) + : mesh_(mesh), + marked_(std::vector< bool >( mesh.getNumberOfFaces() * + TMesh::Prop::maximumNumberOfEdgesPerFace, false )) + {} + + template < class TMesh > + Marker< TMesh >::Marker( const Marker& marker ) + : mesh_(marker.mesh_), marked_(marker.marked_) + {} + + template < class TMesh > + void + Marker< TMesh >::mark( const typename TMesh::Face& face, + const typename TMesh::HalfEdge& edge ) + { + geoid_t idx = getIndex( face, edge ); + assert( idx < marked_.size() ); + marked_[ idx ] = true; + } + + template < class TMesh > + geoid_t + Marker< TMesh >::getIndex( const typename TMesh::Face& face, + const typename TMesh::HalfEdge& edge ) const + { + return TMesh::Prop::maximumNumberOfEdgesPerFace * mesh_.getFaceId( face ) + + face.getLocalEdgeId( edge ); + } + + template < class TMesh > + MarkerBuilder< TMesh >::MarkerBuilder( const TMesh& mesh ) + : marker_( Marker< TMesh >(mesh) ) + {} + + template < class TMesh > + MarkerBuilder< TMesh >::MarkerBuilder( const Marker< TMesh >& marker ) + : marker_( marker ) + {} + + template < class TMesh > + void + MarkerBuilder< TMesh >::mark( const typename TMesh::Face& face, + const typename TMesh::HalfEdge& edge ) + { + marker_.mark( face, edge ); + } + + template < class TMesh > + Marker< TMesh > + MarkerBuilder< TMesh >::deliver() + { + return marker_; + } +} + diff --git a/src/bem3d/src/boundary_mesh/Mesh.cpp b/src/bem3d/src/boundary_mesh/Mesh.cpp index 136cfad..4baa438 100644 --- a/src/bem3d/src/boundary_mesh/Mesh.cpp +++ b/src/bem3d/src/boundary_mesh/Mesh.cpp @@ -5,54 +5,66 @@ #include "Mesh.hpp" -#include "Face.hpp" -#include "HalfEdge.hpp" -#include "Vertex.hpp" - #include #include #include #include #include +#include "exception/NoMatchingFaceType_tmpl.hpp" + namespace boundary_mesh { -template < class Ttraits > -struct Mesh< Ttraits >::data +template < template < typename > class TProp, template < typename > class TAlg > +struct Mesh< TProp, TAlg >::data { data() - : number_of_faces(0), number_of_vertices(0), number_of_halfedges(0), + : numberOfFaces(0), numberOfVertices(0), numberOfHalfEdges(0), reference_counter(1) {} + ~data() + { + if ( boost::is_pointer< typename Mesh::IntFace >() ) + { + for (typename std::vector< typename Mesh::IntFace >::iterator + it = face.begin(); it != face.end(); ++it) + { + delete *it; + } + } + } - typename std::vector< typename traits::Vertex > vertex; - typename std::vector< typename traits::Face > face; - typename std::vector< typename traits::HalfEdge > edge; + typename std::vector< typename Mesh::Vertex > vertex; + typename std::vector< typename Mesh::IntFace > face; + typename std::vector< typename Mesh::HalfEdge > edge; - unsigned int number_of_faces; - unsigned int number_of_vertices; - unsigned int number_of_halfedges; + unsigned int numberOfFaces; + unsigned int numberOfVertices; + unsigned int numberOfHalfEdges; unsigned int reference_counter; }; -template < class Ttraits > -Mesh< Ttraits >::Mesh(const Mesh< Ttraits >& copy) +template < template < typename > class TProp, template < typename > class TAlg > +bool Mesh< TProp, TAlg >::initialized_ = false; + +template < template < typename > class TProp, template < typename > class TAlg > +Mesh< TProp, TAlg >::Mesh(const Mesh< TProp, TAlg >& copy) : d(copy.d) { ++(d->reference_counter); } -template < class Ttraits > -Mesh< Ttraits >::~Mesh() +template < template < typename > class TProp, template < typename > class TAlg > +Mesh< TProp, TAlg >::~Mesh() { if (--(d->reference_counter) <= 0) delete d; } -template < class Ttraits > -Mesh< Ttraits >& -Mesh< Ttraits >::operator=(const Mesh& rhs) +template < template < typename > class TProp, template < typename > class TAlg > +Mesh< TProp, TAlg >& +Mesh< TProp, TAlg >::operator=(const Mesh& rhs) { if (d == rhs.d) return *this; @@ -65,142 +77,233 @@ Mesh< Ttraits >::operator=(const Mesh& rhs) return *this; } -template < class Ttraits > -typename Mesh< Ttraits >::ConstFaceIterator -Mesh< Ttraits >::begin_f() const +template < template < typename > class TProp, template < typename > class TAlg > +typename Mesh< TProp, TAlg >::ConstFaceIterator +Mesh< TProp, TAlg >::begin_f() const { - return d->face.begin(); + return ConstFaceIterator( d->face.begin() ); } -template < class Ttraits > -typename Mesh< Ttraits >::ConstFaceIterator -Mesh< Ttraits >::end_f() const +template < template < typename > class TProp, template < typename > class TAlg > +typename Mesh< TProp, TAlg >::ConstFaceIterator +Mesh< TProp, TAlg >::end_f() const { - return d->face.end(); + return ConstFaceIterator( d->face.end() ); } -template < class Ttraits > -typename Mesh< Ttraits >::ConstVertexIterator -Mesh< Ttraits >::begin_v() const +template < template < typename > class TProp, template < typename > class TAlg > +typename Mesh< TProp, TAlg >::ConstVertexIterator +Mesh< TProp, TAlg >::begin_v() const { return d->vertex.begin(); } -template < class Ttraits > -typename Mesh< Ttraits >::ConstVertexIterator -Mesh< Ttraits >::end_v() const +template < template < typename > class TProp, template < typename > class TAlg > +typename Mesh< TProp, TAlg >::ConstVertexIterator +Mesh< TProp, TAlg >::end_v() const { return d->vertex.end(); } -template < class Ttraits > +template < template < typename > class TProp, template < typename > class TAlg > unsigned int -Mesh< Ttraits >::getNumberOfFaces() const +Mesh< TProp, TAlg >::getNumberOfFaces() const { - return d->number_of_faces; + return d->numberOfFaces; } -template < class Ttraits > +template < template < typename > class TProp, template < typename > class TAlg > unsigned int -Mesh< Ttraits >::getNumberOfEdges() const +Mesh< TProp, TAlg >::getNumberOfEdges() const { - return d->number_of_halfedges; + return d->numberOfHalfEdges; } -template < class Ttraits > +template < template < typename > class TProp, template < typename > class TAlg > unsigned int -Mesh< Ttraits >::getNumberOfVertices() const +Mesh< TProp, TAlg >::getNumberOfVertices() const { - return d->number_of_vertices; + return d->numberOfVertices; } -template < class Ttraits > -Mesh< Ttraits >::Mesh( const Mesh< Ttraits >::Size& sizeInfo ) - : d(new Mesh< Ttraits >::data()) +template < template < typename > class TProp, template < typename > class TAlg > +Mesh< TProp, TAlg >::Mesh( const Size& sizeInfo ) + : d(new Mesh< TProp, TAlg >::data()) { - reserve( sizeInfo ); + initialize(); + d->vertex.reserve( sizeInfo.vertices ); + d->face.reserve( sizeInfo.faces ); + d->edge.reserve( sizeInfo.edges ); } -template < class Ttraits > -Mesh< Ttraits >::Mesh() - : d(new Mesh< Ttraits >::data()) -{} - -template < class Ttraits > -void -Mesh< Ttraits >::reserve(const Mesh< Ttraits >::Size& sizeInfo) -{ - d->vertex.reserve(sizeInfo.vertices); - d->face.reserve(sizeInfo.faces); - d->edge.reserve(sizeInfo.edges); -} - -template < class Ttraits > +template < template < typename > class TProp, template < typename > class TAlg > unsigned int -Mesh< Ttraits >::addVertex(const typename Ttraits::UnlinkedVertex& v) +Mesh< TProp, TAlg >::addVertex(const typename Mesh::UVertex& v) { - assert(d->vertex.capacity() > d->number_of_vertices); + assert(d->vertex.capacity() > d->numberOfVertices); d->vertex.push_back(Vertex(v)); - return d->number_of_vertices++; + return d->numberOfVertices++; } -template < class Ttraits > -const typename Ttraits::Face& -Mesh< Ttraits >::addFace(unsigned int number_of_vertices, - unsigned int vertex_id[]) +template < template < typename > class TProp, template < typename > class TAlg > +const typename Mesh< TProp, TAlg >::Face& +Mesh< TProp, TAlg >::addFace( std::vector< geoid_t > vertexIds ) { - unsigned int NUMOF_VERTICES = number_of_vertices; - assert(NUMOF_VERTICES > 2); - unsigned int max_length_id = 0; - double max_length = 0.; - d->face.push_back(typename traits::Face()); - typename Ttraits::Face& f = d->face[d->number_of_faces]; - - for (unsigned int i = 0; i < NUMOF_VERTICES; ++i) + unsigned int numberOfVertices = vertexIds.size(); + assert( numberOfVertices >= 3 ); + std::vector< const typename Mesh::Vertex* > vertices; + vertices.reserve( vertexIds.size() ); + + // Create all half-edges and store them within the d->edge vector. + // Also determine the longest half-edge and assign a half-edge to each vertex. + Mesh::HalfEdge* longestHalfEdge = 0; + double longestHalfEdgeLength = 0.; + + for (unsigned int i = 0; i < numberOfVertices; ++i) { - typename Ttraits::UnlinkedVertex diff = - (d->vertex[vertex_id[(i+1) % NUMOF_VERTICES]] - d->vertex[vertex_id[i]]); - double length = diff.norm(); - if (length > max_length) + typename Mesh::Vertex& startVertex = d->vertex[ vertexIds[ i ] ]; + typename Mesh::Vertex& endVertex = + d->vertex[ vertexIds[ (i+1) % numberOfVertices ] ]; + vertices.push_back( &startVertex ); + + d->edge.push_back( Mesh::HalfEdge( startVertex, endVertex ) ); + typename Mesh::HalfEdge& currentHalfEdge = d->edge.back(); + double currentHalfEdgeLength = + (currentHalfEdge.getEndVertex() - + currentHalfEdge.getStartVertex()).norm(); + + if ( currentHalfEdgeLength >= longestHalfEdgeLength ) { - max_length = length; - max_length_id = i; + longestHalfEdgeLength = currentHalfEdgeLength; + longestHalfEdge = ¤tHalfEdge; } - assert(d->edge.capacity() > d->number_of_halfedges+i); - d->edge.push_back(HalfEdge(d->vertex[vertex_id[i]], - d->vertex[vertex_id[(i+1) % NUMOF_VERTICES]], f)); - d->vertex[vertex_id[i]].setHalfEdge(d->edge[d->number_of_halfedges]); + + startVertex.setHalfEdge( currentHalfEdge ); } - for (unsigned int i = 0; i < NUMOF_VERTICES; ++i) + assert(longestHalfEdge != 0); + + // Link the half-edges into a double-linked list. + for (unsigned int i = 0; i < numberOfVertices; ++i) { - d->edge[d->number_of_halfedges+i].setPreviousEdge( - &(d->edge[d->number_of_halfedges+((i-1) % NUMOF_VERTICES)])); - d->edge[d->number_of_halfedges+i].setNextEdge( - &(d->edge[d->number_of_halfedges+((i+1) % NUMOF_VERTICES)])); + d->edge[ d->numberOfHalfEdges + i ].setPreviousEdge( + &( d->edge[ d->numberOfHalfEdges + ((i-1) % numberOfVertices) ] )); + d->edge[ d->numberOfHalfEdges + i ].setNextEdge( + &( d->edge[ d->numberOfHalfEdges + ((i+1) % numberOfVertices) ] )); } - f.setHalfEdge(d->edge[d->number_of_halfedges + max_length_id]); - assert(d->face.capacity() > d->number_of_faces); + d->numberOfHalfEdges += numberOfVertices; + + // Create the face by using the mesh's face-factory which does the + // type checking magic. + // The reference edge of the face is set to the longest half-edge: + typename Mesh< TProp, TAlg >::Face& currentFace = + Mesh< TProp, TAlg >::factorizeFace< Mesh< TProp, TAlg >::FaceTypes >( + vertices, longestHalfEdge ); - d->number_of_faces += 1; - d->number_of_halfedges += NUMOF_VERTICES; + // Modify the counters for the number of faces and half-edges: + return currentFace; +} + +template < template < typename > class TProp, template < typename > class TAlg > +template < class TypeList > +typename boost::enable_if_c< + generic::typelist::Length< TypeList >::value == 0, + typename Mesh< TProp, TAlg >::Face& >::type +Mesh< TProp, TAlg >::factorizeFace( + const typename std::vector< const typename Mesh::Vertex* >& vertices, + const typename Mesh::HalfEdge* longestHalfEdge) +{ + throw exception::NoMatchingFaceType< Mesh >( + "Could not find a matching face type.", vertices); +} + +template < template < typename > class TProp, template < typename > class TAlg > +template < class TypeList > +typename boost::enable_if_c< + generic::typelist::Length< TypeList >::value >= 1, + typename Mesh< TProp, TAlg >::Face& >::type +Mesh< TProp, TAlg >::factorizeFace( + const typename std::vector< const typename Mesh::Vertex* >& vertices, + const typename Mesh::HalfEdge* longestHalfEdge) +{ + typedef typename TypeList::Head Head; + typedef typename TypeList::Tail Tail; + if ( Head::is( vertices ) == true ) + { + return factorizeFace_< Mesh< TProp, TAlg >, Head >(longestHalfEdge); + } + else + { + return factorizeFace< Tail >(vertices, longestHalfEdge); + } +} + +template < template < typename > class TProp, template < typename > class TAlg > +template < class TMesh, class TSpecificFace > +typename boost::enable_if< + boost::is_pointer< typename TMesh::IntFace >, + typename TMesh::Face& >::type +Mesh< TProp, TAlg >::factorizeFace_( + const typename TMesh::HalfEdge* longestHalfEdge) +{ + d->face.push_back(new TSpecificFace( *longestHalfEdge, d->numberOfFaces )); + typename TMesh::Face& f = getFaceRefById< TMesh >( d->numberOfFaces ); + ++(d->numberOfFaces); return f; } -template < class Ttraits > +template < template < typename > class TProp, template < typename > class TAlg > +template < class TMesh, class TSpecificFace > +typename boost::disable_if< + boost::is_pointer< typename TMesh::IntFace >, + typename TMesh::Face& >::type +Mesh< TProp, TAlg >::factorizeFace_( + const typename TMesh::HalfEdge* longestHalfEdge) +{ + d->face.push_back(TSpecificFace( *longestHalfEdge )); + typename TMesh::Face& f = getFaceRefById< TMesh >( d->numberOfFaces ); + ++(d->numberOfFaces); + return f; +} + +template < template < typename > class TProp, template < typename > class TAlg > +template < class TMesh > +typename boost::enable_if< + boost::is_pointer< typename TMesh::IntFace >, + typename TMesh::Face& >::type +Mesh< TProp, TAlg >::getFaceRefById( geoid_t faceId ) + const +{ + assert( faceId < d->face.size() ); + return *(d->face[faceId]); +} + +template < template < typename > class TProp, template < typename > class TAlg > +template < class TMesh > +typename boost::disable_if< + boost::is_pointer< typename TMesh::IntFace >, + typename TMesh::Face& >::type +Mesh< TProp, TAlg >::getFaceRefById( geoid_t faceId ) + const +{ + assert( faceId < d->face.size() ); + return d->face[faceId]; +} + +template < template < typename > class TProp, template < typename > class TAlg > void -Mesh< Ttraits >::build_meta_data() +Mesh< TProp, TAlg >::buildMetaData( void ) { - typedef typename std::set< typename Ttraits::HalfEdge*, - bool(*)(const typename Ttraits::HalfEdge*, - const typename Ttraits::HalfEdge*) > + typedef typename std::set< typename Mesh::HalfEdge*, + bool(*)(const typename Mesh::HalfEdge*, + const typename Mesh::HalfEdge*) > custom_set; - custom_set minmax_sorted(&halfedge_p_comparator_lt_minmax_vertex); + custom_set minmax_sorted(&Mesh::HalfEdge::compLtMinmaxVertex); - for (typename std::vector< typename Ttraits::HalfEdge >::iterator + for (typename std::vector< typename Mesh::HalfEdge >::iterator edge_it = d->edge.begin(); edge_it != d->edge.end(); ++edge_it) { @@ -210,11 +313,11 @@ Mesh< Ttraits >::build_meta_data() typename custom_set::iterator edge_it = minmax_sorted.begin(); while (edge_it != minmax_sorted.end()) { - typename Ttraits::HalfEdge* current = *edge_it; + typename Mesh::HalfEdge* current = *edge_it; ++edge_it; if (edge_it == minmax_sorted.end()) break; - typename Ttraits::HalfEdge* next = *edge_it; + typename Mesh::HalfEdge* next = *edge_it; if (current->oppositeEdgeCheck(*next)) { @@ -226,7 +329,7 @@ Mesh< Ttraits >::build_meta_data() minmax_sorted.clear(); - if (traits::maximumNumberOfHangingNodes <= 0) + if (Mesh::Prop::maximumNumberOfHangingNodes <= 0) return; // Now we have built all neighbour relationships except for the ones that @@ -242,19 +345,19 @@ Mesh< Ttraits >::build_meta_data() // 4.) Clean up. // Build incidence list: - std::vector< std::list< typename Ttraits::HalfEdge* > > incidenceList; + std::vector< std::list< typename Mesh::HalfEdge* > > incidenceList; incidenceList.resize( getNumberOfVertices() ); - for (std::vector::iterator edge_it = d->edge.begin(); - edge_it != d->edge.end(); ++edge_it) + for (typename std::vector< typename Mesh::HalfEdge >::iterator + edgeIt = d->edge.begin(); edgeIt != d->edge.end(); ++edgeIt) { - incidenceList[ getVertexId(edge_it->getStartVertex()) ] - .push_back(&(*edge_it)); + incidenceList[ getVertexId(edgeIt->getStartVertex()) ] + .push_back(&(*edgeIt)); } // Link: - for (std::vector::iterator edge_it = d->edge.begin(); - edge_it != d->edge.end(); ++edge_it) + for (typename std::vector< typename Mesh::HalfEdge >::iterator + edge_it = d->edge.begin(); edge_it != d->edge.end(); ++edge_it) { if (edge_it->getOppositeEdge() != 0) continue; @@ -264,18 +367,19 @@ Mesh< Ttraits >::build_meta_data() // 2.) It starts or ends at a hanging node. // In the second case, the difference vectors of both edges are linearly // dependent. - typename Ttraits::UnlinkedVertex edge_vec = + typename Mesh::UVertex edge_vec = edge_it->getEndVertex() - edge_it->getStartVertex(); std::list< HalfEdge* > vert_inc_list = incidenceList[ getVertexId(edge_it->getEndVertex()) ]; - for (std::list< HalfEdge* >::iterator inc_edge = vert_inc_list.begin(); - inc_edge != vert_inc_list.end(); ++inc_edge) + for ( typename std::list< typename Mesh::HalfEdge* >::iterator + inc_edge = vert_inc_list.begin(); inc_edge != vert_inc_list.end(); + ++inc_edge) { if ((*inc_edge)->getOppositeEdge() != 0) continue; - typename Ttraits::UnlinkedVertex inc_edge_vec + typename Mesh::UVertex inc_edge_vec = (*inc_edge)->getEndVertex() - (*inc_edge)->getStartVertex(); if (edge_vec.isProlongation(inc_edge_vec)) @@ -287,38 +391,38 @@ Mesh< Ttraits >::build_meta_data() } // Third phase: - for (typename std::vector::iterator + for (typename std::vector::iterator edgeIt = d->edge.begin(); edgeIt != d->edge.end(); ++edgeIt) { if (edgeIt->getOppositeEdge() != 0 || edgeIt->getHangingEdge() != 0) continue; - const typename Ttraits::Vertex& startVertex = edgeIt->getStartVertex(); - const typename Ttraits::Vertex& endVertex = edgeIt->getEndVertex(); - const typename Ttraits::UnlinkedVertex edgeDiff = endVertex - startVertex; + const typename Mesh::Vertex& startVertex = edgeIt->getStartVertex(); + const typename Mesh::Vertex& endVertex = edgeIt->getEndVertex(); + const typename Mesh::UVertex edgeDiff = endVertex - startVertex; bool foundOppositeEdge = false; // Find appropiate candidates for opposite edges: - for (typename std::list< typename Ttraits::HalfEdge* >::iterator opEdgeIt = + for (typename std::list< typename Mesh::HalfEdge* >::iterator opEdgeIt = incidenceList[ getVertexId( endVertex ) ].begin(); opEdgeIt != incidenceList[ getVertexId( endVertex ) ].end(); ++opEdgeIt) { - const typename Ttraits::Vertex& opStartVertex = + const typename Mesh::Vertex& opStartVertex = (*opEdgeIt)->getStartVertex(); - const typename Ttraits::UnlinkedVertex opEdgeDiff = + const typename Mesh::UVertex opEdgeDiff = opStartVertex - (*opEdgeIt)->getEndVertex(); if ( opEdgeDiff.isProlongation( edgeDiff ) == false ) continue; unsigned int hangingEdgeIterations = 0; - typename Ttraits::HalfEdge* first = *opEdgeIt; - typename Ttraits::HalfEdge* next = first; + typename Mesh::HalfEdge* first = *opEdgeIt; + typename Mesh::HalfEdge* next = first; while (next->getHangingEdge() != 0 && - ++hangingEdgeIterations <= traits::maximumNumberOfHangingNodes) + ++hangingEdgeIterations <= Mesh::Prop::maximumNumberOfHangingNodes) { next = next->getHangingEdge(); const Vertex& opEndVertex = next->getEndVertex(); @@ -341,33 +445,97 @@ Mesh< Ttraits >::build_meta_data() // Cleanup: } -template < class Ttraits > +template < template < typename > class TProp, template < typename > class TAlg > unsigned int -Mesh< Ttraits >::getVertexId(const typename Ttraits::Vertex& v) const +Mesh< TProp, TAlg >::getVertexId(const typename Mesh::Vertex& v) const { + assert( d->edge.size() > 0 ); long offset = static_cast(&v - &(d->vertex.front())); - assert(offset >= 0 && offset < d->number_of_vertices); + assert(offset >= 0 && offset < d->numberOfVertices); return offset; } -template < class Ttraits > +template < template < typename > class TProp, template < typename > class TAlg > unsigned int -Mesh< Ttraits >::getEdgeId(const typename Ttraits::HalfEdge& e) const +Mesh< TProp, TAlg >::getEdgeId(const typename Mesh::HalfEdge& e) const { + assert( d->edge.size() > 0 ); long offset = static_cast(&e - &(d->edge.front())); - assert(offset >= 0 && offset < d->number_of_halfedges); + assert(offset >= 0 && offset < d->numberOfHalfEdges); return offset; } -template < class Ttraits > +template < template < typename > class TProp, template < typename > class TAlg > unsigned int -Mesh< Ttraits >::getFaceId(const typename Ttraits::Face& f) const +Mesh< TProp, TAlg >::getFaceId(const typename Mesh::Face& f) const { - assert( d->face.size() > 0 ); - long offset = static_cast(&f - &(d->face.front())); - assert(offset >= 0 && offset < d->number_of_halfedges); - return offset; + return f.getId(); } + + +template < template < typename > class TProp, template < typename > class TAlg > +Mesh< TProp, TAlg >::ConstFaceIterator::ConstFaceIterator( + typename std::vector< Mesh::IntFace >::const_iterator iterator) + : vectorIterator_(iterator) +{} + + +template < template < typename > class TProp, template < typename > class TAlg > +Mesh< TProp, TAlg >::ConstFaceIterator::ConstFaceIterator( + const ConstFaceIterator& copy) + : vectorIterator_( copy.vectorIterator_ ) +{} + + +template < template < typename > class TProp, template < typename > class TAlg > +bool +Mesh< TProp, TAlg >::ConstFaceIterator::operator==( + const ConstFaceIterator& rhs) const +{ + return ( vectorIterator_ == rhs.vectorIterator_ ); +} + +template < template < typename > class TProp, template < typename > class TAlg > +bool +Mesh< TProp, TAlg >::ConstFaceIterator::operator!=( + const ConstFaceIterator& rhs) const +{ + return ( vectorIterator_ != rhs.vectorIterator_ ); +} + +template < template < typename > class TProp, template < typename > class TAlg > +typename Mesh< TProp, TAlg >::ConstFaceIterator& +Mesh< TProp, TAlg >::ConstFaceIterator::operator++() +{ + ++vectorIterator_; + return *this; +} + +template < template < typename > class TProp, template < typename > class TAlg > +const typename Mesh< TProp, TAlg >::Face& +Mesh< TProp, TAlg >::ConstFaceIterator::operator*() const +{ + // XXX: The case that IntFace is not a pointer is missing: + return **vectorIterator_; +} + +template < template < typename > class TProp, template < typename > class TAlg > +const typename Mesh< TProp, TAlg >::Face* +Mesh< TProp, TAlg >::ConstFaceIterator::operator->() const +{ + // XXX: The case that IntFace is not a pointer is missing: + return *vectorIterator_; +} + +template < template < typename > class TProp, template < typename > class TAlg > +void Mesh< TProp, TAlg >::initialize() +{ + if ( initialized_ == false ) + { + initialized_ = true; + } +} + } #endif diff --git a/src/bem3d/src/boundary_mesh/Mesh.hpp b/src/bem3d/src/boundary_mesh/Mesh.hpp index 4bfab9d..dad7d6d 100644 --- a/src/bem3d/src/boundary_mesh/Mesh.hpp +++ b/src/bem3d/src/boundary_mesh/Mesh.hpp @@ -45,45 +45,26 @@ * The constants help the implementation of the algorithms to use optimized * data structures. * - * A good example for a traits class is the DefaultMeshTraits class within - * this file. - * - * The Traits template parameter defaults to the DefaultMeshTraits class. + * Using XXX */ #include #include #include -#include "Face.hpp" -#include "Vertex.hpp" -#include "HalfEdge.hpp" +#include "types.hpp" +#include "MeshBuilder.hpp" +#include "../generic/BaseTypes.hpp" +#include "../generic/TypeList.hpp" + +#include +#include +#include namespace boundary_mesh { - /** - * @class DefaultMeshTraits - * @brief Basic settings for the mesh. - * - * This is an example for a Traits class that is passed to the Mesh class - * template to create a concrete Mesh class. It defines a few types, more - * precisly a Face, a HalfEdge, a Vertex and an UnlinkedVertex type. Each - * of these types must provide a number of basic methods to make use of the - * mesh algorithms that are contained within the layer namespace. - */ - class DefaultMeshTraits - { - public: - typedef boundary_mesh::Face Face; - typedef boundary_mesh::HalfEdge HalfEdge; - typedef boundary_mesh::Vertex Vertex; - typedef boundary_mesh::UnlinkedVertex UnlinkedVertex; - - static const unsigned int maximumNumberOfHangingNodes = 1; - static const unsigned int maximumNumberOfFaceVertices = 4; - }; - - template < class T > + template < template < typename > class TProp, + template < typename > class TAlg > class Mesh; /** @@ -102,16 +83,57 @@ namespace boundary_mesh * modified after construction and that it can not retain any information * during method calls. */ - template < class Ttraits = boundary_mesh::DefaultMeshTraits > + template < template < typename > class TProp, + template < typename > class TAlg> class Mesh { + template friend class MeshBuilder; + public: - typedef Ttraits traits; - typedef typename std::vector< typename traits::Face >::const_iterator - ConstFaceIterator; - typedef typename std::vector< typename traits::Vertex >::const_iterator + typedef TProp< Mesh > Prop; + typedef TAlg< Mesh > Alg; + typedef MeshBuilder< Mesh > Builder; + + typedef typename Prop::UVertex UVertex; + typedef typename Prop::Vertex Vertex; + typedef typename Prop::HalfEdge HalfEdge; + typedef typename Prop::IntFace IntFace; + typedef typename Prop::Face Face; + + typedef typename Prop::FaceTypes FaceTypes; + + struct Size + { + geoid_t vertices; + geoid_t faces; + geoid_t edges; + }; + + typedef typename std::vector< Vertex >::const_iterator ConstVertexIterator; + /* The mesh's face elements can either be pointers to a compliant class + * or complete copies of instances. To everyone outside this class, this + * difference should not matter. This class cares about that matter. + */ + class ConstFaceIterator + { + public: + ConstFaceIterator( + typename std::vector< IntFace >::const_iterator iterator ); + ConstFaceIterator( const ConstFaceIterator& copy ); + + bool operator==( const ConstFaceIterator& rhs ) const; + bool operator!=( const ConstFaceIterator& rhs ) const; + ConstFaceIterator& operator++(); + const typename Mesh::Face & operator*() const; + const typename Mesh::Face * operator->() const; + + private: + typename std::vector< typename Mesh::IntFace >::const_iterator + vectorIterator_; + }; + /** * @fn Mesh(const Mesh& copy) * @@ -183,28 +205,28 @@ namespace boundary_mesh ConstVertexIterator end_v() const; /** - * @fn unsigned int getNumberOfFaces() const + * @fn geoid_t getNumberOfFaces() const * * Returns the number of faces contained in this mesh. */ - unsigned int getNumberOfFaces() const; + geoid_t getNumberOfFaces() const; /** - * @fn unsigned int getNumberOfEdges() const + * @fn geoid_t getNumberOfEdges() const * * Returns the number of half-edges contained in this mesh. */ - unsigned int getNumberOfEdges() const; + geoid_t getNumberOfEdges() const; /** - * @fn unsigned int getNumberOfVertices() const + * @fn geoid_t getNumberOfVertices() const * * Returns the number of vertices contained in this mesh. */ - unsigned int getNumberOfVertices() const; + geoid_t getNumberOfVertices() const; /** - * @fn unsigned int getVertexId(const typename traits::Vertex& v) const + * @fn geoid_t getVertexId(const typename traits::Vertex& v) const * * Returns an unique id which is between 0 and getNumberOfVertices() - 1. * The ids are assigned in the same order as the vertices are added to @@ -213,20 +235,20 @@ namespace boundary_mesh * This method throws an assertion if the vertex v does not belong to the * mesh. */ - unsigned int getVertexId(const typename traits::Vertex& v) const; + geoid_t getVertexId(const typename Mesh::Vertex& v) const; /** - * @fn unsigned int getEdgeId(const typename traits::HalfEdge& e) const + * @fn geoid_t getEdgeId(const typename traits::HalfEdge& e) const * * Returns an unique id which is between 0 and getNumberOfEdges() - 1. * * This method throws an assertion if the half-edge e does not belong to the * mesh. */ - unsigned int getEdgeId(const typename traits::HalfEdge& e) const; + geoid_t getEdgeId(const typename Mesh::HalfEdge& e) const; /** - * @fn unsigned int getFaceId(const typename traits::Face& f) const + * @fn geoid_t getFaceId(const typename traits::Face& f) const * * Returns an unique id which is between 0 and getNumberOfFaces() - 1. * The ids are assigned in the same order as the faces are added to @@ -235,43 +257,78 @@ namespace boundary_mesh * This method throws an assertion if the face f does not belong to the * mesh. */ - unsigned int getFaceId(const typename traits::Face& f) const; - - protected: - typedef Mesh< Ttraits > Base; + geoid_t getFaceId(const typename Mesh::Face& f) const; - struct Size - { - unsigned int vertices; - unsigned int faces; - unsigned int edges; - }; + /** + * @fn Size getSize() const + * @brief Returns a struct that contains the number of vertices, edges + * and faces of the mesh. + */ + Size getSize() const; - // This is used by MeshLoader classes, which impelement parsers for - // individual file formats. + private: + // The following part of the interface is only used by the + // MeshBuilder class. The MeshBuilder class is the only way + // to construct Mesh instances. Mesh(); Mesh( const Size& sizeInfo ); - void reserve(const Size& sizeInfo); - unsigned int addVertex(const typename traits::UnlinkedVertex& v); - const typename Mesh::traits::Face& addFace( - unsigned int number_of_vertices, unsigned int vertex_id[]); - const typename Mesh::traits::Face& addFace( - unsigned int a, unsigned int b, unsigned int c) - { - unsigned int t[] = {a, b, c}; - return addFace(3, t); - } - const typename Mesh::traits::Face& addFace( - unsigned int a, unsigned int b, unsigned int c, unsigned int d) - { - unsigned int t[] = {a, b, c, d}; - return addFace(4, t); - } - void build_meta_data(); + geoid_t addVertex(const typename Mesh::UVertex& v); + const typename Mesh::Face& addFace( + std::vector< geoid_t > vertexIds ); + void buildMetaData( void ); - private: + // The following methods' main purpose is to abstract the actual + // representation of the face classes within this class, i.e. if we + // maintain pointers to the objects or store them in a long block + // of memory. + template < class TypeList > + typename boost::enable_if_c< + generic::typelist::Length< TypeList >::value == 0, + typename Mesh< TProp, TAlg >::Face& >::type + factorizeFace( + const typename std::vector< const typename Mesh::Vertex* >& vertices, + const typename Mesh::HalfEdge* longestHalfEdge); + + template < class TypeList > + typename boost::enable_if_c< + generic::typelist::Length< TypeList >::value >= 1, + typename Mesh< TProp, TAlg >::Face& >::type + factorizeFace( + const typename std::vector< const typename Mesh::Vertex* >& vertices, + const typename Mesh::HalfEdge* longestHalfEdge); + + template < class TMesh, class TSpecificFace > + typename boost::enable_if< + boost::is_pointer< typename TMesh::IntFace >, + typename TMesh::Face& >::type + factorizeFace_( + const typename TMesh::HalfEdge* longestHalfEdge); + + template < class TMesh, class TSpecificFace > + typename boost::disable_if< + boost::is_pointer< typename TMesh::IntFace >, + typename TMesh::Face& >::type + factorizeFace_( + const typename TMesh::HalfEdge* longestHalfEdge); + + template < class TMesh > + typename boost::enable_if< + boost::is_pointer< typename TMesh::IntFace >, + typename TMesh::Face& >::type + getFaceRefById( geoid_t faceId ) const; + + template < class TMesh > + typename boost::disable_if< + boost::is_pointer< typename TMesh::IntFace >, + typename TMesh::Face& >::type + getFaceRefById( geoid_t faceId ) const; + + // For various reasons this class uses the Pimpl idiom. struct data; data* d; + + static void initialize(); + static bool initialized_; }; } diff --git a/src/bem3d/src/boundary_mesh/MeshBuilder.hpp b/src/bem3d/src/boundary_mesh/MeshBuilder.hpp new file mode 100644 index 0000000..5af08ce --- /dev/null +++ b/src/bem3d/src/boundary_mesh/MeshBuilder.hpp @@ -0,0 +1,26 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_MESH_BUILDER_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_MESH_BUILDER_HPP_GUARD_ + +#include "types.hpp" +#include "Mesh.hpp" + +namespace boundary_mesh +{ + template < class TMesh > + class MeshBuilder + { + public: + MeshBuilder( const typename TMesh::Size& size ); + geoid_t addVertex( const typename TMesh::UVertex& v ); + const typename TMesh::Face& addFace( std::vector< geoid_t > vertexIds ); + TMesh deliver(); + + private: + TMesh mesh_; + }; +} + +#include "MeshBuilder_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/MeshBuilder_tmpl.cpp b/src/bem3d/src/boundary_mesh/MeshBuilder_tmpl.cpp new file mode 100644 index 0000000..f12cbe1 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/MeshBuilder_tmpl.cpp @@ -0,0 +1,41 @@ +#ifdef HILBERT3D_BOUNDARY_MESH_MESHBUILDER_CPP_GUARD_ +#error Please never include or compile this file directly, but include the \ + corresponding header files instead. +#else +#define HILBERT3D_BOUNDARY_MESH_MESHBUILDER_CPP_GUARD_ +#include "MeshBuilder.hpp" + +namespace boundary_mesh +{ + template < class TMesh > + MeshBuilder< TMesh >::MeshBuilder( const typename TMesh::Size& size ) + : mesh_( size ) + { + TMesh::initialize(); + } + + template < class TMesh > + geoid_t + MeshBuilder< TMesh >::addVertex( const typename TMesh::UVertex& v ) + { + return mesh_.addVertex( v ); + } + + template < class TMesh > + const typename TMesh::Face& + MeshBuilder< TMesh >::addFace( std::vector< geoid_t > vertexIds ) + { + return mesh_.addFace( vertexIds ); + } + + template < class TMesh > + TMesh + MeshBuilder< TMesh >::deliver() + { + mesh_.buildMetaData(); + return mesh_; + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/Vertex.cpp b/src/bem3d/src/boundary_mesh/Vertex.cpp deleted file mode 100644 index 414e0bc..0000000 --- a/src/bem3d/src/boundary_mesh/Vertex.cpp +++ /dev/null @@ -1,136 +0,0 @@ -#include "Vertex.hpp" - -#include - -namespace boundary_mesh -{ - Vertex::Vertex(const double coord[3]) - : UnlinkedVertex(coord), halfedge_(0) - {} - - Vertex::Vertex(const UnlinkedVertex& down_copy) - : UnlinkedVertex(down_copy), halfedge_(0) - {} - - void - Vertex::setHalfEdge(const HalfEdge& halfedge) - { - halfedge_ = &halfedge; - } - -#if 0 - const Vertex::ConstVertexIterator & - Vertex::s_vertex_end_iterator = Vertex::ConstVertexIterator(); - - const Vertex::ConstFaceIterator & - Vertex::s_face_end_iterator = Vertex::ConstFaceIterator(); - - bool - Vertex::IteratorData_Base__::operator==( - const Vertex::IteratorData_Base__ & rhs) const - { - return m_startingEdge == rhs.m_startingEdge && - ( - (m_startingEdge == NULL) - || - (m_currentEdge == rhs.m_currentEdge - && m_options == rhs.m_options - && m_inverted == rhs.m_inverted) - ); - } - - bool - Vertex::IteratorData_Base__::operator!=( - const Vertex::IteratorData_Base__& rhs) const - { - return ! (*this == rhs); - } - - Vertex::IteratorData_Base__ & - Vertex::IteratorData_Base__::operator++() - { - // XXX: Implement this function, support options, ... - #warning Vertex::IteratorData_Base__::operator++ is not implemented yet,\ - you may experience troubles using it, especially if you are trying\ - to use it on boundary vertices! - if (m_inverted == false) - { - if (m_fast_forward_hanging_nodes) - { - m_currentEdge = m_currentEdge->getHangingEdge(); - assert(m_currentEdge->getHangingEdge() == 0); - m_currentEdge = m_currentEdge->getNextEdge(); - m_fast_forward_hanging_nodes = false; - } - else - { - if (m_currentEdge->getOppositeEdge() == 0) - { -# if 0 - if (m_options.no_boundary_inversion()) - { - m_startingEdge = m_currentEdge = 0; - return *this; - } - else - { -# endif - m_currentEdge = m_startingEdge->getOppositeEdge(); - m_inverted = true; - return ++(*this); -# if 0 - } -# endif - } - - m_currentEdge = m_currentEdge->getOppositeEdge()->getNextEdge(); - - if (m_currentEdge == m_startingEdge) - { - m_startingEdge = m_currentEdge = 0; - return *this; - } - } - } - else // m_inverted == true - { - - } - - return *this; - } - - Vertex::ConstFaceIterator - Vertex::begin_f() const - { - assert(m_halfedge != 0); - return ConstFaceIterator(m_halfedge); - } - - const Vertex::ConstFaceIterator& - Vertex::end_f() - { - return s_face_end_iterator; - } - - Vertex::ConstVertexIterator - Vertex::begin_v() const - { - assert(m_halfedge != 0); - return ConstVertexIterator(m_halfedge); - } - - const Vertex::ConstVertexIterator& - Vertex::end_v() - { - return s_vertex_end_iterator; - } - - bool - Vertex::isBoundaryVertex() const - { - #warning isBoundaryVertex is not implemented correctly yet. - return begin_v() == end_v(); - } -#endif -} diff --git a/src/bem3d/src/boundary_mesh/Vertex.hpp b/src/bem3d/src/boundary_mesh/Vertex.hpp index bb7c5b0..d561d78 100644 --- a/src/bem3d/src/boundary_mesh/Vertex.hpp +++ b/src/bem3d/src/boundary_mesh/Vertex.hpp @@ -8,155 +8,32 @@ /** * @file boundary_mesh/Vertex.hpp * @brief This file provides the types boundary_mesh::Vertex and - * boundary_mesh::OVertex. + * boundary_mesh::UnlinkedVertex. */ namespace boundary_mesh { - class HalfEdge; - - /** - * @class OVertex - * @brief An OVertex supports all operations, you may want to use on points - * or vectors, but in contrast to the Vertex class, it does not belong - * to a particular mesh. - * - * In contrast to the Vertex class, the OVertex class allows instantation - * (from a double[3] array). All operations on Vertex instances return - * OVertex instances, as the result does not belong to a particular mesh. - * - * For more information on the supported operations, please refer to the - * documentation of generic::GenericVector. - */ typedef generic::Vector3D UnlinkedVertex; - class Vertex : public UnlinkedVertex + template < class TMesh > + class VertexT : public TMesh::UVertex { - template < class T > friend class Mesh; + template < template class TProp, + template class TAlg > friend class Mesh; public: -#if 0 - class IteratorData_Base__; - class ConstVertexIterator; - class ConstFaceIterator; - - class IteratorData_Base__ - { - public: - IteratorData_Base__(const HalfEdge* startingEdge, - const HalfEdge* currentEdge, - iterator_options options = iterator_options(), - bool inverted = false) - : m_startingEdge(startingEdge), m_currentEdge(currentEdge), - m_options(options), m_inverted(inverted), - m_fast_forward_hanging_nodes(false) - {} - IteratorData_Base__(const IteratorData_Base__& copy) - : m_startingEdge(copy.m_startingEdge), - m_currentEdge(copy.m_currentEdge), - m_options(copy.m_options), m_inverted(copy.m_inverted), - m_fast_forward_hanging_nodes(false) - {} - - bool operator==(const IteratorData_Base__& rhs) const; - bool operator!=(const IteratorData_Base__& rhs) const; - IteratorData_Base__& operator++(); - - const HalfEdge& getCurrentHalfEdge() const - { return *m_currentEdge; } - - private: - const HalfEdge* m_startingEdge; - const HalfEdge* m_currentEdge; - iterator_options m_options; - bool m_inverted; - bool m_fast_forward_hanging_nodes; - }; - - class ConstVertexIterator : public std::iterator< - std::input_iterator_tag, Vertex> - { - friend class Vertex; - - public: - ConstVertexIterator(const ConstVertexIterator& copy) - : m_data(copy.m_data) - {} - bool operator==(const ConstVertexIterator& rhs) const - { return m_data == rhs.m_data; } - bool operator!=(const ConstVertexIterator& rhs) const - { return m_data != rhs.m_data; } - ConstVertexIterator& operator++() - { ++m_data; return *this; } - const Vertex& operator*() const; - - private: - ConstVertexIterator() - : m_data(0,0) - {} - ConstVertexIterator(const HalfEdge* startingEdge) - : m_data(startingEdge,startingEdge) - {} - ConstVertexIterator(const HalfEdge* startingEdge, - iterator_options options) - : m_data(startingEdge,startingEdge,options) - {} - - IteratorData_Base__ m_data; - }; - - class ConstFaceIterator : public std::iterator< - std::input_iterator_tag, Face> - { - friend class Vertex; - - public: - ConstFaceIterator(const ConstFaceIterator& copy) - : m_data(copy.m_data) - {} - bool operator==(const ConstFaceIterator& rhs) const - { return m_data == rhs.m_data; } - bool operator!=(const ConstFaceIterator& rhs) const - { return m_data != rhs.m_data; } - ConstFaceIterator& operator++() - { ++m_data; return *this; } - const Face& operator*() const; - - private: - ConstFaceIterator() - : m_data(0,0) - {} - ConstFaceIterator(const HalfEdge* startingEdge) - : m_data(startingEdge,startingEdge) - {} - ConstFaceIterator(const HalfEdge* startingEdge, - iterator_options options) - : m_data(startingEdge,startingEdge,options) - {} - - IteratorData_Base__ m_data; - }; - - ConstFaceIterator begin_f() const; - static const ConstFaceIterator& end_f(); - ConstVertexIterator begin_v() const; - static const ConstVertexIterator& end_v(); - bool isBoundaryVertex() const; -#endif + const typename TMesh::HalfEdge* getHalfEdge() const; private: - Vertex(const double[3]); - Vertex(const UnlinkedVertex& down_copy); - void setHalfEdge(const HalfEdge& halfedge); - - const HalfEdge* halfedge_; + VertexT(const double[3]); + VertexT(const typename TMesh::UVertex& downCopy); + void setHalfEdge(const typename TMesh::HalfEdge& halfedge); -#if 0 - static const ConstVertexIterator& s_vertex_end_iterator; - static const ConstFaceIterator& s_face_end_iterator; -#endif + const typename TMesh::HalfEdge* halfedge_; }; } +#include "Vertex_tmpl.cpp" + #endif diff --git a/src/bem3d/src/boundary_mesh/Vertex_tmpl.cpp b/src/bem3d/src/boundary_mesh/Vertex_tmpl.cpp new file mode 100644 index 0000000..1935e64 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/Vertex_tmpl.cpp @@ -0,0 +1,30 @@ +#include "Vertex.hpp" + +#include + +namespace boundary_mesh +{ + template < class TMesh > + VertexT< TMesh >::VertexT(const double coord[3]) + : TMesh::UVertex(coord), halfedge_(0) + {} + + template < class TMesh > + VertexT< TMesh >::VertexT(const typename TMesh::UVertex& down_copy) + : TMesh::UVertex(down_copy), halfedge_(0) + {} + + template < class TMesh > + void + VertexT< TMesh >::setHalfEdge(const typename TMesh::HalfEdge& halfedge) + { + halfedge_ = &halfedge; + } + + template < class TMesh > + const typename TMesh::HalfEdge* + VertexT< TMesh >::getHalfEdge() const + { + return halfedge_; + } +} diff --git a/src/bem3d/src/boundary_mesh/algorithm/HandleObj.hpp b/src/bem3d/src/boundary_mesh/algorithm/HandleObj.hpp new file mode 100644 index 0000000..41929c9 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/algorithm/HandleObj.hpp @@ -0,0 +1,27 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_ALGORITHM_HANDLEOBJ_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_ALGORITHM_HANDLEOBJ_HPP_GUARD_ + +#include + +namespace boundary_mesh +{ + namespace algorithm + { + template < class TMesh > + TMesh loadFromObj( const char* fileName ); + + template < class TMesh > + TMesh loadFromObj( std::string fileName ); + + template < class TMesh > + void saveAsObj( const TMesh& mesh, const char* fileName ); + + template < class TMesh > + void saveAsObj( const TMesh& mesh, std::string fileName ); + } +} + +#include "HandleObj_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/algorithm/HandleObj_tmpl.cpp b/src/bem3d/src/boundary_mesh/algorithm/HandleObj_tmpl.cpp new file mode 100644 index 0000000..ce297ba --- /dev/null +++ b/src/bem3d/src/boundary_mesh/algorithm/HandleObj_tmpl.cpp @@ -0,0 +1,193 @@ + +#include +#include +#include +#include +#include +#include +#include "../MeshBuilder.hpp" + +namespace boundary_mesh +{ + namespace algorithm + { + template < class TMesh > + TMesh + loadFromObj( const char* fileName ) + { + return loadFromObj< TMesh >( std::string( fileName ) ); + } + + template < class TMesh > + TMesh + loadFromObj( std::string fileName ) + { + static const unsigned int vertexDimension = 3; + static const boost::regex + vertex_line("v\\s+(-?\\d+(?:\\.\\d+)?)\\s+(-?\\d+(?:\\.\\d+)?)" + "\\s+(-?\\d+(?:\\.\\d+)?)\\s*", + boost::regex::perl); + static const boost::regex + face_line("f\\s+((?:\\d+\\s+|\\d+$){3,})\\s*", + boost::regex::perl); + static const boost::regex empty_line("\\s*|\\s*\\#.*", + boost::regex::perl); + + const size_t matchedNumberBufferSize = 1024; + char* matchedNumberBuffer = new char[matchedNumberBufferSize]; + + std::ifstream file(fileName.c_str()); + + if ( file.is_open() == false ) + { + assert(0); +// throw exception::FileIO(fileName, exception::FileIO::Reading); + } + + struct TMesh::Size sizeInfo; + sizeInfo.vertices = 0; + sizeInfo.faces = 0; + sizeInfo.edges = 0; + boost::smatch what; + std::string line; + + while ( file.good() ) + { + std::getline( file, line ); + + if ( line[0] == 'v' ) + sizeInfo.vertices += 1; + else if (line[0] == 'f' && boost::regex_match( line, what, face_line )) + { + sizeInfo.faces += 1; + const std::string numbers = what[1].str(); + assert( numbers.length() < matchedNumberBufferSize ); + matchedNumberBuffer = strncpy(matchedNumberBuffer, numbers.c_str(), + matchedNumberBufferSize); + char* savePtr = 0; + char* currentNumber = strtok_r(matchedNumberBuffer, " \t", &savePtr); + do + { + sizeInfo.edges += 1; + } while ((currentNumber = strtok_r( 0, " \t", &savePtr )) != 0); + } + } + + file.clear(); + file.seekg( 0, std::ios_base::beg ); + + typename TMesh::Builder builder(sizeInfo); + unsigned int line_number = 0; + std::vector< geoid_t > vertexIds; + vertexIds.reserve(TMesh::Prop::maximumNumberOfEdgesPerFace); + + while ( file.good() ) + { + std::getline( file, line ); + ++line_number; + + if (line[0] == 'v' && boost::regex_match( line, what, vertex_line )) + { + double coordinates[vertexDimension]; + assert(what.size() == vertexDimension+1); + for (unsigned int i = 0; i < vertexDimension; ++i) + { + std::istringstream istr( what[i+1] ); + istr >> coordinates[i]; + } + builder.addVertex(typename TMesh::UVertex(coordinates)); + } + else if (line[0] == 'f' && boost::regex_match( line, what, face_line )) + { + assert(what.size() == 2); + + vertexIds.clear(); + const std::string numbers = what[1].str(); + assert( numbers.length() < matchedNumberBufferSize ); + matchedNumberBuffer = strncpy(matchedNumberBuffer, numbers.c_str(), + matchedNumberBufferSize); + char* savePtr = 0; + char* currentNumber = strtok_r(matchedNumberBuffer, " \t", &savePtr); + do + { + unsigned int id = 0; + std::istringstream istr( currentNumber ); + istr >> id; + vertexIds.push_back( id-1 ); + } while ((currentNumber = strtok_r( 0, " \t", &savePtr )) != 0); + + assert(vertexIds.size() >= 3); + + builder.addFace(vertexIds); + } + else if ( boost::regex_match( line, what, empty_line ) ) + {} + else + { + assert(0); + #if 0 + throw new mesh::exception::syntax( file_name, line_number ); + #endif + } + } + + delete[] matchedNumberBuffer; + return builder.deliver(); + } + + template < class TMesh > + void saveAsObj( const TMesh& mesh, const char* fileName ) + { + saveAsObj( mesh, std::string( fileName ) ); + } + + template < class TMesh > + void saveAsObj( const TMesh& mesh, std::string fileName ) + { + std::ofstream outputFile( fileName.c_str() ); + + if ( outputFile.fail() == true ) + { + // TODO: Throw proper exception. + assert(0); + } + + /// Print out all vertices ordered by their ids: + for (typename TMesh::ConstVertexIterator vertexIt = mesh.begin_v(); + vertexIt != mesh.end_v(); ++vertexIt) + { + outputFile << "v " + << (*vertexIt)[0] << " " + << (*vertexIt)[1] << " " + << (*vertexIt)[2] << std::endl; + } + + /// Print out all faces with their respective ids: + for (typename TMesh::ConstFaceIterator faceIt = mesh.begin_f(); + faceIt != mesh.end_f(); ++faceIt) + { + outputFile << "f "; + typename TMesh::Face::ConstVertexIterator vertexIt = faceIt->begin_v(); + assert( vertexIt != faceIt->end_v() ); + + while ( true ) + { + outputFile << mesh.getVertexId( *vertexIt ) + 1; + ++vertexIt; + if ( vertexIt != faceIt->end_v() ) + { + outputFile << " "; + } + else + { + outputFile << std::endl; + break; + } + } + } + + outputFile.close(); + } + } +} + diff --git a/src/bem3d/src/boundary_mesh/algorithm/RefineUniformly.hpp b/src/bem3d/src/boundary_mesh/algorithm/RefineUniformly.hpp new file mode 100644 index 0000000..a91df60 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/algorithm/RefineUniformly.hpp @@ -0,0 +1,74 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_ALGORITHM_REFINEUNIFORMLY_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_ALGORITHM_REFINEUNIFORMLY_HPP_GUARD_ + +#include "../types.hpp" +#include "../FaceDispatch.hpp" + +#define HILBERT3D_DISPATCH_PARAMETERS_0(Name) \ + public: \ + Name() {} \ + private: +#define HILBERT3D_DISPATCH_PARAMETERS_1(Name, T1, N1) \ + public: \ + Name(T1 N1) : N1(N1) {} \ + private: \ + T1 N1; +#define HILBERT3D_DISPATCH_PARAMETERS_2(Name, T1, N1, T2, N2) \ + public: \ + Name(T1 N1, T2 N2) : N1(N1), N2(N2) {} \ + private: \ + T1 N1; T2 N2; +#define HILBERT3D_DISPATCH_PARAMETERS_3(Name, T1, N1, T2, N2, T3, N3) \ + public: \ + Name(T1 N1, T2 N2, T3 N3) : N1(N1), N2(N2), N3(N3) {} \ + private: \ + T1 N1; T2 N2; T3 N3; + + +namespace boundary_mesh +{ + namespace algorithm + { + namespace refine_uniformly_impl + { + template < class TMesh > + std::vector< geoid_t > + addEdgeVerticesForFace( + const TMesh& oldMesh, + typename TMesh::Builder* builder, + const typename TMesh::Face& face, + std::vector< geoid_t >* newVertices ); + + template < class TMesh > + class RefineFaceUniformlyImpl + { + HILBERT3D_DISPATCH_PARAMETERS_3( RefineFaceUniformlyImpl, + const TMesh&, oldMesh_, typename TMesh::Builder*, builder_, + std::vector< geoid_t >*, newVertices_ ); + + public: + void exec(const typename TMesh::Prop::Triangle& face); + void exec(const typename TMesh::Prop::ConvexQuadrilateral& face); + }; + + template < class TMesh > + class ComputeNewSizeForFaceImpl + { + HILBERT3D_DISPATCH_PARAMETERS_1( ComputeNewSizeForFaceImpl, + typename TMesh::Size*, size_ ); + + public: + void exec( const typename TMesh::Prop::Triangle& face ); + void exec( const typename TMesh::Prop::ConvexQuadrilateral& face ); + }; + } + + template < class TMesh > + TMesh refineUniformly( const TMesh& mesh ); + } +} + +#include "RefineUniformly_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/algorithm/RefineUniformly_tmpl.cpp b/src/bem3d/src/boundary_mesh/algorithm/RefineUniformly_tmpl.cpp new file mode 100644 index 0000000..514da47 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/algorithm/RefineUniformly_tmpl.cpp @@ -0,0 +1,206 @@ +#include "RefineUniformly.hpp" +#include "../FaceDispatch.hpp" + +namespace boundary_mesh +{ + namespace algorithm + { + namespace refine_uniformly_impl + { + template < class TMesh > + std::vector< geoid_t > + addEdgeVerticesForFace( + const TMesh& oldMesh, + typename TMesh::Builder* builder, + const typename TMesh::Face& face, + std::vector< geoid_t >* newVertices) + { + unsigned int i = 0; + std::vector< geoid_t > faceVertexIds( + face.getNumberOfVertices() * 2, 0); + + for ( typename TMesh::Face::ConstEdgeIterator edgeIt = face.begin_e(); + edgeIt != face.end_e(); ++edgeIt ) + { + const typename TMesh::Vertex& startVertex = edgeIt->getStartVertex(); + geoid_t edgeId = oldMesh.getEdgeId( *edgeIt ); + + if ( (*newVertices)[ edgeId ] == geoid_t_max ) + { + const typename TMesh::Vertex& endVertex = edgeIt->getEndVertex(); + (*newVertices)[ edgeId ] = + builder->addVertex( ( startVertex + endVertex ) / 2. ); + if ( edgeIt->getOppositeEdge() != 0 ) + { + (*newVertices)[oldMesh.getEdgeId(*(edgeIt->getOppositeEdge()))] = + (*newVertices)[ edgeId ]; + } + } + + faceVertexIds[ 2*i + 0 ] = oldMesh.getVertexId( startVertex ); + faceVertexIds[ 2*i + 1 ] = (*newVertices)[ edgeId ]; + + ++i; + } + + return faceVertexIds; + } + + template < class TMesh > + void + RefineFaceUniformlyImpl< TMesh >::exec( + const typename TMesh::Prop::Triangle& face) + { + std::vector< geoid_t > faceVertexIds = + addEdgeVerticesForFace( oldMesh_, builder_, face, newVertices_ ); + std::vector< geoid_t > triangle(3); + + assert( faceVertexIds.size() == 6 ); + + // Some ASCII-Art: + // 4 + // * + // / \ The big triangle is refined to the small + // 5 *---* 3 ones. The numbers next to the stars are the + // / \ / \ indices of the appropiate nodes with respect + // 0 *---*---* 2 to the faceVertexIds vector. + // 1 + // We need to add the following triangles: + // [ 0, 1, 5 ], [ 1, 2, 3 ], [ 1, 3, 5 ] and [ 3, 4, 5 ] + + triangle[0] = faceVertexIds[0]; + triangle[1] = faceVertexIds[1]; + triangle[2] = faceVertexIds[5]; + builder_->addFace( triangle ); + + triangle[0] = faceVertexIds[1]; + triangle[1] = faceVertexIds[2]; + triangle[2] = faceVertexIds[3]; + builder_->addFace( triangle ); + + triangle[0] = faceVertexIds[1]; + triangle[1] = faceVertexIds[3]; + triangle[2] = faceVertexIds[5]; + builder_->addFace( triangle ); + + triangle[0] = faceVertexIds[3]; + triangle[1] = faceVertexIds[4]; + triangle[2] = faceVertexIds[5]; + builder_->addFace( triangle ); + } + + template < class TMesh > + void + RefineFaceUniformlyImpl< TMesh >::exec( + const typename TMesh::Prop::ConvexQuadrilateral& face) + { + std::vector< geoid_t > faceVertexIds = + addEdgeVerticesForFace( oldMesh_, builder_, face, newVertices_ ); + std::vector< geoid_t > quad(4); + + assert( faceVertexIds.size() == 8 ); + + // Add an additional vertex right in the center of the rectangle: + const typename TMesh::Prop::Quadrilateral& rect = + dynamic_cast< const typename TMesh::Prop::Quadrilateral& >( + face); + + geoid_t centerVertexId = builder_->addVertex( + ( rect.getA() + rect.getC() ) / 2.); + + // Some ASCII-Art: + // 5 + // 6 *---*---* 4 Stars and numbers have the same meaning + // | | as in the triangle case. + // 7 *---c---* 3 c is also a vertex, it has the special id + // | | centerVertexId. + // 0 *---*---* 2 + // 1 + // We need to add the following rectangles: + // [0, 1, c, 7], [1, 2, 3, c], [3, 4, 5, c] and [5, 6, 7, c] + quad[0] = faceVertexIds[0]; quad[1] = faceVertexIds[1]; + quad[2] = centerVertexId; quad[3] = faceVertexIds[7]; + builder_->addFace( quad ); + + quad[0] = faceVertexIds[1]; quad[2] = faceVertexIds[2]; + quad[3] = faceVertexIds[3]; quad[4] = centerVertexId; + builder_->addFace( quad ); + + quad[0] = faceVertexIds[3]; quad[1] = faceVertexIds[4]; + quad[2] = faceVertexIds[5]; quad[3] = centerVertexId; + builder_->addFace( quad ); + + quad[0] = faceVertexIds[5]; quad[1] = faceVertexIds[6]; + quad[2] = faceVertexIds[7]; quad[3] = centerVertexId; + builder_->addFace( quad ); + } + + template < class TMesh > + void + ComputeNewSizeForFaceImpl< TMesh >::exec( + const typename TMesh::Prop::Triangle& face) + { + size_->vertices += 6; + size_->faces += 4; + size_->edges += 12; + } + + template < class TMesh > + void + ComputeNewSizeForFaceImpl< TMesh >::exec( + const typename TMesh::Prop::ConvexQuadrilateral& face) + { + size_->vertices += 9; + size_->faces += 4; + size_->edges += 16; + } + } + + template < class TMesh > + TMesh + refineUniformly( const TMesh& mesh ) + { + // Define nice names for the used functions. + typedef SingleFaceDispatcher< + refine_uniformly_impl::ComputeNewSizeForFaceImpl< TMesh >, TMesh > + ComputeNewSizeForFace; + typedef SingleFaceDispatcher< + refine_uniformly_impl::RefineFaceUniformlyImpl< TMesh >, TMesh > + RefineFaceUniformly; + + // Compute the new size of the mesh using the appropiate functor and + // create a TMesh::Builder instance for the new mesh. + typename TMesh::Size newSize = { 0, 0, 0 }; + for (typename TMesh::ConstFaceIterator faceIt = mesh.begin_f(); + faceIt != mesh.end_f(); ++faceIt) + { + ComputeNewSizeForFace::Exec( *faceIt, + typename ComputeNewSizeForFace::PARAM( &newSize ) ); + } + + typename TMesh::Builder builder( newSize ); + + // Add all vertices of the old mesh (in the same order, the ids are + // therefore the same for both meshes): + for (typename TMesh::ConstVertexIterator vertexIt = mesh.begin_v(); + vertexIt != mesh.end_v(); ++vertexIt) + { + builder.addVertex( *vertexIt ); + } + + // Call the refineFaceUniformly functor to actually do the work and + // refine the faces. + std::vector< geoid_t > newVertices( mesh.getNumberOfEdges(), + geoid_t_max ); + for (typename TMesh::ConstFaceIterator faceIt = mesh.begin_f(); + faceIt != mesh.end_f(); ++faceIt) + { + RefineFaceUniformly::Exec( *faceIt, + typename RefineFaceUniformly::PARAM(mesh, &builder, &newVertices) ); + } + + return builder.deliver(); + } + } +} + diff --git a/src/bem3d/src/boundary_mesh/dispatchTest.cpp b/src/bem3d/src/boundary_mesh/dispatchTest.cpp new file mode 100644 index 0000000..e0882df --- /dev/null +++ b/src/bem3d/src/boundary_mesh/dispatchTest.cpp @@ -0,0 +1,110 @@ +#include "FaceDispatch.hpp" +#include + +using namespace boundary_mesh; + +/* + * NEU NEU NEU + * + * Ich habe gerade einen dynamischen Multi-Dispatcher geschrieben, hier ist + * das Ergebnis. Ziel ist es -- nur um dir das Googeln zu ersparen -- den + * Typ eines Faces dynamisch zur Laufzeit zu erkennen und daraufhin die dem + * Typ entsprechende Variante einer Funktion aufzurufen. + * + * Man kann dabei daran denken, dass wir eine Funktion refineFace schreiben + * können, die in Abhängigkeit vom Typ des Faces das Face selbstständig + * verfeinert. + * + * In unserem jetzigen refine-Algorithmus können wir dann einfach diese + * refine-Funktion aufrufen und es passiert das richtige, d.h. wir ersparen + * uns die Fallunterscheidungen innerhalb der Funktion, haben nicht den + * Code für alle verschiedenen Faces innerhalb dieser einen Funktion und + * halten die Bibliothek leichter erweiterbar. + * + */ + +// Hier deklarieren wir zum Testen eine abstrakte Basisklasse RFace, sowie +// zwei Realisierungen RTriangle und RQuadrilateral. +// Volle Implementierungen dieser Klassen sind bald Bestandteil von Face.hpp. +struct Mesh {}; + +struct RFace +{ + virtual dispatchId_t getDispatchId() const =0; +}; + +struct RTriangle : RFace +{ + virtual dispatchId_t getDispatchId() const { + return DispatchId< Mesh, RTriangle >::Get(); + } +}; + +struct RQuadrilateral : RFace +{ + virtual dispatchId_t getDispatchId() const { + return DispatchId< Mesh, RQuadrilateral >::Get(); + } +}; + +// Das ist die Realisierung der Funktion für ein Dreieck. +void testTriangle( const RFace& f ) +{ + std::cout << "Das ist ein Dreieck!" << std::endl; +} + +// Und das für ein Viereck. +void testQuadrilateral( const RFace& f ) +{ + std::cout << "Das ist ein Viereck!" << std::endl; +} + +// Nun erzeugen wir einen Dispatch-Funktor mit dem Namen test, in dem Fall +// als globale Variable. +MultiDispatchSingleArg< RFace, void (&)( const RFace& f ), + void (*)( const RFace& f )> test; + +int main() +{ + // Jedem Face-Typen gehört *einmalig* eine Id zugeordnet. Darum kümmert + // sich später eine Initialisierungsfunktion, die automatisch aufgerufen + // wird. + DispatchId< Mesh, RTriangle >::Set( + CentralDispatchIdDispenser< Mesh >::Get()); + DispatchId< Mesh, RQuadrilateral >::Set( + CentralDispatchIdDispenser< Mesh >::Get()); + + // Jedem Funktor muss mitgeteilt werden, welche Realisierungen zur + // Verfügung stehen. Prinzipiell wird es dazu eine Liste von + // Registrierungsfunktionen geben, die von der Initialisierungsfunktion + // aufgerufen werden. + test.registerHandler< Mesh, RTriangle >( testTriangle ); + test.registerHandler< Mesh, RQuadrilateral >( testQuadrilateral ); + + // So, sobald alles aufgesetzt ist wird es etwas hübscher: + // Unsere Test-Typen. + RTriangle t; + RQuadrilateral q; + + // So sehen dann die Funktionsaufrufe aus. + test(t)(t); + test(q)(q); + + // Ausgabe: + // Das ist ein Dreieck! + // Das ist ein Viereck! + // + + return 0; +} + +// Das sieht nicht nach sehr viel aus, aber dadurch wird es möglich, den +// Code gut zu strukturieren und die Netzverwaltung vorallem erweiterbar +// zu halten. Außerdem ist der Dispatcher schneller als eine Liste von +// dynamic_casts, weil er in einer Tabelle nachsieht und nicht versuchen +// muss das Objekt auf alle Möglichkeiten zu casten. + +// Was derzeit vor allem noch fehlt ist die Möglichkeit, den dynamischen +// Dispatcher gegen einen statischen auszutauschen um Zeit zu sparen, falls +// das Netz z.B. nur aus Dreiecken besteht. + diff --git a/src/bem3d/src/boundary_mesh/exception.hpp b/src/bem3d/src/boundary_mesh/exception.hpp new file mode 100644 index 0000000..9e3c0da --- /dev/null +++ b/src/bem3d/src/boundary_mesh/exception.hpp @@ -0,0 +1,7 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_EXCEPTION_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_EXCEPTION_HPP_GUARD_ + +#include "exception/NoMatchingFaceType.hpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/exception/CouldNotDispatchCall.cpp b/src/bem3d/src/boundary_mesh/exception/CouldNotDispatchCall.cpp new file mode 100644 index 0000000..16eda9f --- /dev/null +++ b/src/bem3d/src/boundary_mesh/exception/CouldNotDispatchCall.cpp @@ -0,0 +1,12 @@ +#include "CouldNotDispatchCall.hpp" + +namespace boundary_mesh +{ + namespace exception + { + CouldNotDispatchCall::CouldNotDispatchCall( const std::string& whatArg ) + : std::runtime_error( whatArg ) + {} + } +} + diff --git a/src/bem3d/src/boundary_mesh/exception/CouldNotDispatchCall.hpp b/src/bem3d/src/boundary_mesh/exception/CouldNotDispatchCall.hpp new file mode 100644 index 0000000..ee455c4 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/exception/CouldNotDispatchCall.hpp @@ -0,0 +1,21 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_EXCEPTION_COULDNOTDISPATCHCALL_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_EXCEPTION_COULDNOTDISPATCHCALL_HPP_GUARD_ + +#include +#include +#include + +namespace boundary_mesh +{ + namespace exception + { + class CouldNotDispatchCall : public std::runtime_error + { + public: + CouldNotDispatchCall( const std::string& whatArg ); + }; + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/exception/DispatchIdNotSet.cpp b/src/bem3d/src/boundary_mesh/exception/DispatchIdNotSet.cpp new file mode 100644 index 0000000..d3563b6 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/exception/DispatchIdNotSet.cpp @@ -0,0 +1,12 @@ +#include "DispatchIdNotSet.hpp" + +namespace boundary_mesh +{ + namespace exception + { + DispatchIdNotSet::DispatchIdNotSet( const std::string& whatArg ) + : std::logic_error( whatArg ) + {} + } +} + diff --git a/src/bem3d/src/boundary_mesh/exception/DispatchIdNotSet.hpp b/src/bem3d/src/boundary_mesh/exception/DispatchIdNotSet.hpp new file mode 100644 index 0000000..8d203eb --- /dev/null +++ b/src/bem3d/src/boundary_mesh/exception/DispatchIdNotSet.hpp @@ -0,0 +1,21 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_EXCEPTION_DISPATCHIDNOTSET_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_EXCEPTION_DISPATCHIDNOTSET_HPP_GUARD_ + +#include +#include +#include + +namespace boundary_mesh +{ + namespace exception + { + class DispatchIdNotSet : public std::logic_error + { + public: + DispatchIdNotSet( const std::string& whatArg ); + }; + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType.hpp b/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType.hpp new file mode 100644 index 0000000..68790bc --- /dev/null +++ b/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType.hpp @@ -0,0 +1,32 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_EXCEPTION_NOMATCHINGFACETYPE_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_EXCEPTION_NOMATCHINGFACETYPE_HPP_GUARD_ + +#include +#include +#include +#include + +namespace boundary_mesh +{ + namespace exception + { + template < class TMesh > + class NoMatchingFaceType : public std::runtime_error + { + public: + NoMatchingFaceType(const std::string& what_arg, + const std::vector< const typename TMesh::Vertex* > vertices) throw(); + + virtual ~NoMatchingFaceType() throw(); + virtual const char* what() const throw(); + + private: + char* message_; + + static const unsigned int maximumMessageSize = 512; + }; + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp b/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp new file mode 100644 index 0000000..aed85e5 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp @@ -0,0 +1,68 @@ +#include "NoMatchingFaceType.hpp" + +#include +#include + +namespace boundary_mesh +{ + namespace exception + { + template < class TMesh > + NoMatchingFaceType< TMesh >::NoMatchingFaceType( + const std::string& what_arg, + const std::vector< const typename TMesh::Vertex* > vertices) throw() + : std::runtime_error(what_arg), message_(new char[maximumMessageSize]) + { + message_ = std::strncpy(message_, std::runtime_error::what(), + maximumMessageSize); + if ( message_[maximumMessageSize-1] != '\0' ) + { + message_[maximumMessageSize-1] = '\0'; + } + else + { + size_t firstFreePos = strlen(message_); + std::strncpy(message_+firstFreePos, + "\nThe following vertices are involved:", + maximumMessageSize - firstFreePos); + if (message_[maximumMessageSize-1] != '\0') + { + message_[maximumMessageSize-1] = '\0'; + } + else + { + std::stringstream ss; + for ( typename std::vector< const typename TMesh::Vertex* >:: + const_iterator vertexIt = vertices.begin(); + vertexIt != vertices.end(); ++vertexIt ) + { + ss << std::endl << **vertexIt; + } + std::string s = ss.str(); + + firstFreePos = strlen(message_); + std::strncpy(message_+firstFreePos, s.c_str(), + maximumMessageSize - firstFreePos); + if (message_[maximumMessageSize-1] != '\0') + { + message_[maximumMessageSize-1] = '\0'; + } + } + } + } + + template < class TMesh > + NoMatchingFaceType< TMesh >::~NoMatchingFaceType() throw() + { + delete message_; + } + + template < class TMesh > + const char* + NoMatchingFaceType< TMesh >::what() const throw() + { + return message_; + } + } +} + diff --git a/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp b/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp new file mode 100644 index 0000000..2880f14 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp @@ -0,0 +1,8 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_EXCEPTION_NOMATCHINGFACETYPE_TMPL_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_EXCEPTION_NOMATCHINGFACETYPE_TMPL_HPP_GUARD_ + +#include "NoMatchingFaceType.hpp" +#include "NoMatchingFaceType_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral.hpp b/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral.hpp new file mode 100644 index 0000000..ccb5b23 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral.hpp @@ -0,0 +1,61 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_CONVEXQUADRILATERAL_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_CONVEXQUADRILATERAL_HPP_GUARD_ + +#include "../../generic/BaseTypes.hpp" +#include "Quadrilateral.hpp" + +namespace boundary_mesh +{ + namespace face + { + namespace priv + { + template < class TFaceBase, class TMesh > + class GenericConvexQuadrilateral__ + : public TFaceBase + { + public: + static bool is( + const typename std::vector< const typename TMesh::Vertex* > + vertices); + + GenericConvexQuadrilateral__( + const typename TMesh::HalfEdge& halfedge ); + GenericConvexQuadrilateral__( + const typename TMesh::HalfEdge& halfedge, geoid_t id ); + double computeArea() const; + }; + } + + template < class TMesh > + class ConvexQuadrilateral + : public priv::GenericConvexQuadrilateral__< + Quadrilateral, TMesh > + { + public: + ConvexQuadrilateral( const typename TMesh::HalfEdge& halfedge ); + }; + + template < class TMesh > + class RConvexQuadrilateral + : public priv::GenericConvexQuadrilateral__< + RQuadrilateral< TMesh >, TMesh > + { + typedef priv::GenericConvexQuadrilateral__< + RQuadrilateral< TMesh >, TMesh > GenericConvexQuadrilateral; + + public: + RConvexQuadrilateral( const typename TMesh::HalfEdge& halfedge, + geoid_t id ); + virtual double computeArea() const; + }; + + template < class TMesh > + class NoConvexQuadrilateral + : public generic::NullType + {}; + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp b/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp new file mode 100644 index 0000000..980428c --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp @@ -0,0 +1,95 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_CONVEXQUADRILATERAL_TMPL_CPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_CONVEXQUADRILATERAL_TMPL_CPP_GUARD_ + +#include "../Face.hpp" +#include "Quadrilateral_tmpl.hpp" + +namespace boundary_mesh +{ + namespace face + { + namespace priv + { + inline int signum(double x) // MK: changed this to inline, otherwise "mulitple definition error" when compiling....solution to this?? + { + if ( x < 0 ) + return -1; + else if ( x > 0 ) + return 1; + else + return 0; + } + + template < class TFaceBase, class TMesh > + bool + GenericConvexQuadrilateral__< TFaceBase, TMesh >::is( + const typename std::vector< const typename TMesh::Vertex* > + vertices) + { + if (vertices.size() == 4) + { + const typename TMesh::Vertex& a = *(vertices[0]); + const typename TMesh::Vertex& b = *(vertices[1]); + const typename TMesh::Vertex& c = *(vertices[2]); + const typename TMesh::Vertex& d = *(vertices[3]); + int sA1 = signum( (d-a) * (b-a) ); + int sA2 = signum( (a-b) * (c-b) ); + int sA3 = signum( (b-c) * (d-c) ); + int sA4 = signum( (c-d) * (a-d) ); + return sA1 == sA2 && sA2 == sA3 && sA3 == sA4 && sA4 != 0; + } + return false; + } + + template < class TFaceBase, class TMesh > + GenericConvexQuadrilateral__< TFaceBase, TMesh >:: + GenericConvexQuadrilateral__( + const typename TMesh::HalfEdge& halfedge) + : TFaceBase( halfedge ) + {} + + template < class TFaceBase, class TMesh > + GenericConvexQuadrilateral__< TFaceBase, TMesh >:: + GenericConvexQuadrilateral__( + const typename TMesh::HalfEdge& halfedge, geoid_t id) + : TFaceBase( halfedge, id ) + {} + + template < class TFaceBase, class TMesh > + double + GenericConvexQuadrilateral__< TFaceBase, TMesh >::computeArea() const + { + const typename TMesh::Vertex& a = TFaceBase::getA(); + const typename TMesh::Vertex& b = TFaceBase::getB(); + const typename TMesh::Vertex& c = TFaceBase::getC(); + const typename TMesh::Vertex& d = TFaceBase::getD(); + return .5 * ( (TMesh::Vertex::crossProduct( b-a, d-a )).norm() + + (TMesh::Vertex::crossProduct( b-c, d-c )).norm()); + } + } + + template < class TMesh > + ConvexQuadrilateral< TMesh >::ConvexQuadrilateral( + const typename TMesh::HalfEdge& halfedge) + : priv::GenericConvexQuadrilateral__< Quadrilateral< TMesh >, TMesh >( + halfedge) + {} + + template < class TMesh > + RConvexQuadrilateral< TMesh >::RConvexQuadrilateral( + const typename TMesh::HalfEdge& halfedge, geoid_t id) + : priv::GenericConvexQuadrilateral__< RQuadrilateral< TMesh >, TMesh >( + halfedge, id) + {} + + template < class TMesh > + double + RConvexQuadrilateral< TMesh >::computeArea() const + { + return GenericConvexQuadrilateral::computeArea(); + } + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp b/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp new file mode 100644 index 0000000..4b390c9 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp @@ -0,0 +1,8 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_CONVEXQUADRILATERAL_TMPL_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_CONVEXQUADRILATERAL_TMPL_HPP_GUARD_ + +#include "ConvexQuadrilateral.hpp" +#include "ConvexQuadrilateral_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Parallelogram.hpp b/src/bem3d/src/boundary_mesh/face/Parallelogram.hpp new file mode 100644 index 0000000..93be81c --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Parallelogram.hpp @@ -0,0 +1,59 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_PARALLELOGRAM_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_PARALLELOGRAM_HPP_GUARD_ + +#include "../../generic/BaseTypes.hpp" +#include "ConvexQuadrilateral.hpp" + +namespace boundary_mesh +{ + namespace face + { + namespace priv + { + template < class TFaceBase, class TMesh > + class GenericParallelogram__ + : public TFaceBase + { + public: + static bool is( + const typename std::vector< const typename TMesh::Vertex* > + vertices); + + GenericParallelogram__( const typename TMesh::HalfEdge& halfedge ); + GenericParallelogram__( const typename TMesh::HalfEdge& halfedge, + geoid_t id ); + double computeArea() const; + }; + } + + template < class TMesh > + class Parallelogram + : public priv::GenericParallelogram__< + ConvexQuadrilateral, TMesh > + { + public: + Parallelogram( const typename TMesh::HalfEdge& halfedge ); + }; + + template < class TMesh > + class RParallelogram + : public priv::GenericParallelogram__< + RConvexQuadrilateral< TMesh >, TMesh > + { + typedef priv::GenericParallelogram__< + RConvexQuadrilateral< TMesh >, TMesh > GenericParallelogram; + + public: + RParallelogram( const typename TMesh::HalfEdge& halfedge, geoid_t id ); + virtual double computeArea() const; + }; + + template < class TMesh > + class NoParallelogram + : public generic::NullType + {}; + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Parallelogram_tmpl.cpp b/src/bem3d/src/boundary_mesh/face/Parallelogram_tmpl.cpp new file mode 100644 index 0000000..9f0b5c1 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Parallelogram_tmpl.cpp @@ -0,0 +1,77 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_PARALLELOGRAM_TMPL_CPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_PARALLELOGRAM_TMPL_CPP_GUARD_ + +#include +#include "ConvexQuadrilateral_tmpl.hpp" +#include "Parallelogram_tmpl.hpp" + +namespace boundary_mesh +{ + namespace face + { + namespace priv + { + template < class TFaceBase, class TMesh > + bool GenericParallelogram__< TFaceBase, TMesh >::is( + const typename std::vector< const typename TMesh::Vertex* > + vertices) + { + if ( TFaceBase::is( vertices ) == true ) + { + const typename TMesh::Vertex& a = *(vertices[0]); + const typename TMesh::Vertex& b = *(vertices[1]); + const typename TMesh::Vertex& c = *(vertices[2]); + const typename TMesh::Vertex& d = *(vertices[3]); + return (b - a).isLinearlyDependent( d - c ) && + (c - b).isLinearlyDependent( a - d ); + } + return false; + } + + template < class TFaceBase, class TMesh > + GenericParallelogram__< TFaceBase, TMesh >::GenericParallelogram__( + const typename TMesh::HalfEdge& halfedge ) + : TFaceBase( halfedge ) + {} + + template < class TFaceBase, class TMesh > + GenericParallelogram__< TFaceBase, TMesh >::GenericParallelogram__( + const typename TMesh::HalfEdge& halfedge, geoid_t id ) + : TFaceBase( halfedge, id ) + {} + + template < class TFaceBase, class TMesh > + double + GenericParallelogram__< TFaceBase, TMesh >::computeArea() const + { + return TMesh::Vertex::crossProduct( + TFaceBase::getB() - TFaceBase::getA(), + TFaceBase::getC() - TFaceBase::getA() ).norm(); + } + } + + template < class TMesh > + Parallelogram< TMesh >::Parallelogram( + const typename TMesh::HalfEdge& halfedge) + : priv::GenericParallelogram__< ConvexQuadrilateral< TMesh >, TMesh >( + halfedge) + {} + + template < class TMesh > + RParallelogram< TMesh >::RParallelogram( + const typename TMesh::HalfEdge& halfedge, geoid_t id) + : priv::GenericParallelogram__< RConvexQuadrilateral< TMesh >, TMesh >( + halfedge, id) + {} + + template < class TMesh > + double + RParallelogram< TMesh >::computeArea() const + { + return GenericParallelogram::computeArea(); + } + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Parallelogram_tmpl.hpp b/src/bem3d/src/boundary_mesh/face/Parallelogram_tmpl.hpp new file mode 100644 index 0000000..3142138 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Parallelogram_tmpl.hpp @@ -0,0 +1,8 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_PARALLELOGRAM_TMPL_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_PARALLELOGRAM_TMPL_HPP_GUARD_ + +#include "Parallelogram.hpp" +#include "Parallelogram_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Quadrilateral.hpp b/src/bem3d/src/boundary_mesh/face/Quadrilateral.hpp new file mode 100644 index 0000000..0f43964 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Quadrilateral.hpp @@ -0,0 +1,66 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_QUADRILATERAL_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_QUADRILATERAL_HPP_GUARD_ + +#include +#include "../../generic/BaseTypes.hpp" +#include "../types.hpp" +#include "../Face.hpp" + +namespace boundary_mesh +{ + namespace face + { + namespace priv + { + template < class TFaceBase, class TMesh > + class GenericQuadrilateral__ + : public TFaceBase + { + public: + static bool is( + const typename std::vector< const typename TMesh::Vertex* > + vertices); + + GenericQuadrilateral__( const typename TMesh::HalfEdge& halfedge ); + GenericQuadrilateral__( const typename TMesh::HalfEdge& halfedge, + geoid_t id ); + double computeArea() const; + geoid_t getNumberOfVertices() const; + const typename TMesh::Vertex& getA() const; + const typename TMesh::Vertex& getB() const; + const typename TMesh::Vertex& getC() const; + const typename TMesh::Vertex& getD() const; + }; + } + + template < class TMesh > + class Quadrilateral + : public priv::GenericQuadrilateral__< CommonFaceBase__< TMesh >, TMesh > + { + public: + Quadrilateral( const typename TMesh::HalfEdge& halfedge ); + }; + + template < class TMesh > + class RQuadrilateral + : public priv::GenericQuadrilateral__< RFace< TMesh >, TMesh > + { + typedef priv::GenericQuadrilateral__< RFace< TMesh >, TMesh > + GenericQuadrilateral; + + public: + RQuadrilateral( const typename TMesh::HalfEdge& halfedge, geoid_t id ); + virtual double computeArea() const; + virtual geoid_t getNumberOfVertices() const; + virtual dispatchId_t getDispatchId() const; + }; + + template < class TMesh > + class NoQuadrilateral + : public generic::NullType + {}; + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Quadrilateral_tmpl.cpp b/src/bem3d/src/boundary_mesh/face/Quadrilateral_tmpl.cpp new file mode 100644 index 0000000..b1a6b79 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Quadrilateral_tmpl.cpp @@ -0,0 +1,134 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_QUADRILATERAL_TMPL_CPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_QUADRILATERAL_TMPL_CPP_GUARD_ + +#include + +namespace boundary_mesh +{ + namespace face + { + namespace priv + { + template < class TFaceBase, class TMesh > + bool + GenericQuadrilateral__< TFaceBase, TMesh >::is( + const typename std::vector< const typename TMesh::Vertex* > vertices) + { + #ifdef HILBERT3D_BOUNDARY_MESH_CHEAP_TYPE_CHECKS + return vertices.size() == 4; + #else + const typename TMesh::Vertex& a = vertices[0]; + const typename TMesh::Vertex& b = vertices[1]; + const typename TMesh::Vertex& c = vertices[2]; + const typename TMesh::Vertex& d = vertices[3]; + return ( vertices.size() == 4 && + (b-a).isLinearlyDependent(c-b) == false && + (c-b).isLinearlyDependent(d-c) == false && + (d-c).isLinearlyDependent(a-d) == false && + (a-d).isLinearlyDependent(b-a) == false ); + + #endif + } + + template < class TFaceBase, class TMesh > + GenericQuadrilateral__< TFaceBase, TMesh >::GenericQuadrilateral__( + const typename TMesh::HalfEdge& halfedge) + : TFaceBase( halfedge ) + {} + + template < class TFaceBase, class TMesh > + GenericQuadrilateral__< TFaceBase, TMesh >::GenericQuadrilateral__( + const typename TMesh::HalfEdge& halfedge, geoid_t id) + : TFaceBase( halfedge, id ) + {} + + template < class TFaceBase, class TMesh > + double + GenericQuadrilateral__< TFaceBase, TMesh >::computeArea() const + { + const typename TMesh::Vertex& a = getA(); + const typename TMesh::Vertex& b = getB(); + const typename TMesh::Vertex& c = getC(); + const typename TMesh::Vertex& d = getD(); + + return (TMesh::Vertex::crossProduct( d - a, b - a ) + + TMesh::Vertex::crossProduct( a - b, c - b ) + + TMesh::Vertex::crossProduct( b - c, d - c ) + + TMesh::Vertex::crossProduct( c - d, a - d )).norm(); + } + + template < class TFaceBase, class TMesh > + geoid_t + GenericQuadrilateral__< TFaceBase, TMesh >::getNumberOfVertices() const + { + return 4; + } + + template < class TFaceBase, class TMesh > + const typename TMesh::Vertex& + GenericQuadrilateral__< TFaceBase, TMesh >::getA() const + { + return FaceVertexCache< TMesh >::Get( this, 0 ); + } + + template < class TFaceBase, class TMesh > + const typename TMesh::Vertex& + GenericQuadrilateral__< TFaceBase, TMesh >::getB() const + { + return FaceVertexCache< TMesh >::Get( this, 1 ); + } + + template < class TFaceBase, class TMesh > + const typename TMesh::Vertex& + GenericQuadrilateral__< TFaceBase, TMesh >::getC() const + { + return FaceVertexCache< TMesh >::Get( this, 2 ); + } + + template < class TFaceBase, class TMesh > + const typename TMesh::Vertex& + GenericQuadrilateral__< TFaceBase, TMesh >::getD() const + { + return FaceVertexCache< TMesh >::Get( this, 3 ); + } + } + + template < class TMesh > + Quadrilateral< TMesh >::Quadrilateral( + const typename TMesh::HalfEdge& halfedge ) + : priv::GenericQuadrilateral__< CommonFaceBase__< TMesh >, TMesh >( + halfedge ) + {} + + template < class TMesh > + RQuadrilateral< TMesh >::RQuadrilateral( + const typename TMesh::HalfEdge& halfedge, geoid_t id ) + : priv::GenericQuadrilateral__< RFace< TMesh >, TMesh >(halfedge,id) + {} + + template < class TMesh > + double + RQuadrilateral< TMesh >::computeArea() const + { + return GenericQuadrilateral::computeArea(); + } + + template < class TMesh > + geoid_t + RQuadrilateral< TMesh >::getNumberOfVertices() const + { + return GenericQuadrilateral::getNumberOfVertices(); + } + + template < class TMesh > + dispatchId_t + RQuadrilateral< TMesh >::getDispatchId() const + { + // TODO: Implement or remove. + return -1; + } + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Quadrilateral_tmpl.hpp b/src/bem3d/src/boundary_mesh/face/Quadrilateral_tmpl.hpp new file mode 100644 index 0000000..0b89f4e --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Quadrilateral_tmpl.hpp @@ -0,0 +1,8 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_QUADRILATERAL_TMPL_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_QUADRILATERAL_TMPL_HPP_GUARD_ + +#include "Quadrilateral.hpp" +#include "Quadrilateral_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Triangle.hpp b/src/bem3d/src/boundary_mesh/face/Triangle.hpp new file mode 100644 index 0000000..75ca88f --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Triangle.hpp @@ -0,0 +1,60 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_TRIANGLE_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_TRIANGLE_HPP_GUARD_ + +#include "../../generic/BaseTypes.hpp" + +namespace boundary_mesh +{ + namespace face + { + namespace priv + { + template < class TFaceBase, class TMesh > + class GenericTriangle__ + : public TFaceBase + { + public: + static bool is( + const typename std::vector< const typename TMesh::Vertex* > + vertices); + + GenericTriangle__( const typename TMesh::HalfEdge& halfedge ); + GenericTriangle__( const typename TMesh::HalfEdge& halfedge, + geoid_t id ); + double computeArea() const; + geoid_t getNumberOfVertices() const; + const typename TMesh::Vertex& getA() const; + const typename TMesh::Vertex& getB() const; + const typename TMesh::Vertex& getC() const; + }; + } + + template < class TMesh > + class Triangle + : public priv::GenericTriangle__< CommonFaceBase__< TMesh >, TMesh > + { + public: + Triangle( const typename TMesh::HalfEdge& halfedge ); + }; + + template < class TMesh > + class RTriangle + : public priv::GenericTriangle__< RFace< TMesh >, TMesh > + { + typedef priv::GenericTriangle__< RFace< TMesh >, TMesh > GenericTriangle; + + public: + RTriangle( const typename TMesh::HalfEdge& halfedge, geoid_t id ); + virtual double computeArea() const; + virtual geoid_t getNumberOfVertices() const; + virtual dispatchId_t getDispatchId() const; + }; + + template < class TMesh > + class NoTriangle : public generic::NullType + {}; + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Triangle_tmpl.cpp b/src/bem3d/src/boundary_mesh/face/Triangle_tmpl.cpp new file mode 100644 index 0000000..9808a27 --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Triangle_tmpl.cpp @@ -0,0 +1,106 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_TRIANGLE_TMPL_CPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_TRIANGLE_TMPL_CPP_GUARD_ + +#include "Triangle_tmpl.hpp" +#include "../Face.hpp" + +namespace boundary_mesh +{ + namespace face + { + namespace priv + { + template < class TFaceBase, class TMesh > + bool + GenericTriangle__< TFaceBase, TMesh >::is( + const typename std::vector< const typename TMesh::Vertex* > vert) + { + return vert.size() == 3; + } + + template < class TFaceBase, class TMesh > + GenericTriangle__< TFaceBase, TMesh >::GenericTriangle__( + const typename TMesh::HalfEdge& halfedge) + : TFaceBase( halfedge ) + {} + + template < class TFaceBase, class TMesh > + GenericTriangle__< TFaceBase, TMesh >::GenericTriangle__( + const typename TMesh::HalfEdge& halfedge, geoid_t id) + : TFaceBase( halfedge, id ) + {} + + template < class TFaceBase, class TMesh > + double + GenericTriangle__< TFaceBase, TMesh >::computeArea() const + { + return .5 * (TMesh::Vertex::crossProduct( + getC() - getA(), getB() - getA() ).norm()); + } + + template < class TFaceBase, class TMesh > + geoid_t + GenericTriangle__< TFaceBase, TMesh >::getNumberOfVertices() const + { + return 3; + } + + template < class TFaceBase, class TMesh > + const typename TMesh::Vertex& + GenericTriangle__< TFaceBase, TMesh >::getA() const + { + return FaceVertexCache< TMesh >::Get( this, 0 ); + } + + template < class TFaceBase, class TMesh > + const typename TMesh::Vertex& + GenericTriangle__< TFaceBase, TMesh >::getB() const + { + return FaceVertexCache< TMesh >::Get( this, 1 ); + } + + template < class TFaceBase, class TMesh > + const typename TMesh::Vertex& + GenericTriangle__< TFaceBase, TMesh >::getC() const + { + return FaceVertexCache< TMesh >::Get( this, 2 ); + } + } + + template < class TMesh > + Triangle< TMesh >::Triangle( const typename TMesh::HalfEdge& halfedge ) + : priv::GenericTriangle__< CommonFaceBase__< TMesh >, TMesh >( halfedge ) + {} + + template < class TMesh > + RTriangle< TMesh >::RTriangle( const typename TMesh::HalfEdge& halfedge, + geoid_t id) + : priv::GenericTriangle__< RFace< TMesh >, TMesh >( halfedge, id ) + {} + + template < class TMesh > + double + RTriangle< TMesh >::computeArea() const + { + return GenericTriangle::computeArea(); + } + + template < class TMesh > + geoid_t + RTriangle< TMesh >::getNumberOfVertices() const + { + return GenericTriangle::getNumberOfVertices(); + } + + template < class TMesh > + dispatchId_t + RTriangle< TMesh >::getDispatchId() const + { + // TODO: Either remove this function or implement it. + return -1; + } + } +} + +#endif + diff --git a/src/bem3d/src/boundary_mesh/face/Triangle_tmpl.hpp b/src/bem3d/src/boundary_mesh/face/Triangle_tmpl.hpp new file mode 100644 index 0000000..545f85a --- /dev/null +++ b/src/bem3d/src/boundary_mesh/face/Triangle_tmpl.hpp @@ -0,0 +1,8 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_FACE_TRIANGLE_TMPL_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_FACE_TRIANGLE_TMPL_HPP_GUARD_ + +#include "Triangle.hpp" +#include "Triangle_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/boundary_mesh/generic/AbstractIteratorBase.hpp b/src/bem3d/src/boundary_mesh/generic/AbstractIteratorBase.hpp deleted file mode 100644 index 88289ab..0000000 --- a/src/bem3d/src/boundary_mesh/generic/AbstractIteratorBase.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef MESH_GENERIC_DATA_BASED_ITERATOR_HPP_GUARD_ -#define MESH_GENERIC_DATA_BASED_ITERATOR_HPP_GUARD_ - -#include - -namespace boundary_mesh { -namespace generic { - template < class TType, class THelper > - class AbstractIteratorBase : public std::iterator< - std::input_iterator_tag, TType > - { - public: - AbstractIteratorBase(THelper helper); - AbstractIteratorBase(const AbstractIteratorBase& copy); - AbstractIteratorBase(); - - bool operator==(const AbstractIteratorBase& rhs) const; - bool operator!=(const AbstractIteratorBase& rhs) const; - AbstractIteratorBase< TType, THelper >& operator++(); - const TType& operator*() const; - const TType* operator->() const; - - protected: - THelper helper_; - }; -} -} - -#include "AbstractIteratorBase.cpp" - -#endif - diff --git a/src/bem3d/src/boundary_mesh/generic/Marking.cpp b/src/bem3d/src/boundary_mesh/generic/Marking.cpp deleted file mode 100644 index b133833..0000000 --- a/src/bem3d/src/boundary_mesh/generic/Marking.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "Marking.hpp" - -template < Face, Edge, Vertex > -mesh::generic::Marking< Face, Edge, Vertex >::Marking( - Vertex& v1, Vertex& v2, Vertex& v3) - : Face(v1, v2, v3), marked(std::vector(32)) -{ -} - -template < Face, Edge, Vertex > -void -mesh::generic::Marking< Face, Edge, Vertex >::mark( - Edge& edge, int maximum_number_of_hanging_nodes) -{ - bool found = false; - unsigned int i = 0; - Face::EdgeIterator it = begin(); - - for (i = 0, it; it != end(); ++i, ++it) - { - if (&*it == edge) - { - found = true; - marked[i] = true; - break; - } - } - - if (! found) - { - #if 0 - throw exception - #endif - } - - if (isTriangle()) - marked[0] = true; - else if (isRectangle()) - marked[(i+2)%4] = true; -} - diff --git a/src/bem3d/src/boundary_mesh/generic/Marking.hpp b/src/bem3d/src/boundary_mesh/generic/Marking.hpp deleted file mode 100644 index 01fc291..0000000 --- a/src/bem3d/src/boundary_mesh/generic/Marking.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef MARKING_HPP_GUARD_ -#define MARKING_HPP_GUARD_ - -// This is an implementation of a marking algorithm that automatically closes -// the mesh in a way that guarantees the following two conditions: -// 1.) The marked face has not more than a certain number of hanging nodes. -// 2.) If any edge is marked within a triangle, the longest edge is marked -// as well -// 3.) If an edge is marked within a face with 4 edges, the opposite edge -// is marked as well. -namespace mesh -{ -namespace generic -{ - template < Face, Edge, Vertex > - class Marking : public Face - { - public: - Marking(Vertex&, Vertex&, Vertex&); - void mark(Edge&, int maximum_number_of_hanging_nodes = -1); - void unmark(Edge&, int maximum_number_of_hanging_nodes = -1); - bool isMarked(Edge&) const; - bool isMarked(unsigned int id); - - private: - std::vector marked; - }; -} -} - -#endif - diff --git a/src/bem3d/src/boundary_mesh/layer/Marker.cpp b/src/bem3d/src/boundary_mesh/layer/Marker.cpp deleted file mode 100644 index 59a5c0c..0000000 --- a/src/bem3d/src/boundary_mesh/layer/Marker.cpp +++ /dev/null @@ -1,168 +0,0 @@ -#ifdef MESH_LAYER_MARKER_CPP_GUARD_ -#error -#else -#define MESH_LAYER_MARKER_CPP_GUARD_ - -#include - -namespace boundary_mesh { -namespace layer { - - template < class TMesh > - Marker< TMesh >::Marker(const TMesh& mesh) - : mesh_(mesh), - marked_(std::vector(2 * TMesh::traits::maximumNumberOfFaceVertices * - mesh.getNumberOfFaces(), false)) - { - } - - template < class TMesh > - void - Marker< TMesh >::mark( const typename TMesh::traits::Face& face, - const typename TMesh::traits::HalfEdge& edge ) - { - Marker< TMesh >::mark( face, Marker< TMesh >::getEdgeId( face, edge ) ); - } - - template < class TMesh > - void - Marker< TMesh >::mark( const typename TMesh::traits::Face& face, - unsigned int edgeId) - { - assert( edgeId >= 0 && - edgeId < TMesh::traits::maximumNumberOfFaceVertices ); - unsigned int idx = 2 * TMesh::traits::maximumNumberOfFaceVertices * - mesh_.getFaceId( face ) + edgeId; - assert( idx >= 0 && idx < marked_.size() ); - marked_[ idx ] = true; - } - - template < class TMesh > - bool - Marker< TMesh >::isMarked( const typename TMesh::traits::Face& face, - const typename TMesh::traits::HalfEdge& edge ) const - { - return Marker< TMesh >::isMarked( face, - Marker< TMesh >::getEdgeId( face, edge ) ); - } - - template < class TMesh > - bool - Marker< TMesh >::isMarked( const typename TMesh::traits::Face& face, - unsigned int edgeId ) const - { - assert( edgeId >= 0 && - edgeId < TMesh::traits::maximumNumberOfFaceVertices ); - unsigned int idx = 2 * TMesh::traits::maximumNumberOfFaceVertices * - mesh_.getFaceId( face ) + edgeId; - assert( idx >= 0 && idx < marked_.size() ); - return marked_[ idx ]; - } - - template < class TMesh > - unsigned int - Marker< TMesh >::getEdgeId( const typename TMesh::traits::Face& face, - const typename TMesh::traits::HalfEdge& edge ) const - { - unsigned int i = 0; - #ifndef NDEBUG - bool found = false; - #endif - for (typename TMesh::traits::Face::ConstEdgeIterator - edgeIt = face.begin_e(); edgeIt != face.end_e(); ++edgeIt, ++i) - { - if (&(*edgeIt) == &edge) - { - #ifndef NDEBUG - found = true; - #endif - break; - } - } - assert(found); - return i; - } - - template < class TMesh > - void - Marker< TMesh >::close(unsigned int allowedNumberOfHangingNodes) - { - assert(allowedNumberOfHangingNodes <= - TMesh::traits::maximumNumberOfHangingNodes); - - for (typename TMesh::ConstFaceIterator faceIt = mesh_.begin_f(); - faceIt != mesh_.end_f(); ++faceIt) - { - _close( allowedNumberOfHangingNodes, *faceIt ); - } - } - - template < class TMesh > - void - Marker< TMesh >::_close( unsigned int allowedNumberOfHangingNodes, - const typename TMesh::traits::Face& face ) - { - unsigned int numberOfEdges = 0; - bool anyMarked = false; - for (typename TMesh::traits::Face::ConstEdgeIterator - edgeIt = face.begin_e(); edgeIt != face.end_e(); ++edgeIt) - { - if (Marker< TMesh >::isMarked( face, *edgeIt )) - { - _close( allowedNumberOfHangingNodes, face, *edgeIt ); - anyMarked = true; - } - ++numberOfEdges; - } - - if (numberOfEdges == 3 && anyMarked && - Marker< TMesh >::isMarked( face, 0 ) == false) - { - Marker< TMesh >::mark( face, 0 ); - _close( allowedNumberOfHangingNodes, face, *(face.begin_e()) ); - } - else if (numberOfEdges % 2 == 0) - { - for (unsigned int i = 0; i < numberOfEdges; ++i) - { - unsigned int opposite = (i + (numberOfEdges / 2)) % numberOfEdges; - if ( Marker< TMesh >::isMarked( face, i ) && - not Marker< TMesh >::isMarked( face, opposite ) ) - { - Marker< TMesh >::mark( face, opposite ); - typename TMesh::traits::Face::ConstEdgeIterator edgeIt = - face.begin_e(); - for (unsigned int j = 0; j < opposite; ++j) - { - ++edgeIt; - } - Marker< TMesh >::_close( allowedNumberOfHangingNodes, face, *edgeIt ); - } - } - } - } - - template < class TMesh > - void - Marker< TMesh >::_close(unsigned int allowedNumberOfHangingNodes, - const typename TMesh::traits::Face& face, - const typename TMesh::traits::HalfEdge& edge) - { - const typename TMesh::traits::HalfEdge* opEdge = - edge.getOppositeEdge(); - if (opEdge != 0) - { - if (opEdge->getNumberOfHangingNodes() >= - allowedNumberOfHangingNodes && - Marker< TMesh >::isMarked(opEdge->getFace(), *opEdge) == false ) - { - Marker< TMesh >::mark(opEdge->getFace(), *opEdge); - Marker< TMesh >::_close(allowedNumberOfHangingNodes, opEdge->getFace()); - } - } - } -} -} - -#endif - diff --git a/src/bem3d/src/boundary_mesh/layer/Marker.hpp b/src/bem3d/src/boundary_mesh/layer/Marker.hpp deleted file mode 100644 index 652f178..0000000 --- a/src/bem3d/src/boundary_mesh/layer/Marker.hpp +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef MESH_LAYER_MARKER_HPP_GUARD_ -#define MESH_LAYER_MARKER_HPP_GUARD_ - -#include - -namespace boundary_mesh { -namespace layer { - template < class TMesh > - class Marker - { - public: - Marker(const TMesh& mesh); - void mark(const typename TMesh::traits::Face& face, - const typename TMesh::traits::HalfEdge& edge); - void mark(const typename TMesh::traits::Face& face, - unsigned int edgeId); - bool isMarked(const typename TMesh::traits::Face& face, - const typename TMesh::traits::HalfEdge& edge) const; - bool isMarked(const typename TMesh::traits::Face& face, - unsigned int edgeId) const; - void close(unsigned int allowedNumberOfHangingNodes = 0); - - private: - const TMesh& mesh_; - std::vector marked_; - - Marker(); - unsigned int getEdgeId( const typename TMesh::traits::Face& face, - const typename TMesh::traits::HalfEdge& edge ) const; - void _close( unsigned int allowedNumberOfHangingNodes, - const typename TMesh::traits::Face& face); - void _close( unsigned int allowedNumberOfHangingNodes, - const typename TMesh::traits::Face& face, - const typename TMesh::traits::HalfEdge& edge ); - }; -} -} - -#include "Marker.cpp" - -#endif - diff --git a/src/bem3d/src/boundary_mesh/mesh_compare.cpp b/src/bem3d/src/boundary_mesh/mesh_compare.cpp index 9093023..614e9cc 100644 --- a/src/bem3d/src/boundary_mesh/mesh_compare.cpp +++ b/src/bem3d/src/boundary_mesh/mesh_compare.cpp @@ -35,8 +35,8 @@ #include "HalfEdge.hpp" #include "Vertex.hpp" -#include "mixin/LoadingObj.hpp" -#include "mixin/ExportingObj.hpp" +#include "LoadingObj.hpp" +#include "ExportingObj.hpp" #include "mixin/Comparing.hpp" typedef boundary_mesh::mixin::LoadingObj< diff --git a/src/bem3d/src/boundary_mesh/mixin/ExportingObj.cpp b/src/bem3d/src/boundary_mesh/mixin/ExportingObj.cpp deleted file mode 100644 index 5743270..0000000 --- a/src/bem3d/src/boundary_mesh/mixin/ExportingObj.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#ifdef HILBERT3D_BOUNDARY_MESH_MIXIN_EXPORTING_OBJ_CPP_GUARD_ -#error This file must not be compiled or included directly. Include the \ - appropiate header file instead. -#else -#define HILBERT3D_BOUNDARY_MESH_MIXIN_EXPORTING_OBJ_CPP_GUARD_ - -#include "ExportingObj.hpp" - -#include -#include - -namespace boundary_mesh { -namespace mixin { - template < class TMesh > - void - ExportingObj< TMesh >::exportTo(const char* file_name) const - { - std::ofstream output_file(file_name); - - for (typename TMesh::ConstVertexIterator vertex_it = TMesh::begin_v(); - vertex_it != TMesh::end_v(); ++vertex_it) - { - const typename traits::Vertex& v = *vertex_it; - output_file << "v " << v[0] << " " << v[1] << " " << v[2] << std::endl; - } - - for (typename TMesh::ConstFaceIterator face_it = TMesh::begin_f(); - face_it != TMesh::end_f(); ++face_it) - { - const typename traits::Face& f = *face_it; - output_file << "f "; - for (typename traits::Face::ConstVertexIterator vertex_it = f.begin_v(); - vertex_it != f.end_v(); ++vertex_it) - { - output_file << TMesh::getVertexId(*vertex_it)+1 << " "; - } - output_file << std::endl; - } - } - - template < class TMesh > - void - ExportingObj< TMesh >::exportTo(std::string file_name) const - { - ExportingObj< TMesh >::exportTo(file_name.c_str()); - } -} -} - -#endif - diff --git a/src/bem3d/src/boundary_mesh/mixin/ExportingObj.hpp b/src/bem3d/src/boundary_mesh/mixin/ExportingObj.hpp deleted file mode 100644 index 3e04240..0000000 --- a/src/bem3d/src/boundary_mesh/mixin/ExportingObj.hpp +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef HILBERT3D_BOUNDARY_MESH_MIXIN_EXPORTING_OBJ_HPP_GUARD_ -#define HILBERT3D_BOUNDARY_MESH_MIXIN_EXPORTING_OBJ_HPP_GUARD_ - -#include - -#include "MeshMixin.hpp" - -namespace boundary_mesh -{ - namespace mixin - { - template < class TMesh > - class ExportingObj : public TMesh - { - HILBERT3D_MESH_MIXIN( ExportingObj, TMesh ) - - public: - void exportTo(const char* file_name) const; - void exportTo(std::string file_name) const; - }; - } -} - -#include "ExportingObj.cpp" - -#endif - diff --git a/src/bem3d/src/boundary_mesh/mixin/LoadingObj.cpp b/src/bem3d/src/boundary_mesh/mixin/LoadingObj.cpp deleted file mode 100644 index bf77b6b..0000000 --- a/src/bem3d/src/boundary_mesh/mixin/LoadingObj.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include "LoadingObj.hpp" - -#include -#include -#include -#include -#include "../../exception.hpp" - -#include - -namespace boundary_mesh { -namespace mixin { - -/* Please note, that the vertex_line regex specifially checks that vertices - * are three-dimensional. It is not sufficient to modify this constant in - * order to switch to another dimension! - */ -static const unsigned int vertexDimension = 3; - -template < class TMesh > -LoadingObj< TMesh >::LoadingObj(const char* file_name) - : TMesh() -{ - LoadingObj< TMesh >::init(std::string(file_name)); -} - -template < class TMesh > -LoadingObj< TMesh >::LoadingObj(std::string file_name) -{ - LoadingObj< TMesh >::init(file_name); -} - -template < class TMesh > -void -LoadingObj< TMesh >::init(std::string fileName) -{ - static const boost::regex - vertex_line("v\\s+(-?\\d+(?:\\.\\d+)?)\\s+(-?\\d+(?:\\.\\d+)?)\\s+(-?\\d+(?:\\.\\d+)?)\\s*", - boost::regex::perl); - static const boost::regex - face_line("f\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s*", - boost::regex::perl); - static const boost::regex empty_line("\\s*|\\s*\\#.*", - boost::regex::perl); - - std::ifstream file(fileName.c_str()); - - if ( file.is_open() == false ) - { - throw exception::FileIO(fileName, exception::FileIO::Reading); - } - - struct TMesh::Size size_info; - size_info.vertices = 0; - size_info.faces = 0; - size_info.edges = 0; - boost::smatch what; - std::string line; - - while ( file.good() ) - { - std::getline( file, line ); - - if ( line[0] == 'v' ) - size_info.vertices += 1; - else if ( line[0] == 'f' && boost::regex_match( line, what, face_line ) ) - { - size_info.faces += 1; - size_info.edges += what.size(); - } - } - - file.clear(); - file.seekg( 0, std::ios_base::beg ); - - reserve( size_info ); - - unsigned int line_number = 0; - - while ( file.good() ) - { - std::getline( file, line ); - ++line_number; - - if ( line[0] == 'v' && boost::regex_match( line, what, vertex_line ) ) - { - double coordinates[vertexDimension]; - assert(what.size() == vertexDimension+1); - for (unsigned int i = 0; i < vertexDimension; ++i) - { - std::istringstream istr( what[i+1] ); - istr >> coordinates[i]; - } - TMesh::addVertex(typename TMesh::traits::UnlinkedVertex(coordinates)); - } - else if ( line[0] == 'f' && boost::regex_match( line, what, face_line ) ) - { - unsigned int patterns_matched = what.size(); - assert(patterns_matched > 3); - unsigned int vertex_id[patterns_matched-1]; - for (unsigned int i = 1; i < patterns_matched; ++i) - { - std::istringstream istr( what[i] ); - istr >> vertex_id[i-1]; - vertex_id[i-1] -= 1; - } - - TMesh::addFace(patterns_matched - 1, vertex_id); - } - else if ( boost::regex_match( line, what, empty_line ) ) - {} - else - { - assert(0); - #if 0 - throw new mesh::exception::syntax( file_name, line_number ); - #endif - } - } - - TMesh::build_meta_data(); -} - -} -} - diff --git a/src/bem3d/src/boundary_mesh/mixin/LoadingObj.hpp b/src/bem3d/src/boundary_mesh/mixin/LoadingObj.hpp deleted file mode 100644 index 2b60fa1..0000000 --- a/src/bem3d/src/boundary_mesh/mixin/LoadingObj.hpp +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef MESH_MESHLOADER_HPP_GUARD_ -#define MESH_MESHLOADER_HPP_GUARD_ - -#include - -#include "MeshMixin.hpp" - -namespace boundary_mesh { -namespace mixin { - template < class TMesh > - class LoadingObj : public TMesh - { - HILBERT3D_MESH_MIXIN( LoadingObj, TMesh ) - - public: - LoadingObj(const char* fileName); - LoadingObj(std::string fileName); - - private: - void init(std::string fileName); - }; -} -} - -#include "LoadingObj.cpp" - -#endif - diff --git a/src/bem3d/src/boundary_mesh/mixin/RefiningAdaptivly.cpp b/src/bem3d/src/boundary_mesh/mixin/RefiningAdaptivly.cpp index 72a03de..1ff97a6 100644 --- a/src/bem3d/src/boundary_mesh/mixin/RefiningAdaptivly.cpp +++ b/src/bem3d/src/boundary_mesh/mixin/RefiningAdaptivly.cpp @@ -7,7 +7,7 @@ #include #include "RefiningAdaptivly.hpp" -#include "../layer/Marker.hpp" +#include "../Marker.hpp" #include "../layer/RefinementData.hpp" namespace boundary_mesh diff --git a/src/bem3d/src/boundary_mesh/mixin/RefiningUniformly.cpp b/src/bem3d/src/boundary_mesh/mixin/RefiningUniformly.cpp deleted file mode 100644 index d00db3f..0000000 --- a/src/bem3d/src/boundary_mesh/mixin/RefiningUniformly.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include "RefiningUniformly.hpp" - -#include - -namespace boundary_mesh -{ - namespace mixin - { - template < class TMesh > - RefiningUniformly< TMesh > - RefiningUniformly< TMesh >::refineUniform() const - { - typename TMesh::Size new_size; - new_size.vertices = TMesh::getNumberOfVertices() * 5; - new_size.faces = TMesh::getNumberOfFaces() * 4; - new_size.edges = TMesh::getNumberOfEdges() * 4; - - RefiningUniformly< TMesh > new_mesh( new_size ); - - std::vector< unsigned int > new_vertices; - new_vertices.resize( TMesh::getNumberOfEdges() ); - for (unsigned int i = 0; i < TMesh::getNumberOfEdges(); ++i) - { - new_vertices[i] = 0; - } - - for (typename TMesh::ConstVertexIterator it = TMesh::begin_v(); - it != TMesh::end_v(); ++it) - { - new_mesh.addVertex(*it); - } - - for (typename TMesh::ConstFaceIterator face_it = TMesh::begin_f(); - face_it != TMesh::end_f(); ++face_it) - { - unsigned int number_of_face_edges = 0; - unsigned int old_ids[4]; - unsigned int new_ids[5]; - - for (typename traits::Face::ConstEdgeIterator - edge_it = face_it->begin_e(); - edge_it != face_it->end_e(); ++edge_it) - { - old_ids[number_of_face_edges] - = TMesh::getVertexId( (*edge_it).getStartVertex() ); - if (new_vertices[ TMesh::getEdgeId( *edge_it ) ] != 0) - { - new_ids[number_of_face_edges] - = new_vertices[ TMesh::getEdgeId( *edge_it ) ]; - } - else - { - unsigned int id = new_mesh.addVertex( - 0.5 * ((*edge_it).getStartVertex() + (*edge_it).getEndVertex())); - new_vertices[ TMesh::getEdgeId( *edge_it ) ] = id; - if ( ((*edge_it).getOppositeEdge()) != 0) - { - new_vertices[ - TMesh::getEdgeId( *((*edge_it).getOppositeEdge()) ) ] = id; - } - new_ids[number_of_face_edges] = id; - } - ++number_of_face_edges; - assert(number_of_face_edges <= 4); - } - - if (number_of_face_edges == 3) - { - new_mesh.addFace(old_ids[0], new_ids[0], new_ids[2]); - new_mesh.addFace(new_ids[0], old_ids[1], new_ids[1]); - new_mesh.addFace(new_ids[0], new_ids[1], old_ids[2]); - new_mesh.addFace(new_ids[0], old_ids[2], new_ids[2]); - } - else if (number_of_face_edges == 4) - { - typename traits::Face::ConstVertexIterator vertex_it = - (*face_it).begin_v(); - ++(++vertex_it); - new_ids[4] = new_mesh.addVertex( - 0.5 * (*vertex_it + *(*face_it).begin_v()) ); - new_mesh.addFace(old_ids[0], new_ids[0], new_ids[4], new_ids[3]); - new_mesh.addFace(new_ids[0], old_ids[1], new_ids[1], new_ids[4]); - new_mesh.addFace(new_ids[1], old_ids[2], new_ids[2], new_ids[4]); - new_mesh.addFace(new_ids[2], old_ids[3], new_ids[3], new_ids[4]); - } - else - { - assert(0); // XXX: Not implemented yet, traits, etc. - } - } - - new_mesh.build_meta_data(); - return new_mesh; - } - } -} - diff --git a/src/bem3d/src/boundary_mesh/mixin/RefiningUniformly.hpp b/src/bem3d/src/boundary_mesh/mixin/RefiningUniformly.hpp deleted file mode 100644 index 5da1c88..0000000 --- a/src/bem3d/src/boundary_mesh/mixin/RefiningUniformly.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef MESH_LAYER_MESH_UNIFORM_REFINEMENT_HPP_GUARD_ -#define MESH_LAYER_MESH_UNIFORM_REFINEMENT_HPP_GUARD_ - -#include "MeshMixin.hpp" - -namespace boundary_mesh -{ - namespace mixin - { - template < class TMesh > - class RefiningUniformly : public TMesh - { - HILBERT3D_MESH_MIXIN(RefiningUniformly, TMesh); - - public: - RefiningUniformly< TMesh > refineUniform() const; - }; - } -} - -#include "RefiningUniformly.cpp" - -#endif - diff --git a/src/bem3d/src/boundary_mesh/t.cpp b/src/bem3d/src/boundary_mesh/t.cpp index 4358401..c654171 100644 --- a/src/bem3d/src/boundary_mesh/t.cpp +++ b/src/bem3d/src/boundary_mesh/t.cpp @@ -1,35 +1,22 @@ -#include "Mesh.hpp" -#include "mixin/LoadingObj.hpp" -#include "mixin/ExportingObj.hpp" -#include "mixin/RefiningAdaptivly.hpp" -#include "mixin/RefiningUniformly.hpp" -#include "layer/Marker.hpp" +#include "FlexibleMesh.hpp" + +#include +#include using namespace boundary_mesh; -typedef mixin::LoadingObj< - mixin::ExportingObj< - mixin::RefiningAdaptivly< - mixin::RefiningUniformly< - Mesh<> > > > > - ObjMesh; int main() { - ObjMesh::LoadingObj m("test.obj"); - layer::Marker< Mesh<> > marker(m); - marker.mark( *(m.begin_f()), 2 ); - marker.close(1); - clock_t commence, complete; - commence = clock(); - ObjMesh refined = m.refineAdaptivly( marker ); - complete = clock(); - - long lTime = (complete-commence); - std::cerr << "Time for refinement: " - << lTime * 1000.0 / CLOCKS_PER_SEC << std::endl; - - refined.exportTo("output.obj"); - + try + { + FlexibleMesh m = FlexibleMesh::Alg::loadFromObj( "head.obj" ); + FlexibleMesh refined = FlexibleMesh::Alg::refineUniformly( m ); + FlexibleMesh::Alg::saveAsObj( refined, "refined_head.obj" ); + } + catch (std::runtime_error& error) + { + std::cerr << error.what(); + } return 0; } diff --git a/src/bem3d/src/boundary_mesh/testhilbertmesh b/src/bem3d/src/boundary_mesh/testhilbertmesh new file mode 100755 index 0000000000000000000000000000000000000000..51b8ad865cc8f68da30537b42ad4f459db86a9ae GIT binary patch literal 1283424 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%0DCXE1pt2j~)R`YDS4zp3$G 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

x4ikc*MrfMR8CRS!G9ObG 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 ZGEl19!%5sT*?rC=MA + +namespace boundary_mesh { + typedef unsigned int geoid_t; + + const geoid_t geoid_t_max = std::numeric_limits< unsigned int >::max(); +} + +#endif + diff --git a/src/bem3d/src/config.h b/src/bem3d/src/config.h new file mode 100644 index 0000000..c4f8323 --- /dev/null +++ b/src/bem3d/src/config.h @@ -0,0 +1,84 @@ +/* src/config.h. Generated from config.h.in by configure. */ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to dummy `main' function (if any) required to link to the Fortran + libraries. */ +/* #undef F77_DUMMY_MAIN */ + +/* Define if F77 and FC dummy `main' functions are identical. */ +/* #undef FC_DUMMY_MAIN_EQ_F77 */ + +/* Define if you have a BLAS library. */ +#define HAVE_BLAS 1 + +/* define if the Boost library is available */ +#define HAVE_BOOST /**/ + +/* define if the Boost::Regex library is available */ +#define HAVE_BOOST_REGEX /**/ + +/* Define if HLib library is available */ +#define HAVE_HLIB /**/ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if you have LAPACK library. */ +#define HAVE_LAPACK 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if stdbool.h conforms to C99. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +/* Name of package */ +#define PACKAGE "hilbert3d" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "markus.mayr@tuwien.ac.at" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "Hilbert 3D" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "Hilbert 3D 0.1.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "hilbert3d" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "http://83.169.35.184/cgi-bin/gitweb?p=bem3d.git" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "0.1.0" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "0.1.0" diff --git a/src/bem3d/src/generic/BaseTypes.hpp b/src/bem3d/src/generic/BaseTypes.hpp new file mode 100644 index 0000000..dde4540 --- /dev/null +++ b/src/bem3d/src/generic/BaseTypes.hpp @@ -0,0 +1,24 @@ +#ifndef HILBERT3D_GENERIC_BASETYPES_HPP_GUARD_ +#define HILBERT3D_GENERIC_BASETYPES_HPP_GUARD_ + +namespace generic +{ + struct NullType; + + struct NullType + { + static const bool isNullType = true; + }; + + struct EmptyType + {}; + + template + struct WorkAround + { + WorkAround(int) {} + }; +} + +#endif + diff --git a/src/bem3d/src/generic/GenericVector.cpp b/src/bem3d/src/generic/GenericVector.cpp index 39f7ebe..a05b3e6 100644 --- a/src/bem3d/src/generic/GenericVector.cpp +++ b/src/bem3d/src/generic/GenericVector.cpp @@ -21,16 +21,4 @@ namespace generic { template <> const float BaseTypeTraits< float >::initialValue = 0.; -#warning BADHACK -//template < class BaseType, class Traits > - Vector3D< double, generic::BaseTypeTraits< double > > -cross_product( const Vector3D< double, generic::BaseTypeTraits< double > >& lhs, - const Vector3D< double, generic::BaseTypeTraits< double > >& rhs ) -{ - return Vector3D< double, generic::BaseTypeTraits< double > >( - lhs[1] * rhs[2] - lhs[2] * rhs[1], - lhs[2] * rhs[0] - lhs[0] * rhs[2], - lhs[0] * rhs[1] - lhs[1] * rhs[0]); -} - } diff --git a/src/bem3d/src/generic/GenericVector.hpp b/src/bem3d/src/generic/GenericVector.hpp index c280ac7..e758b49 100644 --- a/src/bem3d/src/generic/GenericVector.hpp +++ b/src/bem3d/src/generic/GenericVector.hpp @@ -1,6 +1,8 @@ #ifndef HILBERT3D_GENERIC_GENERIC_VECTOR_HPP_GUARD_ #define HILBERT3D_GENERIC_GENERIC_VECTOR_HPP_GUARD_ +#include + namespace generic { static const unsigned int genericVectorDefaultDim = 3; @@ -44,7 +46,7 @@ namespace generic { BaseType norm() const; - static const unsigned int getDimension(); + static unsigned int getDimension(); private: BaseType coeff[DIM]; @@ -58,17 +60,10 @@ namespace generic { Vector3D(BaseType x, BaseType y, BaseType z); Vector3D(const BaseType coeff[3]); Vector3D(const GenericVector<3, BaseType, Traits >& copy); + + static Vector3D crossProduct( const Vector3D& lhs, const Vector3D& rhs ); }; -#warning BADHACK -/* template < class BaseType, class Traits > - Vector3D< BaseType, Traits > - cross_product( const Vector3D< BaseType, Traits >& lhs, - const Vector3D< BaseType, Traits >& rhs ); -*/ - Vector3D< double, BaseTypeTraits< double > > - cross_product( const Vector3D< double, BaseTypeTraits< double > >& lhs, - const Vector3D< double, BaseTypeTraits< double > >& rhs); template< unsigned int DIM, class BaseType, class Traits> bool operator==(const GenericVector< DIM, BaseType, Traits >&, @@ -105,6 +100,11 @@ namespace generic { template< unsigned int DIM, class BaseType, class Traits > const GenericVector< DIM, BaseType, Traits > operator*(const BaseType, const GenericVector< DIM, BaseType, Traits >&); + + template < unsigned int DIM, class BaseType, class Traits > + std::ostream& + operator<<( std::ostream& out, + const GenericVector< DIM, BaseType, Traits >& rhs); } #include "GenericVector_tmpl.cpp" diff --git a/src/bem3d/src/generic/GenericVector_tmpl.cpp b/src/bem3d/src/generic/GenericVector_tmpl.cpp index a4b4203..13d5fa3 100644 --- a/src/bem3d/src/generic/GenericVector_tmpl.cpp +++ b/src/bem3d/src/generic/GenericVector_tmpl.cpp @@ -35,7 +35,7 @@ const BaseType & GenericVector< DIM, BaseType, Traits >::operator[](unsigned int coord) const { - assert(coord >= 0 && coord < DIM); + assert(coord < DIM); return coeff[coord]; } @@ -43,7 +43,7 @@ template < unsigned int DIM, class BaseType, class Traits > BaseType & GenericVector< DIM, BaseType, Traits >::operator[](unsigned int coord) { - assert(coord >= 0 && coord < DIM); + assert(coord < DIM); return coeff[coord]; } @@ -140,7 +140,7 @@ GenericVector< DIM, BaseType, Traits >::norm() const } template < unsigned int DIM, class BaseType, class Traits > -const unsigned int +unsigned int GenericVector< DIM, BaseType, Traits >::getDimension() { return DIM; @@ -170,6 +170,18 @@ Vector3D< BaseType, Traits >::Vector3D(const GenericVector<3, BaseType, Traits > : GenericVector<3, BaseType, Traits>( copy ) {} +template < class BaseType, class Traits > +Vector3D< BaseType, Traits > +Vector3D< BaseType, Traits >::crossProduct( + const Vector3D< BaseType, Traits >& lhs, + const Vector3D< BaseType, Traits >& rhs ) +{ + return Vector3D< BaseType, Traits >( + lhs[1] * rhs[2] - lhs[2] * rhs[1], + lhs[2] * rhs[0] - lhs[0] * rhs[2], + lhs[0] * rhs[1] - lhs[1] * rhs[0]); +} + template < unsigned int DIM, class BaseType, class Traits > bool operator==( @@ -265,6 +277,18 @@ operator*( return result; } +template < unsigned int DIM, class BaseType, class Traits > +std::ostream& +operator<<( std::ostream& out, + const GenericVector< DIM, BaseType, Traits >& rhs) +{ + out << "[ "; + for (unsigned int i = 0; i < DIM-1; ++i) + out << rhs[i] << ", "; + out << rhs[DIM-1] << " ]"; + return out; +} + } #endif diff --git a/src/bem3d/src/generic/Singleton.hpp b/src/bem3d/src/generic/Singleton.hpp new file mode 100644 index 0000000..af6634a --- /dev/null +++ b/src/bem3d/src/generic/Singleton.hpp @@ -0,0 +1,23 @@ +#ifndef HILBERT3D_BOUNDARY_MESH_GENERIC_SINGLETON_HPP_GUARD_ +#define HILBERT3D_BOUNDARY_MESH_GENERIC_SINGLETON_HPP_GUARD_ + +namespace generic +{ + template < class T > + class Singleton + { + public: + static T& Get(); + + protected: + Singleton(); + + private: + Singleton( const Singleton& ); + }; +} + +#include "Singleton_tmpl.cpp" + +#endif + diff --git a/src/bem3d/src/generic/Singleton_tmpl.cpp b/src/bem3d/src/generic/Singleton_tmpl.cpp new file mode 100644 index 0000000..6aaed9c --- /dev/null +++ b/src/bem3d/src/generic/Singleton_tmpl.cpp @@ -0,0 +1,17 @@ +#include "Singleton.hpp" + +namespace generic +{ + template < class T > + T& Singleton< T >::Get() + { + static T singleton; + return singleton; + } + + template < class T > + Singleton< T >::Singleton() + { + } +} + diff --git a/src/bem3d/src/generic/TypeList.hpp b/src/bem3d/src/generic/TypeList.hpp new file mode 100644 index 0000000..dea6fa0 --- /dev/null +++ b/src/bem3d/src/generic/TypeList.hpp @@ -0,0 +1,80 @@ +#ifndef HILBERT3D_GENERIC_TYPELIST_HPP_GUARD_ +#define HILBERT3D_GENERIC_TYPELIST_HPP_GUARD_ + +/** + * TODO: Lizensierung klarstellen. + * Remark: This module is strongly based on Modern C++ Design by Andrei + * Alexandrescu and the Loki library. This is clearly derived work. As + * a result, full copyright belongs to Andrei Alexandrescu. + */ + +#include "BaseTypes.hpp" + +namespace generic +{ + template < class THead, class TTail > + struct TypeList + { + typedef THead Head; + typedef TTail Tail; + }; + + namespace typelist + { + template < class TList > struct Length; + + template <> struct Length< NullType > + { + enum { value = 0 }; + }; + + template < class THead, class TTail > + struct Length< TypeList< THead, TTail > > + { + enum { value = 1 + Length< TTail >::value }; + }; + + template < class TList, class T > struct IndexOf; + + template < class T > + struct IndexOf< NullType, T > + { + enum { value = -1 }; + }; + + template < class T, class TTail > + struct IndexOf< TypeList< T, TTail >, T > + { + enum { value = 0 }; + }; + + template < class THead, class TTail, class T > + struct IndexOf< TypeList< THead, TTail >, T > + { + private: + enum { temp = IndexOf< TTail, T >::value }; + public: + enum { value = ( temp == -1 ? -1 : 1 + temp ) }; + }; + } +} + +#define HILBERT3D_TYPELIST_1(T1) \ + ::generic::TypeList< T1, ::generic::NullType > +#define HILBERT3D_TYPELIST_2(T1, T2) \ + ::generic::TypeList< T1, HILBERT3D_TYPELIST_1(T2) > +#define HILBERT3D_TYPELIST_3(T1, T2, T3) \ + ::generic::TypeList< T1, HILBERT3D_TYPELIST_2(T2,T3) > +#define HILBERT3D_TYPELIST_4(T1, T2, T3, T4) \ + ::generic::TypeList< T1, HILBERT3D_TYPELIST_3(T2,T3,T4) > +#define HILBERT3D_TYPELIST_5(T1, T2, T3, T4, T5) \ + ::generic::TypeList< T1, HILBERT3D_TYPELIST_4(T2,T3,T4,T5) > +#define HILBERT3D_TYPELIST_6(T1, T2, T3, T4, T5, T6) \ + ::generic::TypeList< T1, HILBERT3D_TYPELIST_5(T2,T3,T4,T5,T6) > +#define HILBERT3D_TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) \ + ::generic::TypeList< T1, HILBERT3D_TYPELIST_6(T2,T3,T4,T5,T6,T7) > +#define HILBERT3D_TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) \ + ::generic::TypeList< T1, HILBERT3D_TYPELIST_7(T2,T3,T4,T5,T6,T7,T8) > + +#endif + diff --git a/src/bem3d/src/hilbert.hpp b/src/bem3d/src/hilbert.hpp index 44cd760..d08d2a4 100644 --- a/src/bem3d/src/hilbert.hpp +++ b/src/bem3d/src/hilbert.hpp @@ -1,9 +1,9 @@ #ifndef HILBERT3D_HILBERT_HPP_GUARD_ #define HILBERT3D_HILBERT_HPP_GUARD_ -#include "boundary_mesh/Mesh.hpp" +#include "boundary_mesh/FlexibleMesh.hpp" -typedef boundary_mesh::Mesh<> BoundaryMesh; +typedef boundary_mesh::FlexibleMesh BoundaryMesh; #include "spaces/P0Space.hpp" // MK: warum muss dieses include nach dem typedefine in zeile 6 stehen?? sonst gehts nämlich nicht... #endif diff --git a/src/bem3d/src/laplace/.deps/testLaplace-GenericVector.Po b/src/bem3d/src/laplace/.deps/testLaplace-GenericVector.Po new file mode 100644 index 0000000..1f1a525 --- /dev/null +++ b/src/bem3d/src/laplace/.deps/testLaplace-GenericVector.Po @@ -0,0 +1,294 @@ +testLaplace-GenericVector.o: ../generic/GenericVector.cpp \ + ../generic/GenericVector.hpp /usr/include/c++/4.5/ostream \ + /usr/include/c++/4.5/ios /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/postypes.h /usr/include/c++/4.5/cwchar \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/cctype \ + /usr/include/ctype.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/c++/4.5/bits/ios_base.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/bits/locale_classes.h /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/basic_string.tcc \ + /usr/include/c++/4.5/bits/locale_classes.tcc \ + /usr/include/c++/4.5/streambuf /usr/include/c++/4.5/bits/streambuf.tcc \ + /usr/include/c++/4.5/bits/basic_ios.h \ + /usr/include/c++/4.5/bits/locale_facets.h /usr/include/c++/4.5/cwctype \ + /usr/include/wctype.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/4.5/bits/streambuf_iterator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/4.5/bits/locale_facets.tcc \ + /usr/include/c++/4.5/bits/basic_ios.tcc \ + /usr/include/c++/4.5/bits/ostream.tcc ../generic/GenericVector_tmpl.cpp \ + /usr/include/c++/4.5/cassert /usr/include/assert.h \ + /usr/include/c++/4.5/cmath /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/c++/4.5/bits/cmath.tcc + +../generic/GenericVector.hpp: + +/usr/include/c++/4.5/ostream: + +/usr/include/c++/4.5/ios: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ios_base.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/bits/locale_classes.h: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/basic_string.tcc: + +/usr/include/c++/4.5/bits/locale_classes.tcc: + +/usr/include/c++/4.5/streambuf: + +/usr/include/c++/4.5/bits/streambuf.tcc: + +/usr/include/c++/4.5/bits/basic_ios.h: + +/usr/include/c++/4.5/bits/locale_facets.h: + +/usr/include/c++/4.5/cwctype: + +/usr/include/wctype.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h: + +/usr/include/c++/4.5/bits/streambuf_iterator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h: + +/usr/include/c++/4.5/bits/locale_facets.tcc: + +/usr/include/c++/4.5/bits/basic_ios.tcc: + +/usr/include/c++/4.5/bits/ostream.tcc: + +../generic/GenericVector_tmpl.cpp: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: + +/usr/include/c++/4.5/cmath: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/c++/4.5/bits/cmath.tcc: diff --git a/src/bem3d/src/laplace/.deps/testLaplace-HLibOperator.Po b/src/bem3d/src/laplace/.deps/testLaplace-HLibOperator.Po new file mode 100644 index 0000000..f7a5243 --- /dev/null +++ b/src/bem3d/src/laplace/.deps/testLaplace-HLibOperator.Po @@ -0,0 +1,260 @@ +testLaplace-HLibOperator.o: ../HLibOperator.cpp ../HLibOperator_fwd.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc /usr/local/include/HLib/cluster.h \ + /usr/local/include/HLib/basic.h ../../src/config.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/xlocale.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/local/include/HLib/clusterbasis.h /usr/local/include/HLib/cluster.h \ + /usr/local/include/HLib/h2conversion.h \ + /usr/local/include/HLib/supermatrix.h \ + /usr/local/include/HLib/fullmatrix.h /usr/local/include/HLib/lapack.h \ + /usr/include/assert.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/local/include/HLib/blockcluster.h \ + /usr/local/include/HLib/rkmatrix.h \ + /usr/local/include/HLib/sparsematrix.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + /usr/local/include/HLib/uniformmatrix.h \ + /usr/local/include/HLib/supermatrix.h /usr/local/include/HLib/krylov.h \ + /usr/local/include/HLib/factorisations.h \ + /usr/local/include/HLib/graphics.h /usr/local/include/HLib/aca.h \ + /usr/local/include/HLib/surfacebem.h /usr/local/include/HLib/bem3d.h \ + /usr/local/include/HLib/h2virtual.h /usr/local/include/HLib/aca.h \ + /usr/local/include/HLib/quadrature2d.h \ + /usr/local/include/HLib/rkmatrix.h + +../HLibOperator_fwd.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +/usr/local/include/HLib/cluster.h: + +/usr/local/include/HLib/basic.h: + +../../src/config.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/xlocale.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/local/include/HLib/clusterbasis.h: + +/usr/local/include/HLib/cluster.h: + +/usr/local/include/HLib/h2conversion.h: + +/usr/local/include/HLib/supermatrix.h: + +/usr/local/include/HLib/fullmatrix.h: + +/usr/local/include/HLib/lapack.h: + +/usr/include/assert.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/local/include/HLib/blockcluster.h: + +/usr/local/include/HLib/rkmatrix.h: + +/usr/local/include/HLib/sparsematrix.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/local/include/HLib/uniformmatrix.h: + +/usr/local/include/HLib/supermatrix.h: + +/usr/local/include/HLib/krylov.h: + +/usr/local/include/HLib/factorisations.h: + +/usr/local/include/HLib/graphics.h: + +/usr/local/include/HLib/aca.h: + +/usr/local/include/HLib/surfacebem.h: + +/usr/local/include/HLib/bem3d.h: + +/usr/local/include/HLib/h2virtual.h: + +/usr/local/include/HLib/aca.h: + +/usr/local/include/HLib/quadrature2d.h: + +/usr/local/include/HLib/rkmatrix.h: diff --git a/src/bem3d/src/laplace/.deps/testLaplace-SimpleLayerPotential.Po b/src/bem3d/src/laplace/.deps/testLaplace-SimpleLayerPotential.Po new file mode 100644 index 0000000..aeedc5c --- /dev/null +++ b/src/bem3d/src/laplace/.deps/testLaplace-SimpleLayerPotential.Po @@ -0,0 +1,1430 @@ +testLaplace-SimpleLayerPotential.o: SimpleLayerPotential.cpp \ + SimpleLayerPotential.hpp ../hilbert.hpp \ + ../boundary_mesh/FlexibleMesh.hpp ../boundary_mesh/FaceDispatch.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc \ + ../boundary_mesh/../generic/Singleton.hpp \ + ../boundary_mesh/../generic/Singleton_tmpl.cpp \ + ../boundary_mesh/../generic/Singleton.hpp \ + ../boundary_mesh/../generic/TypeList.hpp \ + ../boundary_mesh/../generic/BaseTypes.hpp \ + ../boundary_mesh/../generic/BaseTypes.hpp \ + ../boundary_mesh/exception/DispatchIdNotSet.hpp \ + /usr/include/c++/4.5/stdexcept /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/postypes.h /usr/include/c++/4.5/cwchar \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/cctype /usr/include/ctype.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/bits/basic_string.tcc \ + ../boundary_mesh/FaceDispatch_tmpl.cpp \ + ../boundary_mesh/exception/CouldNotDispatchCall.hpp \ + /usr/include/c++/4.5/cassert /usr/include/assert.h \ + ../boundary_mesh/Face.hpp /usr/include/c++/4.5/iterator \ + /usr/include/c++/4.5/ostream /usr/include/c++/4.5/ios \ + /usr/include/c++/4.5/bits/ios_base.h \ + /usr/include/c++/4.5/bits/locale_classes.h \ + /usr/include/c++/4.5/bits/locale_classes.tcc \ + /usr/include/c++/4.5/streambuf /usr/include/c++/4.5/bits/streambuf.tcc \ + /usr/include/c++/4.5/bits/basic_ios.h \ + /usr/include/c++/4.5/bits/locale_facets.h /usr/include/c++/4.5/cwctype \ + /usr/include/wctype.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/4.5/bits/streambuf_iterator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/4.5/bits/locale_facets.tcc \ + /usr/include/c++/4.5/bits/basic_ios.tcc \ + /usr/include/c++/4.5/bits/ostream.tcc /usr/include/c++/4.5/istream \ + /usr/include/c++/4.5/bits/istream.tcc \ + /usr/include/c++/4.5/bits/stream_iterator.h ../boundary_mesh/types.hpp \ + /usr/include/c++/4.5/limits ../boundary_mesh/exception.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType.hpp \ + ../boundary_mesh/Face_tmpl.cpp /usr/include/c++/4.5/sstream \ + /usr/include/c++/4.5/bits/sstream.tcc ../boundary_mesh/HalfEdge.hpp \ + ../boundary_mesh/HalfEdge_tmpl.cpp ../boundary_mesh/Vertex.hpp \ + ../boundary_mesh/../generic/GenericVector.hpp \ + ../boundary_mesh/../generic/GenericVector_tmpl.cpp \ + ../boundary_mesh/../generic/GenericVector.hpp \ + ../boundary_mesh/Vertex_tmpl.cpp ../boundary_mesh/Mesh.hpp \ + ../boundary_mesh/MeshBuilder.hpp ../boundary_mesh/MeshBuilder_tmpl.cpp \ + /usr/include/boost/type_traits/is_pointer.hpp \ + /usr/include/boost/type_traits/is_member_pointer.hpp \ + /usr/include/boost/type_traits/config.hpp /usr/include/boost/config.hpp \ + /usr/include/boost/config/user.hpp \ + /usr/include/boost/config/select_compiler_config.hpp \ + /usr/include/boost/config/compiler/gcc.hpp \ + /usr/include/boost/config/select_stdlib_config.hpp \ + /usr/include/boost/config/no_tr1/utility.hpp \ + /usr/include/c++/4.5/utility /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/boost/config/stdlib/libstdcpp3.hpp \ + /usr/include/boost/config/select_platform_config.hpp \ + /usr/include/boost/config/platform/linux.hpp \ + /usr/include/c++/4.5/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/boost/config/posix_features.hpp \ + /usr/include/boost/config/suffix.hpp \ + /usr/include/boost/detail/workaround.hpp \ + /usr/include/boost/type_traits/is_member_function_pointer.hpp \ + /usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp \ + /usr/include/boost/type_traits/remove_cv.hpp \ + /usr/include/boost/type_traits/broken_compiler_spec.hpp \ + /usr/include/boost/mpl/aux_/lambda_support.hpp \ + /usr/include/boost/mpl/aux_/config/lambda.hpp \ + /usr/include/boost/mpl/aux_/config/ttp.hpp \ + /usr/include/boost/mpl/aux_/config/msvc.hpp \ + /usr/include/boost/mpl/aux_/config/gcc.hpp \ + /usr/include/boost/mpl/aux_/config/workaround.hpp \ + /usr/include/boost/mpl/aux_/config/ctps.hpp \ + /usr/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /usr/include/boost/type_traits/detail/type_trait_def.hpp \ + /usr/include/boost/type_traits/detail/template_arity_spec.hpp \ + /usr/include/boost/mpl/int.hpp /usr/include/boost/mpl/int_fwd.hpp \ + /usr/include/boost/mpl/aux_/adl_barrier.hpp \ + /usr/include/boost/mpl/aux_/config/adl.hpp \ + /usr/include/boost/mpl/aux_/config/intel.hpp \ + /usr/include/boost/mpl/aux_/nttp_decl.hpp \ + /usr/include/boost/mpl/aux_/config/nttp.hpp \ + /usr/include/boost/mpl/aux_/integral_wrapper.hpp \ + /usr/include/boost/mpl/integral_c_tag.hpp \ + /usr/include/boost/mpl/aux_/config/static_constant.hpp \ + /usr/include/boost/mpl/aux_/static_cast.hpp \ + /usr/include/boost/preprocessor/cat.hpp \ + /usr/include/boost/preprocessor/config/config.hpp \ + /usr/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/params.hpp \ + /usr/include/boost/mpl/aux_/config/preprocessor.hpp \ + /usr/include/boost/preprocessor/comma_if.hpp \ + /usr/include/boost/preprocessor/punctuation/comma_if.hpp \ + /usr/include/boost/preprocessor/control/if.hpp \ + /usr/include/boost/preprocessor/control/iif.hpp \ + /usr/include/boost/preprocessor/logical/bool.hpp \ + /usr/include/boost/preprocessor/facilities/empty.hpp \ + /usr/include/boost/preprocessor/punctuation/comma.hpp \ + /usr/include/boost/preprocessor/repeat.hpp \ + /usr/include/boost/preprocessor/repetition/repeat.hpp \ + /usr/include/boost/preprocessor/debug/error.hpp \ + /usr/include/boost/preprocessor/detail/auto_rec.hpp \ + /usr/include/boost/preprocessor/tuple/eat.hpp \ + /usr/include/boost/preprocessor/inc.hpp \ + /usr/include/boost/preprocessor/arithmetic/inc.hpp \ + /usr/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /usr/include/boost/type_traits/detail/type_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_def.hpp \ + /usr/include/boost/type_traits/integral_constant.hpp \ + /usr/include/boost/mpl/bool.hpp /usr/include/boost/mpl/bool_fwd.hpp \ + /usr/include/boost/mpl/integral_c.hpp \ + /usr/include/boost/mpl/integral_c_fwd.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/ice_and.hpp \ + /usr/include/boost/type_traits/detail/ice_not.hpp \ + /usr/include/boost/utility/enable_if.hpp ../boundary_mesh/Mesh.cpp \ + /usr/include/c++/4.5/iostream /usr/include/c++/4.5/set \ + /usr/include/c++/4.5/bits/stl_tree.h /usr/include/c++/4.5/bits/stl_set.h \ + /usr/include/c++/4.5/bits/stl_multiset.h /usr/include/c++/4.5/list \ + /usr/include/c++/4.5/bits/stl_list.h /usr/include/c++/4.5/bits/list.tcc \ + ../boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp \ + /usr/include/c++/4.5/cstring /usr/include/string.h \ + /usr/include/bits/string3.h ../boundary_mesh/face/Triangle_tmpl.hpp \ + ../boundary_mesh/face/Triangle.hpp \ + ../boundary_mesh/face/../../generic/BaseTypes.hpp \ + ../boundary_mesh/face/Triangle_tmpl.cpp \ + ../boundary_mesh/face/Triangle_tmpl.hpp \ + ../boundary_mesh/face/../Face.hpp \ + ../boundary_mesh/face/Parallelogram_tmpl.hpp \ + ../boundary_mesh/face/Parallelogram.hpp \ + ../boundary_mesh/face/ConvexQuadrilateral.hpp \ + ../boundary_mesh/face/Quadrilateral.hpp \ + ../boundary_mesh/face/../types.hpp \ + ../boundary_mesh/face/Parallelogram_tmpl.cpp /usr/include/c++/4.5/cmath \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/c++/4.5/bits/cmath.tcc \ + ../boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp \ + ../boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp \ + ../boundary_mesh/face/Quadrilateral_tmpl.hpp \ + ../boundary_mesh/face/Quadrilateral_tmpl.cpp \ + ../boundary_mesh/face/Parallelogram_tmpl.hpp \ + ../boundary_mesh/algorithm/HandleObj.hpp \ + ../boundary_mesh/algorithm/HandleObj_tmpl.cpp \ + /usr/include/c++/4.5/fstream /usr/include/c++/4.5/bits/codecvt.h \ + /usr/include/c++/4.5/cstdio /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/bits/stdio_lim.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h \ + /usr/include/c++/4.5/bits/fstream.tcc /usr/include/boost/regex.hpp \ + /usr/include/boost/regex/config.hpp /usr/include/boost/regex/user.hpp \ + /usr/include/boost/regex/config/cwchar.hpp \ + /usr/include/boost/config/auto_link.hpp \ + /usr/include/boost/regex/v4/regex.hpp \ + /usr/include/boost/regex/v4/regex_workaround.hpp \ + /usr/include/c++/4.5/climits \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h /usr/include/c++/4.5/map \ + /usr/include/c++/4.5/bits/stl_map.h \ + /usr/include/c++/4.5/bits/stl_multimap.h /usr/include/boost/limits.hpp \ + /usr/include/boost/assert.hpp /usr/include/boost/cstdint.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h \ + /usr/include/stdint.h /usr/include/boost/throw_exception.hpp \ + /usr/include/boost/exception/detail/attribute_noreturn.hpp \ + /usr/include/boost/exception/exception.hpp \ + /usr/include/boost/current_function.hpp \ + /usr/include/boost/scoped_ptr.hpp \ + /usr/include/boost/smart_ptr/scoped_ptr.hpp \ + /usr/include/boost/checked_delete.hpp /usr/include/c++/4.5/memory \ + /usr/include/c++/4.5/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.5/backward/auto_ptr.h \ + /usr/include/boost/smart_ptr/detail/operator_bool.hpp \ + /usr/include/boost/scoped_array.hpp \ + /usr/include/boost/smart_ptr/scoped_array.hpp \ + /usr/include/boost/shared_ptr.hpp \ + /usr/include/boost/smart_ptr/shared_ptr.hpp \ + /usr/include/boost/config/no_tr1/memory.hpp \ + /usr/include/boost/smart_ptr/detail/shared_count.hpp \ + /usr/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /usr/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /usr/include/boost/detail/sp_typeinfo.hpp /usr/include/c++/4.5/typeinfo \ + /usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /usr/include/c++/4.5/functional \ + /usr/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /usr/include/boost/smart_ptr/detail/yield_k.hpp \ + /usr/include/boost/memory_order.hpp /usr/include/c++/4.5/locale \ + /usr/include/c++/4.5/bits/locale_facets_nonio.h \ + /usr/include/c++/4.5/ctime \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/4.5/bits/locale_facets_nonio.tcc \ + /usr/include/boost/regex_fwd.hpp \ + /usr/include/boost/regex/v4/regex_fwd.hpp \ + /usr/include/boost/regex/regex_traits.hpp \ + /usr/include/boost/regex/v4/regex_traits.hpp \ + /usr/include/boost/regex/v4/syntax_type.hpp \ + /usr/include/boost/regex/v4/error_type.hpp \ + /usr/include/boost/regex/v4/regex_traits_defaults.hpp \ + /usr/include/boost/regex/v4/cpp_regex_traits.hpp \ + /usr/include/boost/regex/pattern_except.hpp \ + /usr/include/boost/regex/pending/static_mutex.hpp \ + /usr/include/boost/regex/v4/primary_transform.hpp \ + /usr/include/boost/regex/pending/object_cache.hpp \ + /usr/include/boost/regex/v4/c_regex_traits.hpp \ + /usr/include/boost/mpl/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/type_wrapper.hpp \ + /usr/include/boost/mpl/aux_/yes_no.hpp \ + /usr/include/boost/mpl/aux_/config/arrays.hpp \ + /usr/include/boost/mpl/aux_/config/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/config/msvc_typename.hpp \ + /usr/include/boost/static_assert.hpp \ + /usr/include/boost/regex/v4/match_flags.hpp \ + /usr/include/boost/regex/v4/regex_raw_buffer.hpp \ + /usr/include/boost/regex/v4/char_regex_traits.hpp \ + /usr/include/boost/regex/v4/states.hpp \ + /usr/include/boost/regex/v4/regbase.hpp \ + /usr/include/boost/regex/v4/iterator_traits.hpp \ + /usr/include/boost/regex/v4/basic_regex.hpp \ + /usr/include/boost/type_traits/is_same.hpp \ + /usr/include/boost/functional/hash.hpp \ + /usr/include/boost/functional/hash/hash.hpp \ + /usr/include/boost/functional/hash/hash_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float.hpp \ + /usr/include/boost/functional/hash/detail/float_functions.hpp \ + /usr/include/boost/config/no_tr1/cmath.hpp \ + /usr/include/boost/functional/hash/detail/limits.hpp \ + /usr/include/boost/integer/static_log2.hpp \ + /usr/include/boost/integer_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float_generic.hpp \ + /usr/include/boost/functional/hash/extensions.hpp \ + /usr/include/boost/detail/container_fwd.hpp \ + /usr/include/boost/regex/v4/basic_regex_creator.hpp \ + /usr/include/boost/regex/v4/basic_regex_parser.hpp \ + /usr/include/boost/regex/v4/sub_match.hpp \ + /usr/include/boost/regex/v4/regex_format.hpp \ + /usr/include/boost/type_traits/is_function.hpp \ + /usr/include/boost/type_traits/is_reference.hpp \ + /usr/include/boost/type_traits/detail/false_result.hpp \ + /usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + /usr/include/boost/type_traits/is_class.hpp \ + /usr/include/boost/type_traits/intrinsics.hpp \ + /usr/include/boost/type_traits/is_volatile.hpp \ + /usr/include/boost/type_traits/is_convertible.hpp \ + /usr/include/boost/type_traits/detail/yes_no_type.hpp \ + /usr/include/boost/type_traits/is_array.hpp \ + /usr/include/boost/type_traits/add_reference.hpp \ + /usr/include/boost/type_traits/ice.hpp \ + /usr/include/boost/type_traits/detail/ice_or.hpp \ + /usr/include/boost/type_traits/detail/ice_eq.hpp \ + /usr/include/boost/type_traits/is_arithmetic.hpp \ + /usr/include/boost/type_traits/is_integral.hpp \ + /usr/include/boost/type_traits/is_float.hpp \ + /usr/include/boost/type_traits/is_void.hpp \ + /usr/include/boost/type_traits/is_abstract.hpp \ + /usr/include/boost/type_traits/remove_pointer.hpp \ + /usr/include/boost/mpl/if.hpp /usr/include/boost/mpl/aux_/value_wknd.hpp \ + /usr/include/boost/mpl/aux_/config/integral.hpp \ + /usr/include/boost/mpl/aux_/config/eti.hpp \ + /usr/include/boost/mpl/aux_/na_spec.hpp \ + /usr/include/boost/mpl/lambda_fwd.hpp \ + /usr/include/boost/mpl/void_fwd.hpp /usr/include/boost/mpl/aux_/na.hpp \ + /usr/include/boost/mpl/aux_/na_fwd.hpp \ + /usr/include/boost/mpl/aux_/lambda_arity_param.hpp \ + /usr/include/boost/mpl/aux_/arity.hpp \ + /usr/include/boost/mpl/aux_/config/dtp.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/enum.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp \ + /usr/include/boost/mpl/limits/arity.hpp \ + /usr/include/boost/preprocessor/logical/and.hpp \ + /usr/include/boost/preprocessor/logical/bitand.hpp \ + /usr/include/boost/preprocessor/identity.hpp \ + /usr/include/boost/preprocessor/facilities/identity.hpp \ + /usr/include/boost/preprocessor/empty.hpp \ + /usr/include/boost/preprocessor/arithmetic/add.hpp \ + /usr/include/boost/preprocessor/arithmetic/dec.hpp \ + /usr/include/boost/preprocessor/control/while.hpp \ + /usr/include/boost/preprocessor/list/fold_left.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_left.hpp \ + /usr/include/boost/preprocessor/control/expr_iif.hpp \ + /usr/include/boost/preprocessor/list/adt.hpp \ + /usr/include/boost/preprocessor/detail/is_binary.hpp \ + /usr/include/boost/preprocessor/detail/check.hpp \ + /usr/include/boost/preprocessor/logical/compl.hpp \ + /usr/include/boost/preprocessor/list/fold_right.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_right.hpp \ + /usr/include/boost/preprocessor/list/reverse.hpp \ + /usr/include/boost/preprocessor/control/detail/while.hpp \ + /usr/include/boost/preprocessor/tuple/elem.hpp \ + /usr/include/boost/preprocessor/arithmetic/sub.hpp \ + /usr/include/boost/mpl/and.hpp \ + /usr/include/boost/mpl/aux_/config/use_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/nested_type_wknd.hpp \ + /usr/include/boost/mpl/aux_/include_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/config/compiler.hpp \ + /usr/include/boost/preprocessor/stringize.hpp \ + /usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp \ + /usr/include/boost/mpl/not.hpp \ + /usr/include/boost/regex/v4/match_results.hpp \ + /usr/include/boost/regex/v4/protected_call.hpp \ + /usr/include/boost/regex/v4/perl_matcher.hpp \ + /usr/include/boost/regex/v4/iterator_category.hpp \ + /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp \ + /usr/include/boost/regex/v4/perl_matcher_common.hpp \ + /usr/include/boost/regex/v4/instances.hpp \ + /usr/include/boost/regex/v4/regex_match.hpp \ + /usr/include/boost/regex/v4/regex_search.hpp \ + /usr/include/boost/regex/v4/regex_iterator.hpp \ + /usr/include/boost/regex/v4/regex_token_iterator.hpp \ + /usr/include/boost/regex/v4/regex_grep.hpp \ + /usr/include/boost/regex/v4/regex_replace.hpp \ + /usr/include/boost/regex/v4/regex_merge.hpp \ + /usr/include/boost/regex/v4/regex_split.hpp \ + ../boundary_mesh/algorithm/../MeshBuilder.hpp \ + ../boundary_mesh/algorithm/RefineUniformly.hpp \ + ../boundary_mesh/algorithm/../types.hpp \ + ../boundary_mesh/algorithm/../FaceDispatch.hpp \ + ../boundary_mesh/algorithm/RefineUniformly_tmpl.cpp \ + ../boundary_mesh/algorithm/RefineUniformly.hpp \ + ../boundary_mesh/FlexibleMesh_tmpl.cpp ../boundary_mesh/FlexibleMesh.hpp \ + ../spaces/P0Space.hpp ../spaces/../hilbert.hpp \ + /usr/local/include/HLib/sparsematrix.h /usr/local/include/HLib/basic.h \ + ../../src/config.h /usr/local/include/HLib/supermatrix.h \ + /usr/local/include/HLib/fullmatrix.h /usr/local/include/HLib/lapack.h \ + /usr/local/include/HLib/blockcluster.h /usr/local/include/HLib/cluster.h \ + /usr/local/include/HLib/clusterbasis.h \ + /usr/local/include/HLib/h2conversion.h \ + /usr/local/include/HLib/rkmatrix.h \ + /usr/local/include/HLib/sparsematrix.h \ + /usr/local/include/HLib/uniformmatrix.h \ + ../boundary_mesh/FaceDispatch.hpp ../HLibOperator.hpp \ + ../HLibOperator_fwd.hpp /usr/local/include/HLib/cluster.h \ + /usr/local/include/HLib/supermatrix.h /usr/local/include/HLib/krylov.h \ + /usr/local/include/HLib/factorisations.h \ + /usr/local/include/HLib/graphics.h /usr/local/include/HLib/aca.h \ + /usr/local/include/HLib/surfacebem.h /usr/local/include/HLib/bem3d.h \ + /usr/local/include/HLib/h2virtual.h /usr/local/include/HLib/aca.h \ + /usr/local/include/HLib/quadrature2d.h ../HLibOperator_tmpl.cpp \ + ../spaces/P0Space.hpp TriangleIntegrator.hpp + +SimpleLayerPotential.hpp: + +../hilbert.hpp: + +../boundary_mesh/FlexibleMesh.hpp: + +../boundary_mesh/FaceDispatch.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +../boundary_mesh/../generic/Singleton.hpp: + +../boundary_mesh/../generic/Singleton_tmpl.cpp: + +../boundary_mesh/../generic/Singleton.hpp: + +../boundary_mesh/../generic/TypeList.hpp: + +../boundary_mesh/../generic/BaseTypes.hpp: + +../boundary_mesh/../generic/BaseTypes.hpp: + +../boundary_mesh/exception/DispatchIdNotSet.hpp: + +/usr/include/c++/4.5/stdexcept: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/bits/basic_string.tcc: + +../boundary_mesh/FaceDispatch_tmpl.cpp: + +../boundary_mesh/exception/CouldNotDispatchCall.hpp: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: + +../boundary_mesh/Face.hpp: + +/usr/include/c++/4.5/iterator: + +/usr/include/c++/4.5/ostream: + +/usr/include/c++/4.5/ios: + +/usr/include/c++/4.5/bits/ios_base.h: + +/usr/include/c++/4.5/bits/locale_classes.h: + +/usr/include/c++/4.5/bits/locale_classes.tcc: + +/usr/include/c++/4.5/streambuf: + +/usr/include/c++/4.5/bits/streambuf.tcc: + +/usr/include/c++/4.5/bits/basic_ios.h: + +/usr/include/c++/4.5/bits/locale_facets.h: + +/usr/include/c++/4.5/cwctype: + +/usr/include/wctype.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h: + +/usr/include/c++/4.5/bits/streambuf_iterator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h: + +/usr/include/c++/4.5/bits/locale_facets.tcc: + +/usr/include/c++/4.5/bits/basic_ios.tcc: + +/usr/include/c++/4.5/bits/ostream.tcc: + +/usr/include/c++/4.5/istream: + +/usr/include/c++/4.5/bits/istream.tcc: + +/usr/include/c++/4.5/bits/stream_iterator.h: + +../boundary_mesh/types.hpp: + +/usr/include/c++/4.5/limits: + +../boundary_mesh/exception.hpp: + +../boundary_mesh/exception/NoMatchingFaceType.hpp: + +../boundary_mesh/Face_tmpl.cpp: + +/usr/include/c++/4.5/sstream: + +/usr/include/c++/4.5/bits/sstream.tcc: + +../boundary_mesh/HalfEdge.hpp: + +../boundary_mesh/HalfEdge_tmpl.cpp: + +../boundary_mesh/Vertex.hpp: + +../boundary_mesh/../generic/GenericVector.hpp: + +../boundary_mesh/../generic/GenericVector_tmpl.cpp: + +../boundary_mesh/../generic/GenericVector.hpp: + +../boundary_mesh/Vertex_tmpl.cpp: + +../boundary_mesh/Mesh.hpp: + +../boundary_mesh/MeshBuilder.hpp: + +../boundary_mesh/MeshBuilder_tmpl.cpp: + +/usr/include/boost/type_traits/is_pointer.hpp: + +/usr/include/boost/type_traits/is_member_pointer.hpp: + +/usr/include/boost/type_traits/config.hpp: + +/usr/include/boost/config.hpp: + +/usr/include/boost/config/user.hpp: + +/usr/include/boost/config/select_compiler_config.hpp: + +/usr/include/boost/config/compiler/gcc.hpp: + +/usr/include/boost/config/select_stdlib_config.hpp: + +/usr/include/boost/config/no_tr1/utility.hpp: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/boost/config/stdlib/libstdcpp3.hpp: + +/usr/include/boost/config/select_platform_config.hpp: + +/usr/include/boost/config/platform/linux.hpp: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/boost/config/posix_features.hpp: + +/usr/include/boost/config/suffix.hpp: + +/usr/include/boost/detail/workaround.hpp: + +/usr/include/boost/type_traits/is_member_function_pointer.hpp: + +/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp: + +/usr/include/boost/type_traits/remove_cv.hpp: + +/usr/include/boost/type_traits/broken_compiler_spec.hpp: + +/usr/include/boost/mpl/aux_/lambda_support.hpp: + +/usr/include/boost/mpl/aux_/config/lambda.hpp: + +/usr/include/boost/mpl/aux_/config/ttp.hpp: + +/usr/include/boost/mpl/aux_/config/msvc.hpp: + +/usr/include/boost/mpl/aux_/config/gcc.hpp: + +/usr/include/boost/mpl/aux_/config/workaround.hpp: + +/usr/include/boost/mpl/aux_/config/ctps.hpp: + +/usr/include/boost/type_traits/detail/cv_traits_impl.hpp: + +/usr/include/boost/type_traits/detail/type_trait_def.hpp: + +/usr/include/boost/type_traits/detail/template_arity_spec.hpp: + +/usr/include/boost/mpl/int.hpp: + +/usr/include/boost/mpl/int_fwd.hpp: + +/usr/include/boost/mpl/aux_/adl_barrier.hpp: + +/usr/include/boost/mpl/aux_/config/adl.hpp: + +/usr/include/boost/mpl/aux_/config/intel.hpp: + +/usr/include/boost/mpl/aux_/nttp_decl.hpp: + +/usr/include/boost/mpl/aux_/config/nttp.hpp: + +/usr/include/boost/mpl/aux_/integral_wrapper.hpp: + +/usr/include/boost/mpl/integral_c_tag.hpp: + +/usr/include/boost/mpl/aux_/config/static_constant.hpp: + +/usr/include/boost/mpl/aux_/static_cast.hpp: + +/usr/include/boost/preprocessor/cat.hpp: + +/usr/include/boost/preprocessor/config/config.hpp: + +/usr/include/boost/mpl/aux_/template_arity_fwd.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/params.hpp: + +/usr/include/boost/mpl/aux_/config/preprocessor.hpp: + +/usr/include/boost/preprocessor/comma_if.hpp: + +/usr/include/boost/preprocessor/punctuation/comma_if.hpp: + +/usr/include/boost/preprocessor/control/if.hpp: + +/usr/include/boost/preprocessor/control/iif.hpp: + +/usr/include/boost/preprocessor/logical/bool.hpp: + +/usr/include/boost/preprocessor/facilities/empty.hpp: + +/usr/include/boost/preprocessor/punctuation/comma.hpp: + +/usr/include/boost/preprocessor/repeat.hpp: + +/usr/include/boost/preprocessor/repetition/repeat.hpp: + +/usr/include/boost/preprocessor/debug/error.hpp: + +/usr/include/boost/preprocessor/detail/auto_rec.hpp: + +/usr/include/boost/preprocessor/tuple/eat.hpp: + +/usr/include/boost/preprocessor/inc.hpp: + +/usr/include/boost/preprocessor/arithmetic/inc.hpp: + +/usr/include/boost/mpl/aux_/config/overload_resolution.hpp: + +/usr/include/boost/type_traits/detail/type_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_def.hpp: + +/usr/include/boost/type_traits/integral_constant.hpp: + +/usr/include/boost/mpl/bool.hpp: + +/usr/include/boost/mpl/bool_fwd.hpp: + +/usr/include/boost/mpl/integral_c.hpp: + +/usr/include/boost/mpl/integral_c_fwd.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/ice_and.hpp: + +/usr/include/boost/type_traits/detail/ice_not.hpp: + +/usr/include/boost/utility/enable_if.hpp: + +../boundary_mesh/Mesh.cpp: + +/usr/include/c++/4.5/iostream: + +/usr/include/c++/4.5/set: + +/usr/include/c++/4.5/bits/stl_tree.h: + +/usr/include/c++/4.5/bits/stl_set.h: + +/usr/include/c++/4.5/bits/stl_multiset.h: + +/usr/include/c++/4.5/list: + +/usr/include/c++/4.5/bits/stl_list.h: + +/usr/include/c++/4.5/bits/list.tcc: + +../boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp: + +../boundary_mesh/exception/NoMatchingFaceType.hpp: + +../boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp: + +/usr/include/c++/4.5/cstring: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +../boundary_mesh/face/Triangle_tmpl.hpp: + +../boundary_mesh/face/Triangle.hpp: + +../boundary_mesh/face/../../generic/BaseTypes.hpp: + +../boundary_mesh/face/Triangle_tmpl.cpp: + +../boundary_mesh/face/Triangle_tmpl.hpp: + +../boundary_mesh/face/../Face.hpp: + +../boundary_mesh/face/Parallelogram_tmpl.hpp: + +../boundary_mesh/face/Parallelogram.hpp: + +../boundary_mesh/face/ConvexQuadrilateral.hpp: + +../boundary_mesh/face/Quadrilateral.hpp: + +../boundary_mesh/face/../types.hpp: + +../boundary_mesh/face/Parallelogram_tmpl.cpp: + +/usr/include/c++/4.5/cmath: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/c++/4.5/bits/cmath.tcc: + +../boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp: + +../boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp: + +../boundary_mesh/face/Quadrilateral_tmpl.hpp: + +../boundary_mesh/face/Quadrilateral_tmpl.cpp: + +../boundary_mesh/face/Parallelogram_tmpl.hpp: + +../boundary_mesh/algorithm/HandleObj.hpp: + +../boundary_mesh/algorithm/HandleObj_tmpl.cpp: + +/usr/include/c++/4.5/fstream: + +/usr/include/c++/4.5/bits/codecvt.h: + +/usr/include/c++/4.5/cstdio: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h: + +/usr/include/c++/4.5/bits/fstream.tcc: + +/usr/include/boost/regex.hpp: + +/usr/include/boost/regex/config.hpp: + +/usr/include/boost/regex/user.hpp: + +/usr/include/boost/regex/config/cwchar.hpp: + +/usr/include/boost/config/auto_link.hpp: + +/usr/include/boost/regex/v4/regex.hpp: + +/usr/include/boost/regex/v4/regex_workaround.hpp: + +/usr/include/c++/4.5/climits: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/map: + +/usr/include/c++/4.5/bits/stl_map.h: + +/usr/include/c++/4.5/bits/stl_multimap.h: + +/usr/include/boost/limits.hpp: + +/usr/include/boost/assert.hpp: + +/usr/include/boost/cstdint.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/boost/throw_exception.hpp: + +/usr/include/boost/exception/detail/attribute_noreturn.hpp: + +/usr/include/boost/exception/exception.hpp: + +/usr/include/boost/current_function.hpp: + +/usr/include/boost/scoped_ptr.hpp: + +/usr/include/boost/smart_ptr/scoped_ptr.hpp: + +/usr/include/boost/checked_delete.hpp: + +/usr/include/c++/4.5/memory: + +/usr/include/c++/4.5/bits/stl_raw_storage_iter.h: + +/usr/include/c++/4.5/backward/auto_ptr.h: + +/usr/include/boost/smart_ptr/detail/operator_bool.hpp: + +/usr/include/boost/scoped_array.hpp: + +/usr/include/boost/smart_ptr/scoped_array.hpp: + +/usr/include/boost/shared_ptr.hpp: + +/usr/include/boost/smart_ptr/shared_ptr.hpp: + +/usr/include/boost/config/no_tr1/memory.hpp: + +/usr/include/boost/smart_ptr/detail/shared_count.hpp: + +/usr/include/boost/smart_ptr/bad_weak_ptr.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base.hpp: + +/usr/include/boost/smart_ptr/detail/sp_has_sync.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp: + +/usr/include/boost/detail/sp_typeinfo.hpp: + +/usr/include/c++/4.5/typeinfo: + +/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/boost/smart_ptr/detail/sp_convertible.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_pool.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_sync.hpp: + +/usr/include/boost/smart_ptr/detail/yield_k.hpp: + +/usr/include/boost/memory_order.hpp: + +/usr/include/c++/4.5/locale: + +/usr/include/c++/4.5/bits/locale_facets_nonio.h: + +/usr/include/c++/4.5/ctime: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h: + +/usr/include/libintl.h: + +/usr/include/c++/4.5/bits/locale_facets_nonio.tcc: + +/usr/include/boost/regex_fwd.hpp: + +/usr/include/boost/regex/v4/regex_fwd.hpp: + +/usr/include/boost/regex/regex_traits.hpp: + +/usr/include/boost/regex/v4/regex_traits.hpp: + +/usr/include/boost/regex/v4/syntax_type.hpp: + +/usr/include/boost/regex/v4/error_type.hpp: + +/usr/include/boost/regex/v4/regex_traits_defaults.hpp: + +/usr/include/boost/regex/v4/cpp_regex_traits.hpp: + +/usr/include/boost/regex/pattern_except.hpp: + +/usr/include/boost/regex/pending/static_mutex.hpp: + +/usr/include/boost/regex/v4/primary_transform.hpp: + +/usr/include/boost/regex/pending/object_cache.hpp: + +/usr/include/boost/regex/v4/c_regex_traits.hpp: + +/usr/include/boost/mpl/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/type_wrapper.hpp: + +/usr/include/boost/mpl/aux_/yes_no.hpp: + +/usr/include/boost/mpl/aux_/config/arrays.hpp: + +/usr/include/boost/mpl/aux_/config/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/config/msvc_typename.hpp: + +/usr/include/boost/static_assert.hpp: + +/usr/include/boost/regex/v4/match_flags.hpp: + +/usr/include/boost/regex/v4/regex_raw_buffer.hpp: + +/usr/include/boost/regex/v4/char_regex_traits.hpp: + +/usr/include/boost/regex/v4/states.hpp: + +/usr/include/boost/regex/v4/regbase.hpp: + +/usr/include/boost/regex/v4/iterator_traits.hpp: + +/usr/include/boost/regex/v4/basic_regex.hpp: + +/usr/include/boost/type_traits/is_same.hpp: + +/usr/include/boost/functional/hash.hpp: + +/usr/include/boost/functional/hash/hash.hpp: + +/usr/include/boost/functional/hash/hash_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float.hpp: + +/usr/include/boost/functional/hash/detail/float_functions.hpp: + +/usr/include/boost/config/no_tr1/cmath.hpp: + +/usr/include/boost/functional/hash/detail/limits.hpp: + +/usr/include/boost/integer/static_log2.hpp: + +/usr/include/boost/integer_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float_generic.hpp: + +/usr/include/boost/functional/hash/extensions.hpp: + +/usr/include/boost/detail/container_fwd.hpp: + +/usr/include/boost/regex/v4/basic_regex_creator.hpp: + +/usr/include/boost/regex/v4/basic_regex_parser.hpp: + +/usr/include/boost/regex/v4/sub_match.hpp: + +/usr/include/boost/regex/v4/regex_format.hpp: + +/usr/include/boost/type_traits/is_function.hpp: + +/usr/include/boost/type_traits/is_reference.hpp: + +/usr/include/boost/type_traits/detail/false_result.hpp: + +/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp: + +/usr/include/boost/type_traits/is_class.hpp: + +/usr/include/boost/type_traits/intrinsics.hpp: + +/usr/include/boost/type_traits/is_volatile.hpp: + +/usr/include/boost/type_traits/is_convertible.hpp: + +/usr/include/boost/type_traits/detail/yes_no_type.hpp: + +/usr/include/boost/type_traits/is_array.hpp: + +/usr/include/boost/type_traits/add_reference.hpp: + +/usr/include/boost/type_traits/ice.hpp: + +/usr/include/boost/type_traits/detail/ice_or.hpp: + +/usr/include/boost/type_traits/detail/ice_eq.hpp: + +/usr/include/boost/type_traits/is_arithmetic.hpp: + +/usr/include/boost/type_traits/is_integral.hpp: + +/usr/include/boost/type_traits/is_float.hpp: + +/usr/include/boost/type_traits/is_void.hpp: + +/usr/include/boost/type_traits/is_abstract.hpp: + +/usr/include/boost/type_traits/remove_pointer.hpp: + +/usr/include/boost/mpl/if.hpp: + +/usr/include/boost/mpl/aux_/value_wknd.hpp: + +/usr/include/boost/mpl/aux_/config/integral.hpp: + +/usr/include/boost/mpl/aux_/config/eti.hpp: + +/usr/include/boost/mpl/aux_/na_spec.hpp: + +/usr/include/boost/mpl/lambda_fwd.hpp: + +/usr/include/boost/mpl/void_fwd.hpp: + +/usr/include/boost/mpl/aux_/na.hpp: + +/usr/include/boost/mpl/aux_/na_fwd.hpp: + +/usr/include/boost/mpl/aux_/lambda_arity_param.hpp: + +/usr/include/boost/mpl/aux_/arity.hpp: + +/usr/include/boost/mpl/aux_/config/dtp.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/enum.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp: + +/usr/include/boost/mpl/limits/arity.hpp: + +/usr/include/boost/preprocessor/logical/and.hpp: + +/usr/include/boost/preprocessor/logical/bitand.hpp: + +/usr/include/boost/preprocessor/identity.hpp: + +/usr/include/boost/preprocessor/facilities/identity.hpp: + +/usr/include/boost/preprocessor/empty.hpp: + +/usr/include/boost/preprocessor/arithmetic/add.hpp: + +/usr/include/boost/preprocessor/arithmetic/dec.hpp: + +/usr/include/boost/preprocessor/control/while.hpp: + +/usr/include/boost/preprocessor/list/fold_left.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_left.hpp: + +/usr/include/boost/preprocessor/control/expr_iif.hpp: + +/usr/include/boost/preprocessor/list/adt.hpp: + +/usr/include/boost/preprocessor/detail/is_binary.hpp: + +/usr/include/boost/preprocessor/detail/check.hpp: + +/usr/include/boost/preprocessor/logical/compl.hpp: + +/usr/include/boost/preprocessor/list/fold_right.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_right.hpp: + +/usr/include/boost/preprocessor/list/reverse.hpp: + +/usr/include/boost/preprocessor/control/detail/while.hpp: + +/usr/include/boost/preprocessor/tuple/elem.hpp: + +/usr/include/boost/preprocessor/arithmetic/sub.hpp: + +/usr/include/boost/mpl/and.hpp: + +/usr/include/boost/mpl/aux_/config/use_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/nested_type_wknd.hpp: + +/usr/include/boost/mpl/aux_/include_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/config/compiler.hpp: + +/usr/include/boost/preprocessor/stringize.hpp: + +/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp: + +/usr/include/boost/mpl/not.hpp: + +/usr/include/boost/regex/v4/match_results.hpp: + +/usr/include/boost/regex/v4/protected_call.hpp: + +/usr/include/boost/regex/v4/perl_matcher.hpp: + +/usr/include/boost/regex/v4/iterator_category.hpp: + +/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp: + +/usr/include/boost/regex/v4/perl_matcher_common.hpp: + +/usr/include/boost/regex/v4/instances.hpp: + +/usr/include/boost/regex/v4/regex_match.hpp: + +/usr/include/boost/regex/v4/regex_search.hpp: + +/usr/include/boost/regex/v4/regex_iterator.hpp: + +/usr/include/boost/regex/v4/regex_token_iterator.hpp: + +/usr/include/boost/regex/v4/regex_grep.hpp: + +/usr/include/boost/regex/v4/regex_replace.hpp: + +/usr/include/boost/regex/v4/regex_merge.hpp: + +/usr/include/boost/regex/v4/regex_split.hpp: + +../boundary_mesh/algorithm/../MeshBuilder.hpp: + +../boundary_mesh/algorithm/RefineUniformly.hpp: + +../boundary_mesh/algorithm/../types.hpp: + +../boundary_mesh/algorithm/../FaceDispatch.hpp: + +../boundary_mesh/algorithm/RefineUniformly_tmpl.cpp: + +../boundary_mesh/algorithm/RefineUniformly.hpp: + +../boundary_mesh/FlexibleMesh_tmpl.cpp: + +../boundary_mesh/FlexibleMesh.hpp: + +../spaces/P0Space.hpp: + +../spaces/../hilbert.hpp: + +/usr/local/include/HLib/sparsematrix.h: + +/usr/local/include/HLib/basic.h: + +../../src/config.h: + +/usr/local/include/HLib/supermatrix.h: + +/usr/local/include/HLib/fullmatrix.h: + +/usr/local/include/HLib/lapack.h: + +/usr/local/include/HLib/blockcluster.h: + +/usr/local/include/HLib/cluster.h: + +/usr/local/include/HLib/clusterbasis.h: + +/usr/local/include/HLib/h2conversion.h: + +/usr/local/include/HLib/rkmatrix.h: + +/usr/local/include/HLib/sparsematrix.h: + +/usr/local/include/HLib/uniformmatrix.h: + +../boundary_mesh/FaceDispatch.hpp: + +../HLibOperator.hpp: + +../HLibOperator_fwd.hpp: + +/usr/local/include/HLib/cluster.h: + +/usr/local/include/HLib/supermatrix.h: + +/usr/local/include/HLib/krylov.h: + +/usr/local/include/HLib/factorisations.h: + +/usr/local/include/HLib/graphics.h: + +/usr/local/include/HLib/aca.h: + +/usr/local/include/HLib/surfacebem.h: + +/usr/local/include/HLib/bem3d.h: + +/usr/local/include/HLib/h2virtual.h: + +/usr/local/include/HLib/aca.h: + +/usr/local/include/HLib/quadrature2d.h: + +../HLibOperator_tmpl.cpp: + +../spaces/P0Space.hpp: + +TriangleIntegrator.hpp: diff --git a/src/bem3d/src/laplace/.deps/testLaplace-TriangleIntegrator.Po b/src/bem3d/src/laplace/.deps/testLaplace-TriangleIntegrator.Po new file mode 100644 index 0000000..b738a2d --- /dev/null +++ b/src/bem3d/src/laplace/.deps/testLaplace-TriangleIntegrator.Po @@ -0,0 +1,1387 @@ +testLaplace-TriangleIntegrator.o: TriangleIntegrator.cpp \ + TriangleIntegrator.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc ../hilbert.hpp \ + ../boundary_mesh/FlexibleMesh.hpp ../boundary_mesh/FaceDispatch.hpp \ + ../boundary_mesh/../generic/Singleton.hpp \ + ../boundary_mesh/../generic/Singleton_tmpl.cpp \ + ../boundary_mesh/../generic/Singleton.hpp \ + ../boundary_mesh/../generic/TypeList.hpp \ + ../boundary_mesh/../generic/BaseTypes.hpp \ + ../boundary_mesh/../generic/BaseTypes.hpp \ + ../boundary_mesh/exception/DispatchIdNotSet.hpp \ + /usr/include/c++/4.5/stdexcept /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/postypes.h /usr/include/c++/4.5/cwchar \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/cctype /usr/include/ctype.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/bits/basic_string.tcc \ + ../boundary_mesh/FaceDispatch_tmpl.cpp \ + ../boundary_mesh/exception/CouldNotDispatchCall.hpp \ + /usr/include/c++/4.5/cassert /usr/include/assert.h \ + ../boundary_mesh/Face.hpp /usr/include/c++/4.5/iterator \ + /usr/include/c++/4.5/ostream /usr/include/c++/4.5/ios \ + /usr/include/c++/4.5/bits/ios_base.h \ + /usr/include/c++/4.5/bits/locale_classes.h \ + /usr/include/c++/4.5/bits/locale_classes.tcc \ + /usr/include/c++/4.5/streambuf /usr/include/c++/4.5/bits/streambuf.tcc \ + /usr/include/c++/4.5/bits/basic_ios.h \ + /usr/include/c++/4.5/bits/locale_facets.h /usr/include/c++/4.5/cwctype \ + /usr/include/wctype.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/4.5/bits/streambuf_iterator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/4.5/bits/locale_facets.tcc \ + /usr/include/c++/4.5/bits/basic_ios.tcc \ + /usr/include/c++/4.5/bits/ostream.tcc /usr/include/c++/4.5/istream \ + /usr/include/c++/4.5/bits/istream.tcc \ + /usr/include/c++/4.5/bits/stream_iterator.h ../boundary_mesh/types.hpp \ + /usr/include/c++/4.5/limits ../boundary_mesh/exception.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType.hpp \ + ../boundary_mesh/Face_tmpl.cpp /usr/include/c++/4.5/sstream \ + /usr/include/c++/4.5/bits/sstream.tcc ../boundary_mesh/HalfEdge.hpp \ + ../boundary_mesh/HalfEdge_tmpl.cpp ../boundary_mesh/Vertex.hpp \ + ../boundary_mesh/../generic/GenericVector.hpp \ + ../boundary_mesh/../generic/GenericVector_tmpl.cpp \ + ../boundary_mesh/../generic/GenericVector.hpp \ + ../boundary_mesh/Vertex_tmpl.cpp ../boundary_mesh/Mesh.hpp \ + ../boundary_mesh/MeshBuilder.hpp ../boundary_mesh/MeshBuilder_tmpl.cpp \ + /usr/include/boost/type_traits/is_pointer.hpp \ + /usr/include/boost/type_traits/is_member_pointer.hpp \ + /usr/include/boost/type_traits/config.hpp /usr/include/boost/config.hpp \ + /usr/include/boost/config/user.hpp \ + /usr/include/boost/config/select_compiler_config.hpp \ + /usr/include/boost/config/compiler/gcc.hpp \ + /usr/include/boost/config/select_stdlib_config.hpp \ + /usr/include/boost/config/no_tr1/utility.hpp \ + /usr/include/c++/4.5/utility /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/boost/config/stdlib/libstdcpp3.hpp \ + /usr/include/boost/config/select_platform_config.hpp \ + /usr/include/boost/config/platform/linux.hpp \ + /usr/include/c++/4.5/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/boost/config/posix_features.hpp \ + /usr/include/boost/config/suffix.hpp \ + /usr/include/boost/detail/workaround.hpp \ + /usr/include/boost/type_traits/is_member_function_pointer.hpp \ + /usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp \ + /usr/include/boost/type_traits/remove_cv.hpp \ + /usr/include/boost/type_traits/broken_compiler_spec.hpp \ + /usr/include/boost/mpl/aux_/lambda_support.hpp \ + /usr/include/boost/mpl/aux_/config/lambda.hpp \ + /usr/include/boost/mpl/aux_/config/ttp.hpp \ + /usr/include/boost/mpl/aux_/config/msvc.hpp \ + /usr/include/boost/mpl/aux_/config/gcc.hpp \ + /usr/include/boost/mpl/aux_/config/workaround.hpp \ + /usr/include/boost/mpl/aux_/config/ctps.hpp \ + /usr/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /usr/include/boost/type_traits/detail/type_trait_def.hpp \ + /usr/include/boost/type_traits/detail/template_arity_spec.hpp \ + /usr/include/boost/mpl/int.hpp /usr/include/boost/mpl/int_fwd.hpp \ + /usr/include/boost/mpl/aux_/adl_barrier.hpp \ + /usr/include/boost/mpl/aux_/config/adl.hpp \ + /usr/include/boost/mpl/aux_/config/intel.hpp \ + /usr/include/boost/mpl/aux_/nttp_decl.hpp \ + /usr/include/boost/mpl/aux_/config/nttp.hpp \ + /usr/include/boost/mpl/aux_/integral_wrapper.hpp \ + /usr/include/boost/mpl/integral_c_tag.hpp \ + /usr/include/boost/mpl/aux_/config/static_constant.hpp \ + /usr/include/boost/mpl/aux_/static_cast.hpp \ + /usr/include/boost/preprocessor/cat.hpp \ + /usr/include/boost/preprocessor/config/config.hpp \ + /usr/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/params.hpp \ + /usr/include/boost/mpl/aux_/config/preprocessor.hpp \ + /usr/include/boost/preprocessor/comma_if.hpp \ + /usr/include/boost/preprocessor/punctuation/comma_if.hpp \ + /usr/include/boost/preprocessor/control/if.hpp \ + /usr/include/boost/preprocessor/control/iif.hpp \ + /usr/include/boost/preprocessor/logical/bool.hpp \ + /usr/include/boost/preprocessor/facilities/empty.hpp \ + /usr/include/boost/preprocessor/punctuation/comma.hpp \ + /usr/include/boost/preprocessor/repeat.hpp \ + /usr/include/boost/preprocessor/repetition/repeat.hpp \ + /usr/include/boost/preprocessor/debug/error.hpp \ + /usr/include/boost/preprocessor/detail/auto_rec.hpp \ + /usr/include/boost/preprocessor/tuple/eat.hpp \ + /usr/include/boost/preprocessor/inc.hpp \ + /usr/include/boost/preprocessor/arithmetic/inc.hpp \ + /usr/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /usr/include/boost/type_traits/detail/type_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_def.hpp \ + /usr/include/boost/type_traits/integral_constant.hpp \ + /usr/include/boost/mpl/bool.hpp /usr/include/boost/mpl/bool_fwd.hpp \ + /usr/include/boost/mpl/integral_c.hpp \ + /usr/include/boost/mpl/integral_c_fwd.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/ice_and.hpp \ + /usr/include/boost/type_traits/detail/ice_not.hpp \ + /usr/include/boost/utility/enable_if.hpp ../boundary_mesh/Mesh.cpp \ + /usr/include/c++/4.5/iostream /usr/include/c++/4.5/set \ + /usr/include/c++/4.5/bits/stl_tree.h /usr/include/c++/4.5/bits/stl_set.h \ + /usr/include/c++/4.5/bits/stl_multiset.h /usr/include/c++/4.5/list \ + /usr/include/c++/4.5/bits/stl_list.h /usr/include/c++/4.5/bits/list.tcc \ + ../boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp \ + /usr/include/c++/4.5/cstring /usr/include/string.h \ + /usr/include/bits/string3.h ../boundary_mesh/face/Triangle_tmpl.hpp \ + ../boundary_mesh/face/Triangle.hpp \ + ../boundary_mesh/face/../../generic/BaseTypes.hpp \ + ../boundary_mesh/face/Triangle_tmpl.cpp \ + ../boundary_mesh/face/Triangle_tmpl.hpp \ + ../boundary_mesh/face/../Face.hpp \ + ../boundary_mesh/face/Parallelogram_tmpl.hpp \ + ../boundary_mesh/face/Parallelogram.hpp \ + ../boundary_mesh/face/ConvexQuadrilateral.hpp \ + ../boundary_mesh/face/Quadrilateral.hpp \ + ../boundary_mesh/face/../types.hpp \ + ../boundary_mesh/face/Parallelogram_tmpl.cpp /usr/include/c++/4.5/cmath \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/c++/4.5/bits/cmath.tcc \ + ../boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp \ + ../boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp \ + ../boundary_mesh/face/Quadrilateral_tmpl.hpp \ + ../boundary_mesh/face/Quadrilateral_tmpl.cpp \ + ../boundary_mesh/face/Parallelogram_tmpl.hpp \ + ../boundary_mesh/algorithm/HandleObj.hpp \ + ../boundary_mesh/algorithm/HandleObj_tmpl.cpp \ + /usr/include/c++/4.5/fstream /usr/include/c++/4.5/bits/codecvt.h \ + /usr/include/c++/4.5/cstdio /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/bits/stdio_lim.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h \ + /usr/include/c++/4.5/bits/fstream.tcc /usr/include/boost/regex.hpp \ + /usr/include/boost/regex/config.hpp /usr/include/boost/regex/user.hpp \ + /usr/include/boost/regex/config/cwchar.hpp \ + /usr/include/boost/config/auto_link.hpp \ + /usr/include/boost/regex/v4/regex.hpp \ + /usr/include/boost/regex/v4/regex_workaround.hpp \ + /usr/include/c++/4.5/climits \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h /usr/include/c++/4.5/map \ + /usr/include/c++/4.5/bits/stl_map.h \ + /usr/include/c++/4.5/bits/stl_multimap.h /usr/include/boost/limits.hpp \ + /usr/include/boost/assert.hpp /usr/include/boost/cstdint.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h \ + /usr/include/stdint.h /usr/include/boost/throw_exception.hpp \ + /usr/include/boost/exception/detail/attribute_noreturn.hpp \ + /usr/include/boost/exception/exception.hpp \ + /usr/include/boost/current_function.hpp \ + /usr/include/boost/scoped_ptr.hpp \ + /usr/include/boost/smart_ptr/scoped_ptr.hpp \ + /usr/include/boost/checked_delete.hpp /usr/include/c++/4.5/memory \ + /usr/include/c++/4.5/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.5/backward/auto_ptr.h \ + /usr/include/boost/smart_ptr/detail/operator_bool.hpp \ + /usr/include/boost/scoped_array.hpp \ + /usr/include/boost/smart_ptr/scoped_array.hpp \ + /usr/include/boost/shared_ptr.hpp \ + /usr/include/boost/smart_ptr/shared_ptr.hpp \ + /usr/include/boost/config/no_tr1/memory.hpp \ + /usr/include/boost/smart_ptr/detail/shared_count.hpp \ + /usr/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /usr/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /usr/include/boost/detail/sp_typeinfo.hpp /usr/include/c++/4.5/typeinfo \ + /usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /usr/include/c++/4.5/functional \ + /usr/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /usr/include/boost/smart_ptr/detail/yield_k.hpp \ + /usr/include/boost/memory_order.hpp /usr/include/c++/4.5/locale \ + /usr/include/c++/4.5/bits/locale_facets_nonio.h \ + /usr/include/c++/4.5/ctime \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/4.5/bits/locale_facets_nonio.tcc \ + /usr/include/boost/regex_fwd.hpp \ + /usr/include/boost/regex/v4/regex_fwd.hpp \ + /usr/include/boost/regex/regex_traits.hpp \ + /usr/include/boost/regex/v4/regex_traits.hpp \ + /usr/include/boost/regex/v4/syntax_type.hpp \ + /usr/include/boost/regex/v4/error_type.hpp \ + /usr/include/boost/regex/v4/regex_traits_defaults.hpp \ + /usr/include/boost/regex/v4/cpp_regex_traits.hpp \ + /usr/include/boost/regex/pattern_except.hpp \ + /usr/include/boost/regex/pending/static_mutex.hpp \ + /usr/include/boost/regex/v4/primary_transform.hpp \ + /usr/include/boost/regex/pending/object_cache.hpp \ + /usr/include/boost/regex/v4/c_regex_traits.hpp \ + /usr/include/boost/mpl/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/type_wrapper.hpp \ + /usr/include/boost/mpl/aux_/yes_no.hpp \ + /usr/include/boost/mpl/aux_/config/arrays.hpp \ + /usr/include/boost/mpl/aux_/config/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/config/msvc_typename.hpp \ + /usr/include/boost/static_assert.hpp \ + /usr/include/boost/regex/v4/match_flags.hpp \ + /usr/include/boost/regex/v4/regex_raw_buffer.hpp \ + /usr/include/boost/regex/v4/char_regex_traits.hpp \ + /usr/include/boost/regex/v4/states.hpp \ + /usr/include/boost/regex/v4/regbase.hpp \ + /usr/include/boost/regex/v4/iterator_traits.hpp \ + /usr/include/boost/regex/v4/basic_regex.hpp \ + /usr/include/boost/type_traits/is_same.hpp \ + /usr/include/boost/functional/hash.hpp \ + /usr/include/boost/functional/hash/hash.hpp \ + /usr/include/boost/functional/hash/hash_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float.hpp \ + /usr/include/boost/functional/hash/detail/float_functions.hpp \ + /usr/include/boost/config/no_tr1/cmath.hpp \ + /usr/include/boost/functional/hash/detail/limits.hpp \ + /usr/include/boost/integer/static_log2.hpp \ + /usr/include/boost/integer_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float_generic.hpp \ + /usr/include/boost/functional/hash/extensions.hpp \ + /usr/include/boost/detail/container_fwd.hpp \ + /usr/include/boost/regex/v4/basic_regex_creator.hpp \ + /usr/include/boost/regex/v4/basic_regex_parser.hpp \ + /usr/include/boost/regex/v4/sub_match.hpp \ + /usr/include/boost/regex/v4/regex_format.hpp \ + /usr/include/boost/type_traits/is_function.hpp \ + /usr/include/boost/type_traits/is_reference.hpp \ + /usr/include/boost/type_traits/detail/false_result.hpp \ + /usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + /usr/include/boost/type_traits/is_class.hpp \ + /usr/include/boost/type_traits/intrinsics.hpp \ + /usr/include/boost/type_traits/is_volatile.hpp \ + /usr/include/boost/type_traits/is_convertible.hpp \ + /usr/include/boost/type_traits/detail/yes_no_type.hpp \ + /usr/include/boost/type_traits/is_array.hpp \ + /usr/include/boost/type_traits/add_reference.hpp \ + /usr/include/boost/type_traits/ice.hpp \ + /usr/include/boost/type_traits/detail/ice_or.hpp \ + /usr/include/boost/type_traits/detail/ice_eq.hpp \ + /usr/include/boost/type_traits/is_arithmetic.hpp \ + /usr/include/boost/type_traits/is_integral.hpp \ + /usr/include/boost/type_traits/is_float.hpp \ + /usr/include/boost/type_traits/is_void.hpp \ + /usr/include/boost/type_traits/is_abstract.hpp \ + /usr/include/boost/type_traits/remove_pointer.hpp \ + /usr/include/boost/mpl/if.hpp /usr/include/boost/mpl/aux_/value_wknd.hpp \ + /usr/include/boost/mpl/aux_/config/integral.hpp \ + /usr/include/boost/mpl/aux_/config/eti.hpp \ + /usr/include/boost/mpl/aux_/na_spec.hpp \ + /usr/include/boost/mpl/lambda_fwd.hpp \ + /usr/include/boost/mpl/void_fwd.hpp /usr/include/boost/mpl/aux_/na.hpp \ + /usr/include/boost/mpl/aux_/na_fwd.hpp \ + /usr/include/boost/mpl/aux_/lambda_arity_param.hpp \ + /usr/include/boost/mpl/aux_/arity.hpp \ + /usr/include/boost/mpl/aux_/config/dtp.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/enum.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp \ + /usr/include/boost/mpl/limits/arity.hpp \ + /usr/include/boost/preprocessor/logical/and.hpp \ + /usr/include/boost/preprocessor/logical/bitand.hpp \ + /usr/include/boost/preprocessor/identity.hpp \ + /usr/include/boost/preprocessor/facilities/identity.hpp \ + /usr/include/boost/preprocessor/empty.hpp \ + /usr/include/boost/preprocessor/arithmetic/add.hpp \ + /usr/include/boost/preprocessor/arithmetic/dec.hpp \ + /usr/include/boost/preprocessor/control/while.hpp \ + /usr/include/boost/preprocessor/list/fold_left.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_left.hpp \ + /usr/include/boost/preprocessor/control/expr_iif.hpp \ + /usr/include/boost/preprocessor/list/adt.hpp \ + /usr/include/boost/preprocessor/detail/is_binary.hpp \ + /usr/include/boost/preprocessor/detail/check.hpp \ + /usr/include/boost/preprocessor/logical/compl.hpp \ + /usr/include/boost/preprocessor/list/fold_right.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_right.hpp \ + /usr/include/boost/preprocessor/list/reverse.hpp \ + /usr/include/boost/preprocessor/control/detail/while.hpp \ + /usr/include/boost/preprocessor/tuple/elem.hpp \ + /usr/include/boost/preprocessor/arithmetic/sub.hpp \ + /usr/include/boost/mpl/and.hpp \ + /usr/include/boost/mpl/aux_/config/use_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/nested_type_wknd.hpp \ + /usr/include/boost/mpl/aux_/include_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/config/compiler.hpp \ + /usr/include/boost/preprocessor/stringize.hpp \ + /usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp \ + /usr/include/boost/mpl/not.hpp \ + /usr/include/boost/regex/v4/match_results.hpp \ + /usr/include/boost/regex/v4/protected_call.hpp \ + /usr/include/boost/regex/v4/perl_matcher.hpp \ + /usr/include/boost/regex/v4/iterator_category.hpp \ + /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp \ + /usr/include/boost/regex/v4/perl_matcher_common.hpp \ + /usr/include/boost/regex/v4/instances.hpp \ + /usr/include/boost/regex/v4/regex_match.hpp \ + /usr/include/boost/regex/v4/regex_search.hpp \ + /usr/include/boost/regex/v4/regex_iterator.hpp \ + /usr/include/boost/regex/v4/regex_token_iterator.hpp \ + /usr/include/boost/regex/v4/regex_grep.hpp \ + /usr/include/boost/regex/v4/regex_replace.hpp \ + /usr/include/boost/regex/v4/regex_merge.hpp \ + /usr/include/boost/regex/v4/regex_split.hpp \ + ../boundary_mesh/algorithm/../MeshBuilder.hpp \ + ../boundary_mesh/algorithm/RefineUniformly.hpp \ + ../boundary_mesh/algorithm/../types.hpp \ + ../boundary_mesh/algorithm/../FaceDispatch.hpp \ + ../boundary_mesh/algorithm/RefineUniformly_tmpl.cpp \ + ../boundary_mesh/algorithm/RefineUniformly.hpp \ + ../boundary_mesh/FlexibleMesh_tmpl.cpp ../boundary_mesh/FlexibleMesh.hpp \ + ../spaces/P0Space.hpp ../spaces/../hilbert.hpp \ + /usr/local/include/HLib/sparsematrix.h /usr/local/include/HLib/basic.h \ + ../../src/config.h /usr/local/include/HLib/supermatrix.h \ + /usr/local/include/HLib/fullmatrix.h /usr/local/include/HLib/lapack.h \ + /usr/local/include/HLib/blockcluster.h /usr/local/include/HLib/cluster.h \ + /usr/local/include/HLib/clusterbasis.h \ + /usr/local/include/HLib/h2conversion.h \ + /usr/local/include/HLib/rkmatrix.h \ + /usr/local/include/HLib/sparsematrix.h \ + /usr/local/include/HLib/uniformmatrix.h + +TriangleIntegrator.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +../hilbert.hpp: + +../boundary_mesh/FlexibleMesh.hpp: + +../boundary_mesh/FaceDispatch.hpp: + +../boundary_mesh/../generic/Singleton.hpp: + +../boundary_mesh/../generic/Singleton_tmpl.cpp: + +../boundary_mesh/../generic/Singleton.hpp: + +../boundary_mesh/../generic/TypeList.hpp: + +../boundary_mesh/../generic/BaseTypes.hpp: + +../boundary_mesh/../generic/BaseTypes.hpp: + +../boundary_mesh/exception/DispatchIdNotSet.hpp: + +/usr/include/c++/4.5/stdexcept: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/bits/basic_string.tcc: + +../boundary_mesh/FaceDispatch_tmpl.cpp: + +../boundary_mesh/exception/CouldNotDispatchCall.hpp: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: + +../boundary_mesh/Face.hpp: + +/usr/include/c++/4.5/iterator: + +/usr/include/c++/4.5/ostream: + +/usr/include/c++/4.5/ios: + +/usr/include/c++/4.5/bits/ios_base.h: + +/usr/include/c++/4.5/bits/locale_classes.h: + +/usr/include/c++/4.5/bits/locale_classes.tcc: + +/usr/include/c++/4.5/streambuf: + +/usr/include/c++/4.5/bits/streambuf.tcc: + +/usr/include/c++/4.5/bits/basic_ios.h: + +/usr/include/c++/4.5/bits/locale_facets.h: + +/usr/include/c++/4.5/cwctype: + +/usr/include/wctype.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h: + +/usr/include/c++/4.5/bits/streambuf_iterator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h: + +/usr/include/c++/4.5/bits/locale_facets.tcc: + +/usr/include/c++/4.5/bits/basic_ios.tcc: + +/usr/include/c++/4.5/bits/ostream.tcc: + +/usr/include/c++/4.5/istream: + +/usr/include/c++/4.5/bits/istream.tcc: + +/usr/include/c++/4.5/bits/stream_iterator.h: + +../boundary_mesh/types.hpp: + +/usr/include/c++/4.5/limits: + +../boundary_mesh/exception.hpp: + +../boundary_mesh/exception/NoMatchingFaceType.hpp: + +../boundary_mesh/Face_tmpl.cpp: + +/usr/include/c++/4.5/sstream: + +/usr/include/c++/4.5/bits/sstream.tcc: + +../boundary_mesh/HalfEdge.hpp: + +../boundary_mesh/HalfEdge_tmpl.cpp: + +../boundary_mesh/Vertex.hpp: + +../boundary_mesh/../generic/GenericVector.hpp: + +../boundary_mesh/../generic/GenericVector_tmpl.cpp: + +../boundary_mesh/../generic/GenericVector.hpp: + +../boundary_mesh/Vertex_tmpl.cpp: + +../boundary_mesh/Mesh.hpp: + +../boundary_mesh/MeshBuilder.hpp: + +../boundary_mesh/MeshBuilder_tmpl.cpp: + +/usr/include/boost/type_traits/is_pointer.hpp: + +/usr/include/boost/type_traits/is_member_pointer.hpp: + +/usr/include/boost/type_traits/config.hpp: + +/usr/include/boost/config.hpp: + +/usr/include/boost/config/user.hpp: + +/usr/include/boost/config/select_compiler_config.hpp: + +/usr/include/boost/config/compiler/gcc.hpp: + +/usr/include/boost/config/select_stdlib_config.hpp: + +/usr/include/boost/config/no_tr1/utility.hpp: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/boost/config/stdlib/libstdcpp3.hpp: + +/usr/include/boost/config/select_platform_config.hpp: + +/usr/include/boost/config/platform/linux.hpp: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/boost/config/posix_features.hpp: + +/usr/include/boost/config/suffix.hpp: + +/usr/include/boost/detail/workaround.hpp: + +/usr/include/boost/type_traits/is_member_function_pointer.hpp: + +/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp: + +/usr/include/boost/type_traits/remove_cv.hpp: + +/usr/include/boost/type_traits/broken_compiler_spec.hpp: + +/usr/include/boost/mpl/aux_/lambda_support.hpp: + +/usr/include/boost/mpl/aux_/config/lambda.hpp: + +/usr/include/boost/mpl/aux_/config/ttp.hpp: + +/usr/include/boost/mpl/aux_/config/msvc.hpp: + +/usr/include/boost/mpl/aux_/config/gcc.hpp: + +/usr/include/boost/mpl/aux_/config/workaround.hpp: + +/usr/include/boost/mpl/aux_/config/ctps.hpp: + +/usr/include/boost/type_traits/detail/cv_traits_impl.hpp: + +/usr/include/boost/type_traits/detail/type_trait_def.hpp: + +/usr/include/boost/type_traits/detail/template_arity_spec.hpp: + +/usr/include/boost/mpl/int.hpp: + +/usr/include/boost/mpl/int_fwd.hpp: + +/usr/include/boost/mpl/aux_/adl_barrier.hpp: + +/usr/include/boost/mpl/aux_/config/adl.hpp: + +/usr/include/boost/mpl/aux_/config/intel.hpp: + +/usr/include/boost/mpl/aux_/nttp_decl.hpp: + +/usr/include/boost/mpl/aux_/config/nttp.hpp: + +/usr/include/boost/mpl/aux_/integral_wrapper.hpp: + +/usr/include/boost/mpl/integral_c_tag.hpp: + +/usr/include/boost/mpl/aux_/config/static_constant.hpp: + +/usr/include/boost/mpl/aux_/static_cast.hpp: + +/usr/include/boost/preprocessor/cat.hpp: + +/usr/include/boost/preprocessor/config/config.hpp: + +/usr/include/boost/mpl/aux_/template_arity_fwd.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/params.hpp: + +/usr/include/boost/mpl/aux_/config/preprocessor.hpp: + +/usr/include/boost/preprocessor/comma_if.hpp: + +/usr/include/boost/preprocessor/punctuation/comma_if.hpp: + +/usr/include/boost/preprocessor/control/if.hpp: + +/usr/include/boost/preprocessor/control/iif.hpp: + +/usr/include/boost/preprocessor/logical/bool.hpp: + +/usr/include/boost/preprocessor/facilities/empty.hpp: + +/usr/include/boost/preprocessor/punctuation/comma.hpp: + +/usr/include/boost/preprocessor/repeat.hpp: + +/usr/include/boost/preprocessor/repetition/repeat.hpp: + +/usr/include/boost/preprocessor/debug/error.hpp: + +/usr/include/boost/preprocessor/detail/auto_rec.hpp: + +/usr/include/boost/preprocessor/tuple/eat.hpp: + +/usr/include/boost/preprocessor/inc.hpp: + +/usr/include/boost/preprocessor/arithmetic/inc.hpp: + +/usr/include/boost/mpl/aux_/config/overload_resolution.hpp: + +/usr/include/boost/type_traits/detail/type_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_def.hpp: + +/usr/include/boost/type_traits/integral_constant.hpp: + +/usr/include/boost/mpl/bool.hpp: + +/usr/include/boost/mpl/bool_fwd.hpp: + +/usr/include/boost/mpl/integral_c.hpp: + +/usr/include/boost/mpl/integral_c_fwd.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/ice_and.hpp: + +/usr/include/boost/type_traits/detail/ice_not.hpp: + +/usr/include/boost/utility/enable_if.hpp: + +../boundary_mesh/Mesh.cpp: + +/usr/include/c++/4.5/iostream: + +/usr/include/c++/4.5/set: + +/usr/include/c++/4.5/bits/stl_tree.h: + +/usr/include/c++/4.5/bits/stl_set.h: + +/usr/include/c++/4.5/bits/stl_multiset.h: + +/usr/include/c++/4.5/list: + +/usr/include/c++/4.5/bits/stl_list.h: + +/usr/include/c++/4.5/bits/list.tcc: + +../boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp: + +../boundary_mesh/exception/NoMatchingFaceType.hpp: + +../boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp: + +/usr/include/c++/4.5/cstring: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +../boundary_mesh/face/Triangle_tmpl.hpp: + +../boundary_mesh/face/Triangle.hpp: + +../boundary_mesh/face/../../generic/BaseTypes.hpp: + +../boundary_mesh/face/Triangle_tmpl.cpp: + +../boundary_mesh/face/Triangle_tmpl.hpp: + +../boundary_mesh/face/../Face.hpp: + +../boundary_mesh/face/Parallelogram_tmpl.hpp: + +../boundary_mesh/face/Parallelogram.hpp: + +../boundary_mesh/face/ConvexQuadrilateral.hpp: + +../boundary_mesh/face/Quadrilateral.hpp: + +../boundary_mesh/face/../types.hpp: + +../boundary_mesh/face/Parallelogram_tmpl.cpp: + +/usr/include/c++/4.5/cmath: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/c++/4.5/bits/cmath.tcc: + +../boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp: + +../boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp: + +../boundary_mesh/face/Quadrilateral_tmpl.hpp: + +../boundary_mesh/face/Quadrilateral_tmpl.cpp: + +../boundary_mesh/face/Parallelogram_tmpl.hpp: + +../boundary_mesh/algorithm/HandleObj.hpp: + +../boundary_mesh/algorithm/HandleObj_tmpl.cpp: + +/usr/include/c++/4.5/fstream: + +/usr/include/c++/4.5/bits/codecvt.h: + +/usr/include/c++/4.5/cstdio: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h: + +/usr/include/c++/4.5/bits/fstream.tcc: + +/usr/include/boost/regex.hpp: + +/usr/include/boost/regex/config.hpp: + +/usr/include/boost/regex/user.hpp: + +/usr/include/boost/regex/config/cwchar.hpp: + +/usr/include/boost/config/auto_link.hpp: + +/usr/include/boost/regex/v4/regex.hpp: + +/usr/include/boost/regex/v4/regex_workaround.hpp: + +/usr/include/c++/4.5/climits: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/map: + +/usr/include/c++/4.5/bits/stl_map.h: + +/usr/include/c++/4.5/bits/stl_multimap.h: + +/usr/include/boost/limits.hpp: + +/usr/include/boost/assert.hpp: + +/usr/include/boost/cstdint.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/boost/throw_exception.hpp: + +/usr/include/boost/exception/detail/attribute_noreturn.hpp: + +/usr/include/boost/exception/exception.hpp: + +/usr/include/boost/current_function.hpp: + +/usr/include/boost/scoped_ptr.hpp: + +/usr/include/boost/smart_ptr/scoped_ptr.hpp: + +/usr/include/boost/checked_delete.hpp: + +/usr/include/c++/4.5/memory: + +/usr/include/c++/4.5/bits/stl_raw_storage_iter.h: + +/usr/include/c++/4.5/backward/auto_ptr.h: + +/usr/include/boost/smart_ptr/detail/operator_bool.hpp: + +/usr/include/boost/scoped_array.hpp: + +/usr/include/boost/smart_ptr/scoped_array.hpp: + +/usr/include/boost/shared_ptr.hpp: + +/usr/include/boost/smart_ptr/shared_ptr.hpp: + +/usr/include/boost/config/no_tr1/memory.hpp: + +/usr/include/boost/smart_ptr/detail/shared_count.hpp: + +/usr/include/boost/smart_ptr/bad_weak_ptr.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base.hpp: + +/usr/include/boost/smart_ptr/detail/sp_has_sync.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp: + +/usr/include/boost/detail/sp_typeinfo.hpp: + +/usr/include/c++/4.5/typeinfo: + +/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/boost/smart_ptr/detail/sp_convertible.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_pool.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_sync.hpp: + +/usr/include/boost/smart_ptr/detail/yield_k.hpp: + +/usr/include/boost/memory_order.hpp: + +/usr/include/c++/4.5/locale: + +/usr/include/c++/4.5/bits/locale_facets_nonio.h: + +/usr/include/c++/4.5/ctime: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h: + +/usr/include/libintl.h: + +/usr/include/c++/4.5/bits/locale_facets_nonio.tcc: + +/usr/include/boost/regex_fwd.hpp: + +/usr/include/boost/regex/v4/regex_fwd.hpp: + +/usr/include/boost/regex/regex_traits.hpp: + +/usr/include/boost/regex/v4/regex_traits.hpp: + +/usr/include/boost/regex/v4/syntax_type.hpp: + +/usr/include/boost/regex/v4/error_type.hpp: + +/usr/include/boost/regex/v4/regex_traits_defaults.hpp: + +/usr/include/boost/regex/v4/cpp_regex_traits.hpp: + +/usr/include/boost/regex/pattern_except.hpp: + +/usr/include/boost/regex/pending/static_mutex.hpp: + +/usr/include/boost/regex/v4/primary_transform.hpp: + +/usr/include/boost/regex/pending/object_cache.hpp: + +/usr/include/boost/regex/v4/c_regex_traits.hpp: + +/usr/include/boost/mpl/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/type_wrapper.hpp: + +/usr/include/boost/mpl/aux_/yes_no.hpp: + +/usr/include/boost/mpl/aux_/config/arrays.hpp: + +/usr/include/boost/mpl/aux_/config/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/config/msvc_typename.hpp: + +/usr/include/boost/static_assert.hpp: + +/usr/include/boost/regex/v4/match_flags.hpp: + +/usr/include/boost/regex/v4/regex_raw_buffer.hpp: + +/usr/include/boost/regex/v4/char_regex_traits.hpp: + +/usr/include/boost/regex/v4/states.hpp: + +/usr/include/boost/regex/v4/regbase.hpp: + +/usr/include/boost/regex/v4/iterator_traits.hpp: + +/usr/include/boost/regex/v4/basic_regex.hpp: + +/usr/include/boost/type_traits/is_same.hpp: + +/usr/include/boost/functional/hash.hpp: + +/usr/include/boost/functional/hash/hash.hpp: + +/usr/include/boost/functional/hash/hash_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float.hpp: + +/usr/include/boost/functional/hash/detail/float_functions.hpp: + +/usr/include/boost/config/no_tr1/cmath.hpp: + +/usr/include/boost/functional/hash/detail/limits.hpp: + +/usr/include/boost/integer/static_log2.hpp: + +/usr/include/boost/integer_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float_generic.hpp: + +/usr/include/boost/functional/hash/extensions.hpp: + +/usr/include/boost/detail/container_fwd.hpp: + +/usr/include/boost/regex/v4/basic_regex_creator.hpp: + +/usr/include/boost/regex/v4/basic_regex_parser.hpp: + +/usr/include/boost/regex/v4/sub_match.hpp: + +/usr/include/boost/regex/v4/regex_format.hpp: + +/usr/include/boost/type_traits/is_function.hpp: + +/usr/include/boost/type_traits/is_reference.hpp: + +/usr/include/boost/type_traits/detail/false_result.hpp: + +/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp: + +/usr/include/boost/type_traits/is_class.hpp: + +/usr/include/boost/type_traits/intrinsics.hpp: + +/usr/include/boost/type_traits/is_volatile.hpp: + +/usr/include/boost/type_traits/is_convertible.hpp: + +/usr/include/boost/type_traits/detail/yes_no_type.hpp: + +/usr/include/boost/type_traits/is_array.hpp: + +/usr/include/boost/type_traits/add_reference.hpp: + +/usr/include/boost/type_traits/ice.hpp: + +/usr/include/boost/type_traits/detail/ice_or.hpp: + +/usr/include/boost/type_traits/detail/ice_eq.hpp: + +/usr/include/boost/type_traits/is_arithmetic.hpp: + +/usr/include/boost/type_traits/is_integral.hpp: + +/usr/include/boost/type_traits/is_float.hpp: + +/usr/include/boost/type_traits/is_void.hpp: + +/usr/include/boost/type_traits/is_abstract.hpp: + +/usr/include/boost/type_traits/remove_pointer.hpp: + +/usr/include/boost/mpl/if.hpp: + +/usr/include/boost/mpl/aux_/value_wknd.hpp: + +/usr/include/boost/mpl/aux_/config/integral.hpp: + +/usr/include/boost/mpl/aux_/config/eti.hpp: + +/usr/include/boost/mpl/aux_/na_spec.hpp: + +/usr/include/boost/mpl/lambda_fwd.hpp: + +/usr/include/boost/mpl/void_fwd.hpp: + +/usr/include/boost/mpl/aux_/na.hpp: + +/usr/include/boost/mpl/aux_/na_fwd.hpp: + +/usr/include/boost/mpl/aux_/lambda_arity_param.hpp: + +/usr/include/boost/mpl/aux_/arity.hpp: + +/usr/include/boost/mpl/aux_/config/dtp.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/enum.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp: + +/usr/include/boost/mpl/limits/arity.hpp: + +/usr/include/boost/preprocessor/logical/and.hpp: + +/usr/include/boost/preprocessor/logical/bitand.hpp: + +/usr/include/boost/preprocessor/identity.hpp: + +/usr/include/boost/preprocessor/facilities/identity.hpp: + +/usr/include/boost/preprocessor/empty.hpp: + +/usr/include/boost/preprocessor/arithmetic/add.hpp: + +/usr/include/boost/preprocessor/arithmetic/dec.hpp: + +/usr/include/boost/preprocessor/control/while.hpp: + +/usr/include/boost/preprocessor/list/fold_left.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_left.hpp: + +/usr/include/boost/preprocessor/control/expr_iif.hpp: + +/usr/include/boost/preprocessor/list/adt.hpp: + +/usr/include/boost/preprocessor/detail/is_binary.hpp: + +/usr/include/boost/preprocessor/detail/check.hpp: + +/usr/include/boost/preprocessor/logical/compl.hpp: + +/usr/include/boost/preprocessor/list/fold_right.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_right.hpp: + +/usr/include/boost/preprocessor/list/reverse.hpp: + +/usr/include/boost/preprocessor/control/detail/while.hpp: + +/usr/include/boost/preprocessor/tuple/elem.hpp: + +/usr/include/boost/preprocessor/arithmetic/sub.hpp: + +/usr/include/boost/mpl/and.hpp: + +/usr/include/boost/mpl/aux_/config/use_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/nested_type_wknd.hpp: + +/usr/include/boost/mpl/aux_/include_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/config/compiler.hpp: + +/usr/include/boost/preprocessor/stringize.hpp: + +/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp: + +/usr/include/boost/mpl/not.hpp: + +/usr/include/boost/regex/v4/match_results.hpp: + +/usr/include/boost/regex/v4/protected_call.hpp: + +/usr/include/boost/regex/v4/perl_matcher.hpp: + +/usr/include/boost/regex/v4/iterator_category.hpp: + +/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp: + +/usr/include/boost/regex/v4/perl_matcher_common.hpp: + +/usr/include/boost/regex/v4/instances.hpp: + +/usr/include/boost/regex/v4/regex_match.hpp: + +/usr/include/boost/regex/v4/regex_search.hpp: + +/usr/include/boost/regex/v4/regex_iterator.hpp: + +/usr/include/boost/regex/v4/regex_token_iterator.hpp: + +/usr/include/boost/regex/v4/regex_grep.hpp: + +/usr/include/boost/regex/v4/regex_replace.hpp: + +/usr/include/boost/regex/v4/regex_merge.hpp: + +/usr/include/boost/regex/v4/regex_split.hpp: + +../boundary_mesh/algorithm/../MeshBuilder.hpp: + +../boundary_mesh/algorithm/RefineUniformly.hpp: + +../boundary_mesh/algorithm/../types.hpp: + +../boundary_mesh/algorithm/../FaceDispatch.hpp: + +../boundary_mesh/algorithm/RefineUniformly_tmpl.cpp: + +../boundary_mesh/algorithm/RefineUniformly.hpp: + +../boundary_mesh/FlexibleMesh_tmpl.cpp: + +../boundary_mesh/FlexibleMesh.hpp: + +../spaces/P0Space.hpp: + +../spaces/../hilbert.hpp: + +/usr/local/include/HLib/sparsematrix.h: + +/usr/local/include/HLib/basic.h: + +../../src/config.h: + +/usr/local/include/HLib/supermatrix.h: + +/usr/local/include/HLib/fullmatrix.h: + +/usr/local/include/HLib/lapack.h: + +/usr/local/include/HLib/blockcluster.h: + +/usr/local/include/HLib/cluster.h: + +/usr/local/include/HLib/clusterbasis.h: + +/usr/local/include/HLib/h2conversion.h: + +/usr/local/include/HLib/rkmatrix.h: + +/usr/local/include/HLib/sparsematrix.h: + +/usr/local/include/HLib/uniformmatrix.h: diff --git a/src/bem3d/src/laplace/.deps/testLaplace-t.Po b/src/bem3d/src/laplace/.deps/testLaplace-t.Po new file mode 100644 index 0000000..330d857 --- /dev/null +++ b/src/bem3d/src/laplace/.deps/testLaplace-t.Po @@ -0,0 +1,1430 @@ +testLaplace-t.o: t.cpp ../hilbert.hpp ../boundary_mesh/FlexibleMesh.hpp \ + ../boundary_mesh/FaceDispatch.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc \ + ../boundary_mesh/../generic/Singleton.hpp \ + ../boundary_mesh/../generic/Singleton_tmpl.cpp \ + ../boundary_mesh/../generic/Singleton.hpp \ + ../boundary_mesh/../generic/TypeList.hpp \ + ../boundary_mesh/../generic/BaseTypes.hpp \ + ../boundary_mesh/../generic/BaseTypes.hpp \ + ../boundary_mesh/exception/DispatchIdNotSet.hpp \ + /usr/include/c++/4.5/stdexcept /usr/include/c++/4.5/string \ + /usr/include/c++/4.5/bits/stringfwd.h \ + /usr/include/c++/4.5/bits/char_traits.h \ + /usr/include/c++/4.5/bits/postypes.h /usr/include/c++/4.5/cwchar \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/include/bits/wchar2.h /usr/include/c++/4.5/bits/localefwd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.5/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.5/iosfwd \ + /usr/include/c++/4.5/cctype /usr/include/ctype.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/c++/4.5/bits/ostream_insert.h \ + /usr/include/c++/4.5/cxxabi-forced.h \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h \ + /usr/include/c++/4.5/bits/basic_string.h \ + /usr/include/c++/4.5/ext/atomicity.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.5/bits/basic_string.tcc \ + ../boundary_mesh/FaceDispatch_tmpl.cpp \ + ../boundary_mesh/exception/CouldNotDispatchCall.hpp \ + /usr/include/c++/4.5/cassert /usr/include/assert.h \ + ../boundary_mesh/Face.hpp /usr/include/c++/4.5/iterator \ + /usr/include/c++/4.5/ostream /usr/include/c++/4.5/ios \ + /usr/include/c++/4.5/bits/ios_base.h \ + /usr/include/c++/4.5/bits/locale_classes.h \ + /usr/include/c++/4.5/bits/locale_classes.tcc \ + /usr/include/c++/4.5/streambuf /usr/include/c++/4.5/bits/streambuf.tcc \ + /usr/include/c++/4.5/bits/basic_ios.h \ + /usr/include/c++/4.5/bits/locale_facets.h /usr/include/c++/4.5/cwctype \ + /usr/include/wctype.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/4.5/bits/streambuf_iterator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/4.5/bits/locale_facets.tcc \ + /usr/include/c++/4.5/bits/basic_ios.tcc \ + /usr/include/c++/4.5/bits/ostream.tcc /usr/include/c++/4.5/istream \ + /usr/include/c++/4.5/bits/istream.tcc \ + /usr/include/c++/4.5/bits/stream_iterator.h ../boundary_mesh/types.hpp \ + /usr/include/c++/4.5/limits ../boundary_mesh/exception.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType.hpp \ + ../boundary_mesh/Face_tmpl.cpp /usr/include/c++/4.5/sstream \ + /usr/include/c++/4.5/bits/sstream.tcc ../boundary_mesh/HalfEdge.hpp \ + ../boundary_mesh/HalfEdge_tmpl.cpp ../boundary_mesh/Vertex.hpp \ + ../boundary_mesh/../generic/GenericVector.hpp \ + ../boundary_mesh/../generic/GenericVector_tmpl.cpp \ + ../boundary_mesh/../generic/GenericVector.hpp \ + ../boundary_mesh/Vertex_tmpl.cpp ../boundary_mesh/Mesh.hpp \ + ../boundary_mesh/MeshBuilder.hpp ../boundary_mesh/MeshBuilder_tmpl.cpp \ + /usr/include/boost/type_traits/is_pointer.hpp \ + /usr/include/boost/type_traits/is_member_pointer.hpp \ + /usr/include/boost/type_traits/config.hpp /usr/include/boost/config.hpp \ + /usr/include/boost/config/user.hpp \ + /usr/include/boost/config/select_compiler_config.hpp \ + /usr/include/boost/config/compiler/gcc.hpp \ + /usr/include/boost/config/select_stdlib_config.hpp \ + /usr/include/boost/config/no_tr1/utility.hpp \ + /usr/include/c++/4.5/utility /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/boost/config/stdlib/libstdcpp3.hpp \ + /usr/include/boost/config/select_platform_config.hpp \ + /usr/include/boost/config/platform/linux.hpp \ + /usr/include/c++/4.5/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/boost/config/posix_features.hpp \ + /usr/include/boost/config/suffix.hpp \ + /usr/include/boost/detail/workaround.hpp \ + /usr/include/boost/type_traits/is_member_function_pointer.hpp \ + /usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp \ + /usr/include/boost/type_traits/remove_cv.hpp \ + /usr/include/boost/type_traits/broken_compiler_spec.hpp \ + /usr/include/boost/mpl/aux_/lambda_support.hpp \ + /usr/include/boost/mpl/aux_/config/lambda.hpp \ + /usr/include/boost/mpl/aux_/config/ttp.hpp \ + /usr/include/boost/mpl/aux_/config/msvc.hpp \ + /usr/include/boost/mpl/aux_/config/gcc.hpp \ + /usr/include/boost/mpl/aux_/config/workaround.hpp \ + /usr/include/boost/mpl/aux_/config/ctps.hpp \ + /usr/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /usr/include/boost/type_traits/detail/type_trait_def.hpp \ + /usr/include/boost/type_traits/detail/template_arity_spec.hpp \ + /usr/include/boost/mpl/int.hpp /usr/include/boost/mpl/int_fwd.hpp \ + /usr/include/boost/mpl/aux_/adl_barrier.hpp \ + /usr/include/boost/mpl/aux_/config/adl.hpp \ + /usr/include/boost/mpl/aux_/config/intel.hpp \ + /usr/include/boost/mpl/aux_/nttp_decl.hpp \ + /usr/include/boost/mpl/aux_/config/nttp.hpp \ + /usr/include/boost/mpl/aux_/integral_wrapper.hpp \ + /usr/include/boost/mpl/integral_c_tag.hpp \ + /usr/include/boost/mpl/aux_/config/static_constant.hpp \ + /usr/include/boost/mpl/aux_/static_cast.hpp \ + /usr/include/boost/preprocessor/cat.hpp \ + /usr/include/boost/preprocessor/config/config.hpp \ + /usr/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/params.hpp \ + /usr/include/boost/mpl/aux_/config/preprocessor.hpp \ + /usr/include/boost/preprocessor/comma_if.hpp \ + /usr/include/boost/preprocessor/punctuation/comma_if.hpp \ + /usr/include/boost/preprocessor/control/if.hpp \ + /usr/include/boost/preprocessor/control/iif.hpp \ + /usr/include/boost/preprocessor/logical/bool.hpp \ + /usr/include/boost/preprocessor/facilities/empty.hpp \ + /usr/include/boost/preprocessor/punctuation/comma.hpp \ + /usr/include/boost/preprocessor/repeat.hpp \ + /usr/include/boost/preprocessor/repetition/repeat.hpp \ + /usr/include/boost/preprocessor/debug/error.hpp \ + /usr/include/boost/preprocessor/detail/auto_rec.hpp \ + /usr/include/boost/preprocessor/tuple/eat.hpp \ + /usr/include/boost/preprocessor/inc.hpp \ + /usr/include/boost/preprocessor/arithmetic/inc.hpp \ + /usr/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /usr/include/boost/type_traits/detail/type_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_def.hpp \ + /usr/include/boost/type_traits/integral_constant.hpp \ + /usr/include/boost/mpl/bool.hpp /usr/include/boost/mpl/bool_fwd.hpp \ + /usr/include/boost/mpl/integral_c.hpp \ + /usr/include/boost/mpl/integral_c_fwd.hpp \ + /usr/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /usr/include/boost/type_traits/detail/ice_and.hpp \ + /usr/include/boost/type_traits/detail/ice_not.hpp \ + /usr/include/boost/utility/enable_if.hpp ../boundary_mesh/Mesh.cpp \ + /usr/include/c++/4.5/iostream /usr/include/c++/4.5/set \ + /usr/include/c++/4.5/bits/stl_tree.h /usr/include/c++/4.5/bits/stl_set.h \ + /usr/include/c++/4.5/bits/stl_multiset.h /usr/include/c++/4.5/list \ + /usr/include/c++/4.5/bits/stl_list.h /usr/include/c++/4.5/bits/list.tcc \ + ../boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType.hpp \ + ../boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp \ + /usr/include/c++/4.5/cstring /usr/include/string.h \ + /usr/include/bits/string3.h ../boundary_mesh/face/Triangle_tmpl.hpp \ + ../boundary_mesh/face/Triangle.hpp \ + ../boundary_mesh/face/../../generic/BaseTypes.hpp \ + ../boundary_mesh/face/Triangle_tmpl.cpp \ + ../boundary_mesh/face/Triangle_tmpl.hpp \ + ../boundary_mesh/face/../Face.hpp \ + ../boundary_mesh/face/Parallelogram_tmpl.hpp \ + ../boundary_mesh/face/Parallelogram.hpp \ + ../boundary_mesh/face/ConvexQuadrilateral.hpp \ + ../boundary_mesh/face/Quadrilateral.hpp \ + ../boundary_mesh/face/../types.hpp \ + ../boundary_mesh/face/Parallelogram_tmpl.cpp /usr/include/c++/4.5/cmath \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/c++/4.5/bits/cmath.tcc \ + ../boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp \ + ../boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp \ + ../boundary_mesh/face/Quadrilateral_tmpl.hpp \ + ../boundary_mesh/face/Quadrilateral_tmpl.cpp \ + ../boundary_mesh/face/Parallelogram_tmpl.hpp \ + ../boundary_mesh/algorithm/HandleObj.hpp \ + ../boundary_mesh/algorithm/HandleObj_tmpl.cpp \ + /usr/include/c++/4.5/fstream /usr/include/c++/4.5/bits/codecvt.h \ + /usr/include/c++/4.5/cstdio /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/bits/stdio_lim.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h \ + /usr/include/c++/4.5/bits/fstream.tcc /usr/include/boost/regex.hpp \ + /usr/include/boost/regex/config.hpp /usr/include/boost/regex/user.hpp \ + /usr/include/boost/regex/config/cwchar.hpp \ + /usr/include/boost/config/auto_link.hpp \ + /usr/include/boost/regex/v4/regex.hpp \ + /usr/include/boost/regex/v4/regex_workaround.hpp \ + /usr/include/c++/4.5/climits \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h /usr/include/c++/4.5/map \ + /usr/include/c++/4.5/bits/stl_map.h \ + /usr/include/c++/4.5/bits/stl_multimap.h /usr/include/boost/limits.hpp \ + /usr/include/boost/assert.hpp /usr/include/boost/cstdint.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h \ + /usr/include/stdint.h /usr/include/boost/throw_exception.hpp \ + /usr/include/boost/exception/detail/attribute_noreturn.hpp \ + /usr/include/boost/exception/exception.hpp \ + /usr/include/boost/current_function.hpp \ + /usr/include/boost/scoped_ptr.hpp \ + /usr/include/boost/smart_ptr/scoped_ptr.hpp \ + /usr/include/boost/checked_delete.hpp /usr/include/c++/4.5/memory \ + /usr/include/c++/4.5/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.5/backward/auto_ptr.h \ + /usr/include/boost/smart_ptr/detail/operator_bool.hpp \ + /usr/include/boost/scoped_array.hpp \ + /usr/include/boost/smart_ptr/scoped_array.hpp \ + /usr/include/boost/shared_ptr.hpp \ + /usr/include/boost/smart_ptr/shared_ptr.hpp \ + /usr/include/boost/config/no_tr1/memory.hpp \ + /usr/include/boost/smart_ptr/detail/shared_count.hpp \ + /usr/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /usr/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /usr/include/boost/detail/sp_typeinfo.hpp /usr/include/c++/4.5/typeinfo \ + /usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /usr/include/c++/4.5/functional \ + /usr/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock.hpp \ + /usr/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /usr/include/boost/smart_ptr/detail/yield_k.hpp \ + /usr/include/boost/memory_order.hpp /usr/include/c++/4.5/locale \ + /usr/include/c++/4.5/bits/locale_facets_nonio.h \ + /usr/include/c++/4.5/ctime \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/4.5/bits/locale_facets_nonio.tcc \ + /usr/include/boost/regex_fwd.hpp \ + /usr/include/boost/regex/v4/regex_fwd.hpp \ + /usr/include/boost/regex/regex_traits.hpp \ + /usr/include/boost/regex/v4/regex_traits.hpp \ + /usr/include/boost/regex/v4/syntax_type.hpp \ + /usr/include/boost/regex/v4/error_type.hpp \ + /usr/include/boost/regex/v4/regex_traits_defaults.hpp \ + /usr/include/boost/regex/v4/cpp_regex_traits.hpp \ + /usr/include/boost/regex/pattern_except.hpp \ + /usr/include/boost/regex/pending/static_mutex.hpp \ + /usr/include/boost/regex/v4/primary_transform.hpp \ + /usr/include/boost/regex/pending/object_cache.hpp \ + /usr/include/boost/regex/v4/c_regex_traits.hpp \ + /usr/include/boost/mpl/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/type_wrapper.hpp \ + /usr/include/boost/mpl/aux_/yes_no.hpp \ + /usr/include/boost/mpl/aux_/config/arrays.hpp \ + /usr/include/boost/mpl/aux_/config/has_xxx.hpp \ + /usr/include/boost/mpl/aux_/config/msvc_typename.hpp \ + /usr/include/boost/static_assert.hpp \ + /usr/include/boost/regex/v4/match_flags.hpp \ + /usr/include/boost/regex/v4/regex_raw_buffer.hpp \ + /usr/include/boost/regex/v4/char_regex_traits.hpp \ + /usr/include/boost/regex/v4/states.hpp \ + /usr/include/boost/regex/v4/regbase.hpp \ + /usr/include/boost/regex/v4/iterator_traits.hpp \ + /usr/include/boost/regex/v4/basic_regex.hpp \ + /usr/include/boost/type_traits/is_same.hpp \ + /usr/include/boost/functional/hash.hpp \ + /usr/include/boost/functional/hash/hash.hpp \ + /usr/include/boost/functional/hash/hash_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float.hpp \ + /usr/include/boost/functional/hash/detail/float_functions.hpp \ + /usr/include/boost/config/no_tr1/cmath.hpp \ + /usr/include/boost/functional/hash/detail/limits.hpp \ + /usr/include/boost/integer/static_log2.hpp \ + /usr/include/boost/integer_fwd.hpp \ + /usr/include/boost/functional/hash/detail/hash_float_generic.hpp \ + /usr/include/boost/functional/hash/extensions.hpp \ + /usr/include/boost/detail/container_fwd.hpp \ + /usr/include/boost/regex/v4/basic_regex_creator.hpp \ + /usr/include/boost/regex/v4/basic_regex_parser.hpp \ + /usr/include/boost/regex/v4/sub_match.hpp \ + /usr/include/boost/regex/v4/regex_format.hpp \ + /usr/include/boost/type_traits/is_function.hpp \ + /usr/include/boost/type_traits/is_reference.hpp \ + /usr/include/boost/type_traits/detail/false_result.hpp \ + /usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + /usr/include/boost/type_traits/is_class.hpp \ + /usr/include/boost/type_traits/intrinsics.hpp \ + /usr/include/boost/type_traits/is_volatile.hpp \ + /usr/include/boost/type_traits/is_convertible.hpp \ + /usr/include/boost/type_traits/detail/yes_no_type.hpp \ + /usr/include/boost/type_traits/is_array.hpp \ + /usr/include/boost/type_traits/add_reference.hpp \ + /usr/include/boost/type_traits/ice.hpp \ + /usr/include/boost/type_traits/detail/ice_or.hpp \ + /usr/include/boost/type_traits/detail/ice_eq.hpp \ + /usr/include/boost/type_traits/is_arithmetic.hpp \ + /usr/include/boost/type_traits/is_integral.hpp \ + /usr/include/boost/type_traits/is_float.hpp \ + /usr/include/boost/type_traits/is_void.hpp \ + /usr/include/boost/type_traits/is_abstract.hpp \ + /usr/include/boost/type_traits/remove_pointer.hpp \ + /usr/include/boost/mpl/if.hpp /usr/include/boost/mpl/aux_/value_wknd.hpp \ + /usr/include/boost/mpl/aux_/config/integral.hpp \ + /usr/include/boost/mpl/aux_/config/eti.hpp \ + /usr/include/boost/mpl/aux_/na_spec.hpp \ + /usr/include/boost/mpl/lambda_fwd.hpp \ + /usr/include/boost/mpl/void_fwd.hpp /usr/include/boost/mpl/aux_/na.hpp \ + /usr/include/boost/mpl/aux_/na_fwd.hpp \ + /usr/include/boost/mpl/aux_/lambda_arity_param.hpp \ + /usr/include/boost/mpl/aux_/arity.hpp \ + /usr/include/boost/mpl/aux_/config/dtp.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/enum.hpp \ + /usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp \ + /usr/include/boost/mpl/limits/arity.hpp \ + /usr/include/boost/preprocessor/logical/and.hpp \ + /usr/include/boost/preprocessor/logical/bitand.hpp \ + /usr/include/boost/preprocessor/identity.hpp \ + /usr/include/boost/preprocessor/facilities/identity.hpp \ + /usr/include/boost/preprocessor/empty.hpp \ + /usr/include/boost/preprocessor/arithmetic/add.hpp \ + /usr/include/boost/preprocessor/arithmetic/dec.hpp \ + /usr/include/boost/preprocessor/control/while.hpp \ + /usr/include/boost/preprocessor/list/fold_left.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_left.hpp \ + /usr/include/boost/preprocessor/control/expr_iif.hpp \ + /usr/include/boost/preprocessor/list/adt.hpp \ + /usr/include/boost/preprocessor/detail/is_binary.hpp \ + /usr/include/boost/preprocessor/detail/check.hpp \ + /usr/include/boost/preprocessor/logical/compl.hpp \ + /usr/include/boost/preprocessor/list/fold_right.hpp \ + /usr/include/boost/preprocessor/list/detail/fold_right.hpp \ + /usr/include/boost/preprocessor/list/reverse.hpp \ + /usr/include/boost/preprocessor/control/detail/while.hpp \ + /usr/include/boost/preprocessor/tuple/elem.hpp \ + /usr/include/boost/preprocessor/arithmetic/sub.hpp \ + /usr/include/boost/mpl/and.hpp \ + /usr/include/boost/mpl/aux_/config/use_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/nested_type_wknd.hpp \ + /usr/include/boost/mpl/aux_/include_preprocessed.hpp \ + /usr/include/boost/mpl/aux_/config/compiler.hpp \ + /usr/include/boost/preprocessor/stringize.hpp \ + /usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp \ + /usr/include/boost/mpl/not.hpp \ + /usr/include/boost/regex/v4/match_results.hpp \ + /usr/include/boost/regex/v4/protected_call.hpp \ + /usr/include/boost/regex/v4/perl_matcher.hpp \ + /usr/include/boost/regex/v4/iterator_category.hpp \ + /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp \ + /usr/include/boost/regex/v4/perl_matcher_common.hpp \ + /usr/include/boost/regex/v4/instances.hpp \ + /usr/include/boost/regex/v4/regex_match.hpp \ + /usr/include/boost/regex/v4/regex_search.hpp \ + /usr/include/boost/regex/v4/regex_iterator.hpp \ + /usr/include/boost/regex/v4/regex_token_iterator.hpp \ + /usr/include/boost/regex/v4/regex_grep.hpp \ + /usr/include/boost/regex/v4/regex_replace.hpp \ + /usr/include/boost/regex/v4/regex_merge.hpp \ + /usr/include/boost/regex/v4/regex_split.hpp \ + ../boundary_mesh/algorithm/../MeshBuilder.hpp \ + ../boundary_mesh/algorithm/RefineUniformly.hpp \ + ../boundary_mesh/algorithm/../types.hpp \ + ../boundary_mesh/algorithm/../FaceDispatch.hpp \ + ../boundary_mesh/algorithm/RefineUniformly_tmpl.cpp \ + ../boundary_mesh/algorithm/RefineUniformly.hpp \ + ../boundary_mesh/FlexibleMesh_tmpl.cpp ../boundary_mesh/FlexibleMesh.hpp \ + ../spaces/P0Space.hpp ../spaces/../hilbert.hpp \ + /usr/local/include/HLib/sparsematrix.h /usr/local/include/HLib/basic.h \ + ../../src/config.h /usr/local/include/HLib/supermatrix.h \ + /usr/local/include/HLib/fullmatrix.h /usr/local/include/HLib/lapack.h \ + /usr/local/include/HLib/blockcluster.h /usr/local/include/HLib/cluster.h \ + /usr/local/include/HLib/clusterbasis.h \ + /usr/local/include/HLib/h2conversion.h \ + /usr/local/include/HLib/rkmatrix.h \ + /usr/local/include/HLib/sparsematrix.h \ + /usr/local/include/HLib/uniformmatrix.h \ + ../boundary_mesh/FlexibleMesh.hpp ../spaces/P0Space.hpp \ + SimpleLayerPotential.hpp ../boundary_mesh/FaceDispatch.hpp \ + ../HLibOperator.hpp ../HLibOperator_fwd.hpp \ + /usr/local/include/HLib/cluster.h /usr/local/include/HLib/supermatrix.h \ + /usr/local/include/HLib/krylov.h \ + /usr/local/include/HLib/factorisations.h \ + /usr/local/include/HLib/graphics.h /usr/local/include/HLib/aca.h \ + /usr/local/include/HLib/surfacebem.h /usr/local/include/HLib/bem3d.h \ + /usr/local/include/HLib/h2virtual.h /usr/local/include/HLib/aca.h \ + /usr/local/include/HLib/quadrature2d.h ../HLibOperator_tmpl.cpp + +../hilbert.hpp: + +../boundary_mesh/FlexibleMesh.hpp: + +../boundary_mesh/FaceDispatch.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +../boundary_mesh/../generic/Singleton.hpp: + +../boundary_mesh/../generic/Singleton_tmpl.cpp: + +../boundary_mesh/../generic/Singleton.hpp: + +../boundary_mesh/../generic/TypeList.hpp: + +../boundary_mesh/../generic/BaseTypes.hpp: + +../boundary_mesh/../generic/BaseTypes.hpp: + +../boundary_mesh/exception/DispatchIdNotSet.hpp: + +/usr/include/c++/4.5/stdexcept: + +/usr/include/c++/4.5/string: + +/usr/include/c++/4.5/bits/stringfwd.h: + +/usr/include/c++/4.5/bits/char_traits.h: + +/usr/include/c++/4.5/bits/postypes.h: + +/usr/include/c++/4.5/cwchar: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.5/bits/localefwd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.5/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.5/iosfwd: + +/usr/include/c++/4.5/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/4.5/bits/ostream_insert.h: + +/usr/include/c++/4.5/cxxabi-forced.h: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +/usr/include/c++/4.5/bits/basic_string.h: + +/usr/include/c++/4.5/ext/atomicity.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.5/bits/basic_string.tcc: + +../boundary_mesh/FaceDispatch_tmpl.cpp: + +../boundary_mesh/exception/CouldNotDispatchCall.hpp: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: + +../boundary_mesh/Face.hpp: + +/usr/include/c++/4.5/iterator: + +/usr/include/c++/4.5/ostream: + +/usr/include/c++/4.5/ios: + +/usr/include/c++/4.5/bits/ios_base.h: + +/usr/include/c++/4.5/bits/locale_classes.h: + +/usr/include/c++/4.5/bits/locale_classes.tcc: + +/usr/include/c++/4.5/streambuf: + +/usr/include/c++/4.5/bits/streambuf.tcc: + +/usr/include/c++/4.5/bits/basic_ios.h: + +/usr/include/c++/4.5/bits/locale_facets.h: + +/usr/include/c++/4.5/cwctype: + +/usr/include/wctype.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_base.h: + +/usr/include/c++/4.5/bits/streambuf_iterator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/ctype_inline.h: + +/usr/include/c++/4.5/bits/locale_facets.tcc: + +/usr/include/c++/4.5/bits/basic_ios.tcc: + +/usr/include/c++/4.5/bits/ostream.tcc: + +/usr/include/c++/4.5/istream: + +/usr/include/c++/4.5/bits/istream.tcc: + +/usr/include/c++/4.5/bits/stream_iterator.h: + +../boundary_mesh/types.hpp: + +/usr/include/c++/4.5/limits: + +../boundary_mesh/exception.hpp: + +../boundary_mesh/exception/NoMatchingFaceType.hpp: + +../boundary_mesh/Face_tmpl.cpp: + +/usr/include/c++/4.5/sstream: + +/usr/include/c++/4.5/bits/sstream.tcc: + +../boundary_mesh/HalfEdge.hpp: + +../boundary_mesh/HalfEdge_tmpl.cpp: + +../boundary_mesh/Vertex.hpp: + +../boundary_mesh/../generic/GenericVector.hpp: + +../boundary_mesh/../generic/GenericVector_tmpl.cpp: + +../boundary_mesh/../generic/GenericVector.hpp: + +../boundary_mesh/Vertex_tmpl.cpp: + +../boundary_mesh/Mesh.hpp: + +../boundary_mesh/MeshBuilder.hpp: + +../boundary_mesh/MeshBuilder_tmpl.cpp: + +/usr/include/boost/type_traits/is_pointer.hpp: + +/usr/include/boost/type_traits/is_member_pointer.hpp: + +/usr/include/boost/type_traits/config.hpp: + +/usr/include/boost/config.hpp: + +/usr/include/boost/config/user.hpp: + +/usr/include/boost/config/select_compiler_config.hpp: + +/usr/include/boost/config/compiler/gcc.hpp: + +/usr/include/boost/config/select_stdlib_config.hpp: + +/usr/include/boost/config/no_tr1/utility.hpp: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/boost/config/stdlib/libstdcpp3.hpp: + +/usr/include/boost/config/select_platform_config.hpp: + +/usr/include/boost/config/platform/linux.hpp: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/boost/config/posix_features.hpp: + +/usr/include/boost/config/suffix.hpp: + +/usr/include/boost/detail/workaround.hpp: + +/usr/include/boost/type_traits/is_member_function_pointer.hpp: + +/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp: + +/usr/include/boost/type_traits/remove_cv.hpp: + +/usr/include/boost/type_traits/broken_compiler_spec.hpp: + +/usr/include/boost/mpl/aux_/lambda_support.hpp: + +/usr/include/boost/mpl/aux_/config/lambda.hpp: + +/usr/include/boost/mpl/aux_/config/ttp.hpp: + +/usr/include/boost/mpl/aux_/config/msvc.hpp: + +/usr/include/boost/mpl/aux_/config/gcc.hpp: + +/usr/include/boost/mpl/aux_/config/workaround.hpp: + +/usr/include/boost/mpl/aux_/config/ctps.hpp: + +/usr/include/boost/type_traits/detail/cv_traits_impl.hpp: + +/usr/include/boost/type_traits/detail/type_trait_def.hpp: + +/usr/include/boost/type_traits/detail/template_arity_spec.hpp: + +/usr/include/boost/mpl/int.hpp: + +/usr/include/boost/mpl/int_fwd.hpp: + +/usr/include/boost/mpl/aux_/adl_barrier.hpp: + +/usr/include/boost/mpl/aux_/config/adl.hpp: + +/usr/include/boost/mpl/aux_/config/intel.hpp: + +/usr/include/boost/mpl/aux_/nttp_decl.hpp: + +/usr/include/boost/mpl/aux_/config/nttp.hpp: + +/usr/include/boost/mpl/aux_/integral_wrapper.hpp: + +/usr/include/boost/mpl/integral_c_tag.hpp: + +/usr/include/boost/mpl/aux_/config/static_constant.hpp: + +/usr/include/boost/mpl/aux_/static_cast.hpp: + +/usr/include/boost/preprocessor/cat.hpp: + +/usr/include/boost/preprocessor/config/config.hpp: + +/usr/include/boost/mpl/aux_/template_arity_fwd.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/params.hpp: + +/usr/include/boost/mpl/aux_/config/preprocessor.hpp: + +/usr/include/boost/preprocessor/comma_if.hpp: + +/usr/include/boost/preprocessor/punctuation/comma_if.hpp: + +/usr/include/boost/preprocessor/control/if.hpp: + +/usr/include/boost/preprocessor/control/iif.hpp: + +/usr/include/boost/preprocessor/logical/bool.hpp: + +/usr/include/boost/preprocessor/facilities/empty.hpp: + +/usr/include/boost/preprocessor/punctuation/comma.hpp: + +/usr/include/boost/preprocessor/repeat.hpp: + +/usr/include/boost/preprocessor/repetition/repeat.hpp: + +/usr/include/boost/preprocessor/debug/error.hpp: + +/usr/include/boost/preprocessor/detail/auto_rec.hpp: + +/usr/include/boost/preprocessor/tuple/eat.hpp: + +/usr/include/boost/preprocessor/inc.hpp: + +/usr/include/boost/preprocessor/arithmetic/inc.hpp: + +/usr/include/boost/mpl/aux_/config/overload_resolution.hpp: + +/usr/include/boost/type_traits/detail/type_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_def.hpp: + +/usr/include/boost/type_traits/integral_constant.hpp: + +/usr/include/boost/mpl/bool.hpp: + +/usr/include/boost/mpl/bool_fwd.hpp: + +/usr/include/boost/mpl/integral_c.hpp: + +/usr/include/boost/mpl/integral_c_fwd.hpp: + +/usr/include/boost/type_traits/detail/bool_trait_undef.hpp: + +/usr/include/boost/type_traits/detail/ice_and.hpp: + +/usr/include/boost/type_traits/detail/ice_not.hpp: + +/usr/include/boost/utility/enable_if.hpp: + +../boundary_mesh/Mesh.cpp: + +/usr/include/c++/4.5/iostream: + +/usr/include/c++/4.5/set: + +/usr/include/c++/4.5/bits/stl_tree.h: + +/usr/include/c++/4.5/bits/stl_set.h: + +/usr/include/c++/4.5/bits/stl_multiset.h: + +/usr/include/c++/4.5/list: + +/usr/include/c++/4.5/bits/stl_list.h: + +/usr/include/c++/4.5/bits/list.tcc: + +../boundary_mesh/exception/NoMatchingFaceType_tmpl.hpp: + +../boundary_mesh/exception/NoMatchingFaceType.hpp: + +../boundary_mesh/exception/NoMatchingFaceType_tmpl.cpp: + +/usr/include/c++/4.5/cstring: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +../boundary_mesh/face/Triangle_tmpl.hpp: + +../boundary_mesh/face/Triangle.hpp: + +../boundary_mesh/face/../../generic/BaseTypes.hpp: + +../boundary_mesh/face/Triangle_tmpl.cpp: + +../boundary_mesh/face/Triangle_tmpl.hpp: + +../boundary_mesh/face/../Face.hpp: + +../boundary_mesh/face/Parallelogram_tmpl.hpp: + +../boundary_mesh/face/Parallelogram.hpp: + +../boundary_mesh/face/ConvexQuadrilateral.hpp: + +../boundary_mesh/face/Quadrilateral.hpp: + +../boundary_mesh/face/../types.hpp: + +../boundary_mesh/face/Parallelogram_tmpl.cpp: + +/usr/include/c++/4.5/cmath: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/c++/4.5/bits/cmath.tcc: + +../boundary_mesh/face/ConvexQuadrilateral_tmpl.hpp: + +../boundary_mesh/face/ConvexQuadrilateral_tmpl.cpp: + +../boundary_mesh/face/Quadrilateral_tmpl.hpp: + +../boundary_mesh/face/Quadrilateral_tmpl.cpp: + +../boundary_mesh/face/Parallelogram_tmpl.hpp: + +../boundary_mesh/algorithm/HandleObj.hpp: + +../boundary_mesh/algorithm/HandleObj_tmpl.cpp: + +/usr/include/c++/4.5/fstream: + +/usr/include/c++/4.5/bits/codecvt.h: + +/usr/include/c++/4.5/cstdio: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/basic_file.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++io.h: + +/usr/include/c++/4.5/bits/fstream.tcc: + +/usr/include/boost/regex.hpp: + +/usr/include/boost/regex/config.hpp: + +/usr/include/boost/regex/user.hpp: + +/usr/include/boost/regex/config/cwchar.hpp: + +/usr/include/boost/config/auto_link.hpp: + +/usr/include/boost/regex/v4/regex.hpp: + +/usr/include/boost/regex/v4/regex_workaround.hpp: + +/usr/include/c++/4.5/climits: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/map: + +/usr/include/c++/4.5/bits/stl_map.h: + +/usr/include/c++/4.5/bits/stl_multimap.h: + +/usr/include/boost/limits.hpp: + +/usr/include/boost/assert.hpp: + +/usr/include/boost/cstdint.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/boost/throw_exception.hpp: + +/usr/include/boost/exception/detail/attribute_noreturn.hpp: + +/usr/include/boost/exception/exception.hpp: + +/usr/include/boost/current_function.hpp: + +/usr/include/boost/scoped_ptr.hpp: + +/usr/include/boost/smart_ptr/scoped_ptr.hpp: + +/usr/include/boost/checked_delete.hpp: + +/usr/include/c++/4.5/memory: + +/usr/include/c++/4.5/bits/stl_raw_storage_iter.h: + +/usr/include/c++/4.5/backward/auto_ptr.h: + +/usr/include/boost/smart_ptr/detail/operator_bool.hpp: + +/usr/include/boost/scoped_array.hpp: + +/usr/include/boost/smart_ptr/scoped_array.hpp: + +/usr/include/boost/shared_ptr.hpp: + +/usr/include/boost/smart_ptr/shared_ptr.hpp: + +/usr/include/boost/config/no_tr1/memory.hpp: + +/usr/include/boost/smart_ptr/detail/shared_count.hpp: + +/usr/include/boost/smart_ptr/bad_weak_ptr.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base.hpp: + +/usr/include/boost/smart_ptr/detail/sp_has_sync.hpp: + +/usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp: + +/usr/include/boost/detail/sp_typeinfo.hpp: + +/usr/include/c++/4.5/typeinfo: + +/usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/boost/smart_ptr/detail/sp_convertible.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_pool.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock.hpp: + +/usr/include/boost/smart_ptr/detail/spinlock_sync.hpp: + +/usr/include/boost/smart_ptr/detail/yield_k.hpp: + +/usr/include/boost/memory_order.hpp: + +/usr/include/c++/4.5/locale: + +/usr/include/c++/4.5/bits/locale_facets_nonio.h: + +/usr/include/c++/4.5/ctime: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/time_members.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/messages_members.h: + +/usr/include/libintl.h: + +/usr/include/c++/4.5/bits/locale_facets_nonio.tcc: + +/usr/include/boost/regex_fwd.hpp: + +/usr/include/boost/regex/v4/regex_fwd.hpp: + +/usr/include/boost/regex/regex_traits.hpp: + +/usr/include/boost/regex/v4/regex_traits.hpp: + +/usr/include/boost/regex/v4/syntax_type.hpp: + +/usr/include/boost/regex/v4/error_type.hpp: + +/usr/include/boost/regex/v4/regex_traits_defaults.hpp: + +/usr/include/boost/regex/v4/cpp_regex_traits.hpp: + +/usr/include/boost/regex/pattern_except.hpp: + +/usr/include/boost/regex/pending/static_mutex.hpp: + +/usr/include/boost/regex/v4/primary_transform.hpp: + +/usr/include/boost/regex/pending/object_cache.hpp: + +/usr/include/boost/regex/v4/c_regex_traits.hpp: + +/usr/include/boost/mpl/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/type_wrapper.hpp: + +/usr/include/boost/mpl/aux_/yes_no.hpp: + +/usr/include/boost/mpl/aux_/config/arrays.hpp: + +/usr/include/boost/mpl/aux_/config/has_xxx.hpp: + +/usr/include/boost/mpl/aux_/config/msvc_typename.hpp: + +/usr/include/boost/static_assert.hpp: + +/usr/include/boost/regex/v4/match_flags.hpp: + +/usr/include/boost/regex/v4/regex_raw_buffer.hpp: + +/usr/include/boost/regex/v4/char_regex_traits.hpp: + +/usr/include/boost/regex/v4/states.hpp: + +/usr/include/boost/regex/v4/regbase.hpp: + +/usr/include/boost/regex/v4/iterator_traits.hpp: + +/usr/include/boost/regex/v4/basic_regex.hpp: + +/usr/include/boost/type_traits/is_same.hpp: + +/usr/include/boost/functional/hash.hpp: + +/usr/include/boost/functional/hash/hash.hpp: + +/usr/include/boost/functional/hash/hash_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float.hpp: + +/usr/include/boost/functional/hash/detail/float_functions.hpp: + +/usr/include/boost/config/no_tr1/cmath.hpp: + +/usr/include/boost/functional/hash/detail/limits.hpp: + +/usr/include/boost/integer/static_log2.hpp: + +/usr/include/boost/integer_fwd.hpp: + +/usr/include/boost/functional/hash/detail/hash_float_generic.hpp: + +/usr/include/boost/functional/hash/extensions.hpp: + +/usr/include/boost/detail/container_fwd.hpp: + +/usr/include/boost/regex/v4/basic_regex_creator.hpp: + +/usr/include/boost/regex/v4/basic_regex_parser.hpp: + +/usr/include/boost/regex/v4/sub_match.hpp: + +/usr/include/boost/regex/v4/regex_format.hpp: + +/usr/include/boost/type_traits/is_function.hpp: + +/usr/include/boost/type_traits/is_reference.hpp: + +/usr/include/boost/type_traits/detail/false_result.hpp: + +/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp: + +/usr/include/boost/type_traits/is_class.hpp: + +/usr/include/boost/type_traits/intrinsics.hpp: + +/usr/include/boost/type_traits/is_volatile.hpp: + +/usr/include/boost/type_traits/is_convertible.hpp: + +/usr/include/boost/type_traits/detail/yes_no_type.hpp: + +/usr/include/boost/type_traits/is_array.hpp: + +/usr/include/boost/type_traits/add_reference.hpp: + +/usr/include/boost/type_traits/ice.hpp: + +/usr/include/boost/type_traits/detail/ice_or.hpp: + +/usr/include/boost/type_traits/detail/ice_eq.hpp: + +/usr/include/boost/type_traits/is_arithmetic.hpp: + +/usr/include/boost/type_traits/is_integral.hpp: + +/usr/include/boost/type_traits/is_float.hpp: + +/usr/include/boost/type_traits/is_void.hpp: + +/usr/include/boost/type_traits/is_abstract.hpp: + +/usr/include/boost/type_traits/remove_pointer.hpp: + +/usr/include/boost/mpl/if.hpp: + +/usr/include/boost/mpl/aux_/value_wknd.hpp: + +/usr/include/boost/mpl/aux_/config/integral.hpp: + +/usr/include/boost/mpl/aux_/config/eti.hpp: + +/usr/include/boost/mpl/aux_/na_spec.hpp: + +/usr/include/boost/mpl/lambda_fwd.hpp: + +/usr/include/boost/mpl/void_fwd.hpp: + +/usr/include/boost/mpl/aux_/na.hpp: + +/usr/include/boost/mpl/aux_/na_fwd.hpp: + +/usr/include/boost/mpl/aux_/lambda_arity_param.hpp: + +/usr/include/boost/mpl/aux_/arity.hpp: + +/usr/include/boost/mpl/aux_/config/dtp.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/enum.hpp: + +/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp: + +/usr/include/boost/mpl/limits/arity.hpp: + +/usr/include/boost/preprocessor/logical/and.hpp: + +/usr/include/boost/preprocessor/logical/bitand.hpp: + +/usr/include/boost/preprocessor/identity.hpp: + +/usr/include/boost/preprocessor/facilities/identity.hpp: + +/usr/include/boost/preprocessor/empty.hpp: + +/usr/include/boost/preprocessor/arithmetic/add.hpp: + +/usr/include/boost/preprocessor/arithmetic/dec.hpp: + +/usr/include/boost/preprocessor/control/while.hpp: + +/usr/include/boost/preprocessor/list/fold_left.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_left.hpp: + +/usr/include/boost/preprocessor/control/expr_iif.hpp: + +/usr/include/boost/preprocessor/list/adt.hpp: + +/usr/include/boost/preprocessor/detail/is_binary.hpp: + +/usr/include/boost/preprocessor/detail/check.hpp: + +/usr/include/boost/preprocessor/logical/compl.hpp: + +/usr/include/boost/preprocessor/list/fold_right.hpp: + +/usr/include/boost/preprocessor/list/detail/fold_right.hpp: + +/usr/include/boost/preprocessor/list/reverse.hpp: + +/usr/include/boost/preprocessor/control/detail/while.hpp: + +/usr/include/boost/preprocessor/tuple/elem.hpp: + +/usr/include/boost/preprocessor/arithmetic/sub.hpp: + +/usr/include/boost/mpl/and.hpp: + +/usr/include/boost/mpl/aux_/config/use_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/nested_type_wknd.hpp: + +/usr/include/boost/mpl/aux_/include_preprocessed.hpp: + +/usr/include/boost/mpl/aux_/config/compiler.hpp: + +/usr/include/boost/preprocessor/stringize.hpp: + +/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp: + +/usr/include/boost/mpl/not.hpp: + +/usr/include/boost/regex/v4/match_results.hpp: + +/usr/include/boost/regex/v4/protected_call.hpp: + +/usr/include/boost/regex/v4/perl_matcher.hpp: + +/usr/include/boost/regex/v4/iterator_category.hpp: + +/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp: + +/usr/include/boost/regex/v4/perl_matcher_common.hpp: + +/usr/include/boost/regex/v4/instances.hpp: + +/usr/include/boost/regex/v4/regex_match.hpp: + +/usr/include/boost/regex/v4/regex_search.hpp: + +/usr/include/boost/regex/v4/regex_iterator.hpp: + +/usr/include/boost/regex/v4/regex_token_iterator.hpp: + +/usr/include/boost/regex/v4/regex_grep.hpp: + +/usr/include/boost/regex/v4/regex_replace.hpp: + +/usr/include/boost/regex/v4/regex_merge.hpp: + +/usr/include/boost/regex/v4/regex_split.hpp: + +../boundary_mesh/algorithm/../MeshBuilder.hpp: + +../boundary_mesh/algorithm/RefineUniformly.hpp: + +../boundary_mesh/algorithm/../types.hpp: + +../boundary_mesh/algorithm/../FaceDispatch.hpp: + +../boundary_mesh/algorithm/RefineUniformly_tmpl.cpp: + +../boundary_mesh/algorithm/RefineUniformly.hpp: + +../boundary_mesh/FlexibleMesh_tmpl.cpp: + +../boundary_mesh/FlexibleMesh.hpp: + +../spaces/P0Space.hpp: + +../spaces/../hilbert.hpp: + +/usr/local/include/HLib/sparsematrix.h: + +/usr/local/include/HLib/basic.h: + +../../src/config.h: + +/usr/local/include/HLib/supermatrix.h: + +/usr/local/include/HLib/fullmatrix.h: + +/usr/local/include/HLib/lapack.h: + +/usr/local/include/HLib/blockcluster.h: + +/usr/local/include/HLib/cluster.h: + +/usr/local/include/HLib/clusterbasis.h: + +/usr/local/include/HLib/h2conversion.h: + +/usr/local/include/HLib/rkmatrix.h: + +/usr/local/include/HLib/sparsematrix.h: + +/usr/local/include/HLib/uniformmatrix.h: + +../boundary_mesh/FlexibleMesh.hpp: + +../spaces/P0Space.hpp: + +SimpleLayerPotential.hpp: + +../boundary_mesh/FaceDispatch.hpp: + +../HLibOperator.hpp: + +../HLibOperator_fwd.hpp: + +/usr/local/include/HLib/cluster.h: + +/usr/local/include/HLib/supermatrix.h: + +/usr/local/include/HLib/krylov.h: + +/usr/local/include/HLib/factorisations.h: + +/usr/local/include/HLib/graphics.h: + +/usr/local/include/HLib/aca.h: + +/usr/local/include/HLib/surfacebem.h: + +/usr/local/include/HLib/bem3d.h: + +/usr/local/include/HLib/h2virtual.h: + +/usr/local/include/HLib/aca.h: + +/usr/local/include/HLib/quadrature2d.h: + +../HLibOperator_tmpl.cpp: diff --git a/src/bem3d/src/laplace/Makefile b/src/bem3d/src/laplace/Makefile new file mode 100644 index 0000000..4ebbb2c --- /dev/null +++ b/src/bem3d/src/laplace/Makefile @@ -0,0 +1,640 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/laplace/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +pkgdatadir = $(datadir)/hilbert3d +pkgincludedir = $(includedir)/hilbert3d +pkglibdir = $(libdir)/hilbert3d +pkglibexecdir = $(libexecdir)/hilbert3d +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +bin_PROGRAMS = testLaplace$(EXEEXT) +subdir = src/laplace +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(testLaplace_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_blas.m4 \ + $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_regex.m4 $(top_srcdir)/m4/ax_hlib.m4 \ + $(top_srcdir)/m4/ax_lapack.m4 \ + $(top_srcdir)/m4/ax_prog_doxygen.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(testLaplacedir)" +PROGRAMS = $(bin_PROGRAMS) +am_testLaplace_OBJECTS = testLaplace-t.$(OBJEXT) \ + testLaplace-SimpleLayerPotential.$(OBJEXT) \ + testLaplace-TriangleIntegrator.$(OBJEXT) \ + testLaplace-HLibOperator.$(OBJEXT) \ + testLaplace-GenericVector.$(OBJEXT) +testLaplace_OBJECTS = $(am_testLaplace_OBJECTS) +am__DEPENDENCIES_1 = +testLaplace_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + ../boundary_mesh/libhilbert-mesh.a \ + ../spaces/libhilbert-spaces.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I. -I$(top_builddir)/src +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +SOURCES = $(testLaplace_SOURCES) +DIST_SOURCES = $(testLaplace_SOURCES) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +HEADERS = $(testLaplace_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run tar +AUTOCONF = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoconf +AUTOHEADER = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run autoheader +AUTOMAKE = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run automake-1.11 +AWK = mawk +BLAS_LIBS = -lblas +BOOST_CPPFLAGS = -I/usr/include +BOOST_LDFLAGS = -L/usr/lib +BOOST_REGEX_LIB = -lboost_regex-mt +BOOST_ROOT_PATH = /usr +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CXX = g++ +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DOXYGEN_PAPER_SIZE = +DX_CONFIG = Doxyfile +DX_DOCDIR = docs/doxygen +DX_DOT = +DX_DOXYGEN = +DX_DVIPS = +DX_EGREP = +DX_ENV = SRCDIR='.' PROJECT='Hilbert 3D' DOCDIR='docs/doxygen' VERSION='0.1.0' HAVE_DOT='NO' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='NO' GENERATE_LATEX='NO' +DX_FLAG_chi = 0 +DX_FLAG_chm = 0 +DX_FLAG_doc = 0 +DX_FLAG_dot = 0 +DX_FLAG_html = 0 +DX_FLAG_man = 0 +DX_FLAG_pdf = 0 +DX_FLAG_ps = 0 +DX_FLAG_rtf = 0 +DX_FLAG_xml = 0 +DX_HHC = +DX_LATEX = +DX_MAKEINDEX = +DX_PDFLATEX = +DX_PERL = /usr/bin/perl +DX_PROJECT = Hilbert 3D +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +F77 = gfortran +FFLAGS = -g -O2 +FLIBS = -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2 -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../.. -L/usr/lib/x86_64-linux-gnu -lgfortran -lm +GREP = /bin/grep +HLIB_CPPFLAGS = -I/usr/local/include +HLIB_LDFLAGS = -L/usr/local/lib +HLIB_LIB = -lhmatrix +HLIB_ROOT_PATH = /usr/local +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LAPACK_LIBS = -llapack +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +OBJEXT = o +PACKAGE = hilbert3d +PACKAGE_BUGREPORT = markus.mayr@tuwien.ac.at +PACKAGE_NAME = Hilbert 3D +PACKAGE_STRING = Hilbert 3D 0.1.0 +PACKAGE_TARNAME = hilbert3d +PACKAGE_URL = http://83.169.35.184/cgi-bin/gitweb?p=bem3d.git +PACKAGE_VERSION = 0.1.0 +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/bash +STRIP = +VERSION = 0.1.0 +abs_builddir = /home/treecity/workspace/bacc/src/bem3d/src/laplace +abs_srcdir = /home/treecity/workspace/bacc/src/bem3d/src/laplace +abs_top_builddir = /home/treecity/workspace/bacc/src/bem3d +abs_top_srcdir = /home/treecity/workspace/bacc/src/bem3d +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = gfortran +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/treecity/workspace/bacc/src/bem3d/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +testLaplacedir = . +testLaplace_SOURCES = t.cpp SimpleLayerPotential.cpp TriangleIntegrator.cpp \ + ../HLibOperator.cpp ../generic/GenericVector.cpp + +# ../boundary_mesh/exception/NoMatchingFaceType.cpp \ +# ../boundary_mesh/exception/DispatchIdNotSet.cpp +testLaplace_HEADERS = \ + SimpleLayerPotential.hpp TriangleIntegrator.hpp ../HLibOperator.hpp \ + ../boundary_mesh/Face.hpp ../boundary_mesh/HalfEdge.hpp ../boundary_mesh/Mesh.hpp ../boundary_mesh/Mesh.cpp ../boundary_mesh/Vertex.hpp \ + ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp \ + ../boundary_mesh/FaceDispatch.hpp ../boundary_mesh/FaceDispatch_tmpl.cpp \ + ../spaces/P0Space.hpp + +testLaplace_LDADD = $(BOOST_REGEX_LIB) ../boundary_mesh/libhilbert-mesh.a ../spaces/libhilbert-spaces.a $(HLIB_LDFLAGS) $(HLIB_LIB) $(BLAS_LIBS) $(LAPACK_LIBS) $(LIBS) $(FLIBS) +testLaplace_CPPFLAGS = $(CPPFLAGS) $(HLIB_CPPFLAGS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/laplace/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/laplace/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +testLaplace$(EXEEXT): $(testLaplace_OBJECTS) $(testLaplace_DEPENDENCIES) + @rm -f testLaplace$(EXEEXT) + $(CXXLINK) $(testLaplace_OBJECTS) $(testLaplace_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/testLaplace-GenericVector.Po +include ./$(DEPDIR)/testLaplace-HLibOperator.Po +include ./$(DEPDIR)/testLaplace-SimpleLayerPotential.Po +include ./$(DEPDIR)/testLaplace-TriangleIntegrator.Po +include ./$(DEPDIR)/testLaplace-t.Po + +.cpp.o: + $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: + $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +testLaplace-t.o: t.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-t.o -MD -MP -MF $(DEPDIR)/testLaplace-t.Tpo -c -o testLaplace-t.o `test -f 't.cpp' || echo '$(srcdir)/'`t.cpp + $(am__mv) $(DEPDIR)/testLaplace-t.Tpo $(DEPDIR)/testLaplace-t.Po +# source='t.cpp' object='testLaplace-t.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-t.o `test -f 't.cpp' || echo '$(srcdir)/'`t.cpp + +testLaplace-t.obj: t.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-t.obj -MD -MP -MF $(DEPDIR)/testLaplace-t.Tpo -c -o testLaplace-t.obj `if test -f 't.cpp'; then $(CYGPATH_W) 't.cpp'; else $(CYGPATH_W) '$(srcdir)/t.cpp'; fi` + $(am__mv) $(DEPDIR)/testLaplace-t.Tpo $(DEPDIR)/testLaplace-t.Po +# source='t.cpp' object='testLaplace-t.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-t.obj `if test -f 't.cpp'; then $(CYGPATH_W) 't.cpp'; else $(CYGPATH_W) '$(srcdir)/t.cpp'; fi` + +testLaplace-SimpleLayerPotential.o: SimpleLayerPotential.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-SimpleLayerPotential.o -MD -MP -MF $(DEPDIR)/testLaplace-SimpleLayerPotential.Tpo -c -o testLaplace-SimpleLayerPotential.o `test -f 'SimpleLayerPotential.cpp' || echo '$(srcdir)/'`SimpleLayerPotential.cpp + $(am__mv) $(DEPDIR)/testLaplace-SimpleLayerPotential.Tpo $(DEPDIR)/testLaplace-SimpleLayerPotential.Po +# source='SimpleLayerPotential.cpp' object='testLaplace-SimpleLayerPotential.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-SimpleLayerPotential.o `test -f 'SimpleLayerPotential.cpp' || echo '$(srcdir)/'`SimpleLayerPotential.cpp + +testLaplace-SimpleLayerPotential.obj: SimpleLayerPotential.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-SimpleLayerPotential.obj -MD -MP -MF $(DEPDIR)/testLaplace-SimpleLayerPotential.Tpo -c -o testLaplace-SimpleLayerPotential.obj `if test -f 'SimpleLayerPotential.cpp'; then $(CYGPATH_W) 'SimpleLayerPotential.cpp'; else $(CYGPATH_W) '$(srcdir)/SimpleLayerPotential.cpp'; fi` + $(am__mv) $(DEPDIR)/testLaplace-SimpleLayerPotential.Tpo $(DEPDIR)/testLaplace-SimpleLayerPotential.Po +# source='SimpleLayerPotential.cpp' object='testLaplace-SimpleLayerPotential.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-SimpleLayerPotential.obj `if test -f 'SimpleLayerPotential.cpp'; then $(CYGPATH_W) 'SimpleLayerPotential.cpp'; else $(CYGPATH_W) '$(srcdir)/SimpleLayerPotential.cpp'; fi` + +testLaplace-TriangleIntegrator.o: TriangleIntegrator.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-TriangleIntegrator.o -MD -MP -MF $(DEPDIR)/testLaplace-TriangleIntegrator.Tpo -c -o testLaplace-TriangleIntegrator.o `test -f 'TriangleIntegrator.cpp' || echo '$(srcdir)/'`TriangleIntegrator.cpp + $(am__mv) $(DEPDIR)/testLaplace-TriangleIntegrator.Tpo $(DEPDIR)/testLaplace-TriangleIntegrator.Po +# source='TriangleIntegrator.cpp' object='testLaplace-TriangleIntegrator.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-TriangleIntegrator.o `test -f 'TriangleIntegrator.cpp' || echo '$(srcdir)/'`TriangleIntegrator.cpp + +testLaplace-TriangleIntegrator.obj: TriangleIntegrator.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-TriangleIntegrator.obj -MD -MP -MF $(DEPDIR)/testLaplace-TriangleIntegrator.Tpo -c -o testLaplace-TriangleIntegrator.obj `if test -f 'TriangleIntegrator.cpp'; then $(CYGPATH_W) 'TriangleIntegrator.cpp'; else $(CYGPATH_W) '$(srcdir)/TriangleIntegrator.cpp'; fi` + $(am__mv) $(DEPDIR)/testLaplace-TriangleIntegrator.Tpo $(DEPDIR)/testLaplace-TriangleIntegrator.Po +# source='TriangleIntegrator.cpp' object='testLaplace-TriangleIntegrator.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-TriangleIntegrator.obj `if test -f 'TriangleIntegrator.cpp'; then $(CYGPATH_W) 'TriangleIntegrator.cpp'; else $(CYGPATH_W) '$(srcdir)/TriangleIntegrator.cpp'; fi` + +testLaplace-HLibOperator.o: ../HLibOperator.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-HLibOperator.o -MD -MP -MF $(DEPDIR)/testLaplace-HLibOperator.Tpo -c -o testLaplace-HLibOperator.o `test -f '../HLibOperator.cpp' || echo '$(srcdir)/'`../HLibOperator.cpp + $(am__mv) $(DEPDIR)/testLaplace-HLibOperator.Tpo $(DEPDIR)/testLaplace-HLibOperator.Po +# source='../HLibOperator.cpp' object='testLaplace-HLibOperator.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-HLibOperator.o `test -f '../HLibOperator.cpp' || echo '$(srcdir)/'`../HLibOperator.cpp + +testLaplace-HLibOperator.obj: ../HLibOperator.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-HLibOperator.obj -MD -MP -MF $(DEPDIR)/testLaplace-HLibOperator.Tpo -c -o testLaplace-HLibOperator.obj `if test -f '../HLibOperator.cpp'; then $(CYGPATH_W) '../HLibOperator.cpp'; else $(CYGPATH_W) '$(srcdir)/../HLibOperator.cpp'; fi` + $(am__mv) $(DEPDIR)/testLaplace-HLibOperator.Tpo $(DEPDIR)/testLaplace-HLibOperator.Po +# source='../HLibOperator.cpp' object='testLaplace-HLibOperator.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-HLibOperator.obj `if test -f '../HLibOperator.cpp'; then $(CYGPATH_W) '../HLibOperator.cpp'; else $(CYGPATH_W) '$(srcdir)/../HLibOperator.cpp'; fi` + +testLaplace-GenericVector.o: ../generic/GenericVector.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-GenericVector.o -MD -MP -MF $(DEPDIR)/testLaplace-GenericVector.Tpo -c -o testLaplace-GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp + $(am__mv) $(DEPDIR)/testLaplace-GenericVector.Tpo $(DEPDIR)/testLaplace-GenericVector.Po +# source='../generic/GenericVector.cpp' object='testLaplace-GenericVector.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp + +testLaplace-GenericVector.obj: ../generic/GenericVector.cpp + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-GenericVector.obj -MD -MP -MF $(DEPDIR)/testLaplace-GenericVector.Tpo -c -o testLaplace-GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` + $(am__mv) $(DEPDIR)/testLaplace-GenericVector.Tpo $(DEPDIR)/testLaplace-GenericVector.Po +# source='../generic/GenericVector.cpp' object='testLaplace-GenericVector.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` +install-testLaplaceHEADERS: $(testLaplace_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(testLaplacedir)" || $(MKDIR_P) "$(DESTDIR)$(testLaplacedir)" + @list='$(testLaplace_HEADERS)'; test -n "$(testLaplacedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(testLaplacedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(testLaplacedir)" || exit $$?; \ + done + +uninstall-testLaplaceHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(testLaplace_HEADERS)'; test -n "$(testLaplacedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(testLaplacedir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(testLaplacedir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(testLaplacedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-testLaplaceHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-testLaplaceHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + install-testLaplaceHEADERS installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-testLaplaceHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/bem3d/src/laplace/Makefile.am b/src/bem3d/src/laplace/Makefile.am index 32b8e15..8341f54 100644 --- a/src/bem3d/src/laplace/Makefile.am +++ b/src/bem3d/src/laplace/Makefile.am @@ -1,25 +1,16 @@ -lib_LIBRARIES = libhilbert-laplace.a bin_PROGRAMS = testLaplace -libhilbert_laplace_adir = . -libhilbert_laplace_a_HEADERS =\ - SimpleLayerPotential.hpp TriangleIntegrator.hpp -libhilbert_laplace_a_SOURCES = \ - SimpleLayerPotential.cpp TriangleIntegrator.cpp -libhilbert_laplace_a_CPPFLAGS = $(CPPFLAGS) $(HLIB_CPPFLAGS) - testLaplacedir = . -testLaplace_SOURCES = t.cpp +testLaplace_SOURCES = t.cpp SimpleLayerPotential.cpp TriangleIntegrator.cpp \ + ../HLibOperator.cpp ../generic/GenericVector.cpp +# ../boundary_mesh/exception/NoMatchingFaceType.cpp \ +# ../boundary_mesh/exception/DispatchIdNotSet.cpp testLaplace_HEADERS = \ + SimpleLayerPotential.hpp TriangleIntegrator.hpp ../HLibOperator.hpp \ ../boundary_mesh/Face.hpp ../boundary_mesh/HalfEdge.hpp ../boundary_mesh/Mesh.hpp ../boundary_mesh/Mesh.cpp ../boundary_mesh/Vertex.hpp \ ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp \ - ../boundary_mesh/mixin/ExportingObj.hpp ../boundary_mesh/mixin/ExportingObj.cpp \ - ../boundary_mesh/mixin/LoadingObj.hpp ../boundary_mesh/mixin/LoadingObj.cpp \ - ../boundary_mesh/layer/Marker.hpp ../boundary_mesh/layer/Marker.cpp ../boundary_mesh/mixin/MeshMixin.hpp \ - ../boundary_mesh/mixin/RefiningAdaptivly.hpp ../boundary_mesh/mixin/RefiningAdaptivly.cpp \ - ../boundary_mesh/mixin/RefiningUniformly.hpp ../boundary_mesh/mixin/RefiningUniformly.cpp \ - ../spaces/P0Space.hpp ../spaces/P0Space.cpp \ - SimpleLayerPotential.hpp -testLaplace_LDADD = $(BOOST_REGEX_LIB) ../boundary_mesh/libhilbert-mesh.a ../spaces/libhilbert-spaces.a libhilbert-laplace.a $(HLIB_LDFLAGS) $(HLIB_LIB) $(BLAS_LIBS) $(LAPACK_LIBS) $(LIBS) $(FLIBS) + ../boundary_mesh/FaceDispatch.hpp ../boundary_mesh/FaceDispatch_tmpl.cpp \ + ../spaces/P0Space.hpp +testLaplace_LDADD = $(BOOST_REGEX_LIB) ../boundary_mesh/libhilbert-mesh.a ../spaces/libhilbert-spaces.a $(HLIB_LDFLAGS) $(HLIB_LIB) $(BLAS_LIBS) $(LAPACK_LIBS) $(LIBS) $(FLIBS) testLaplace_CPPFLAGS = $(CPPFLAGS) $(HLIB_CPPFLAGS) diff --git a/src/bem3d/src/laplace/Makefile.in b/src/bem3d/src/laplace/Makefile.in new file mode 100644 index 0000000..41158f7 --- /dev/null +++ b/src/bem3d/src/laplace/Makefile.in @@ -0,0 +1,640 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +bin_PROGRAMS = testLaplace$(EXEEXT) +subdir = src/laplace +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(testLaplace_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_blas.m4 \ + $(top_srcdir)/m4/ax_boost_base.m4 \ + $(top_srcdir)/m4/ax_boost_regex.m4 $(top_srcdir)/m4/ax_hlib.m4 \ + $(top_srcdir)/m4/ax_lapack.m4 \ + $(top_srcdir)/m4/ax_prog_doxygen.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(testLaplacedir)" +PROGRAMS = $(bin_PROGRAMS) +am_testLaplace_OBJECTS = testLaplace-t.$(OBJEXT) \ + testLaplace-SimpleLayerPotential.$(OBJEXT) \ + testLaplace-TriangleIntegrator.$(OBJEXT) \ + testLaplace-HLibOperator.$(OBJEXT) \ + testLaplace-GenericVector.$(OBJEXT) +testLaplace_OBJECTS = $(am_testLaplace_OBJECTS) +am__DEPENDENCIES_1 = +testLaplace_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + ../boundary_mesh/libhilbert-mesh.a \ + ../spaces/libhilbert-spaces.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +SOURCES = $(testLaplace_SOURCES) +DIST_SOURCES = $(testLaplace_SOURCES) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +HEADERS = $(testLaplace_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BLAS_LIBS = @BLAS_LIBS@ +BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ +BOOST_LDFLAGS = @BOOST_LDFLAGS@ +BOOST_REGEX_LIB = @BOOST_REGEX_LIB@ +BOOST_ROOT_PATH = @BOOST_ROOT_PATH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@ +DX_CONFIG = @DX_CONFIG@ +DX_DOCDIR = @DX_DOCDIR@ +DX_DOT = @DX_DOT@ +DX_DOXYGEN = @DX_DOXYGEN@ +DX_DVIPS = @DX_DVIPS@ +DX_EGREP = @DX_EGREP@ +DX_ENV = @DX_ENV@ +DX_FLAG_chi = @DX_FLAG_chi@ +DX_FLAG_chm = @DX_FLAG_chm@ +DX_FLAG_doc = @DX_FLAG_doc@ +DX_FLAG_dot = @DX_FLAG_dot@ +DX_FLAG_html = @DX_FLAG_html@ +DX_FLAG_man = @DX_FLAG_man@ +DX_FLAG_pdf = @DX_FLAG_pdf@ +DX_FLAG_ps = @DX_FLAG_ps@ +DX_FLAG_rtf = @DX_FLAG_rtf@ +DX_FLAG_xml = @DX_FLAG_xml@ +DX_HHC = @DX_HHC@ +DX_LATEX = @DX_LATEX@ +DX_MAKEINDEX = @DX_MAKEINDEX@ +DX_PDFLATEX = @DX_PDFLATEX@ +DX_PERL = @DX_PERL@ +DX_PROJECT = @DX_PROJECT@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLIBS = @FLIBS@ +GREP = @GREP@ +HLIB_CPPFLAGS = @HLIB_CPPFLAGS@ +HLIB_LDFLAGS = @HLIB_LDFLAGS@ +HLIB_LIB = @HLIB_LIB@ +HLIB_ROOT_PATH = @HLIB_ROOT_PATH@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LAPACK_LIBS = @LAPACK_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +testLaplacedir = . +testLaplace_SOURCES = t.cpp SimpleLayerPotential.cpp TriangleIntegrator.cpp \ + ../HLibOperator.cpp ../generic/GenericVector.cpp + +# ../boundary_mesh/exception/NoMatchingFaceType.cpp \ +# ../boundary_mesh/exception/DispatchIdNotSet.cpp +testLaplace_HEADERS = \ + SimpleLayerPotential.hpp TriangleIntegrator.hpp ../HLibOperator.hpp \ + ../boundary_mesh/Face.hpp ../boundary_mesh/HalfEdge.hpp ../boundary_mesh/Mesh.hpp ../boundary_mesh/Mesh.cpp ../boundary_mesh/Vertex.hpp \ + ../generic/GenericVector.hpp ../generic/GenericVector_tmpl.cpp \ + ../boundary_mesh/FaceDispatch.hpp ../boundary_mesh/FaceDispatch_tmpl.cpp \ + ../spaces/P0Space.hpp + +testLaplace_LDADD = $(BOOST_REGEX_LIB) ../boundary_mesh/libhilbert-mesh.a ../spaces/libhilbert-spaces.a $(HLIB_LDFLAGS) $(HLIB_LIB) $(BLAS_LIBS) $(LAPACK_LIBS) $(LIBS) $(FLIBS) +testLaplace_CPPFLAGS = $(CPPFLAGS) $(HLIB_CPPFLAGS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/laplace/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/laplace/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +testLaplace$(EXEEXT): $(testLaplace_OBJECTS) $(testLaplace_DEPENDENCIES) + @rm -f testLaplace$(EXEEXT) + $(CXXLINK) $(testLaplace_OBJECTS) $(testLaplace_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testLaplace-GenericVector.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testLaplace-HLibOperator.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testLaplace-SimpleLayerPotential.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testLaplace-TriangleIntegrator.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testLaplace-t.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +testLaplace-t.o: t.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-t.o -MD -MP -MF $(DEPDIR)/testLaplace-t.Tpo -c -o testLaplace-t.o `test -f 't.cpp' || echo '$(srcdir)/'`t.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-t.Tpo $(DEPDIR)/testLaplace-t.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='t.cpp' object='testLaplace-t.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-t.o `test -f 't.cpp' || echo '$(srcdir)/'`t.cpp + +testLaplace-t.obj: t.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-t.obj -MD -MP -MF $(DEPDIR)/testLaplace-t.Tpo -c -o testLaplace-t.obj `if test -f 't.cpp'; then $(CYGPATH_W) 't.cpp'; else $(CYGPATH_W) '$(srcdir)/t.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-t.Tpo $(DEPDIR)/testLaplace-t.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='t.cpp' object='testLaplace-t.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-t.obj `if test -f 't.cpp'; then $(CYGPATH_W) 't.cpp'; else $(CYGPATH_W) '$(srcdir)/t.cpp'; fi` + +testLaplace-SimpleLayerPotential.o: SimpleLayerPotential.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-SimpleLayerPotential.o -MD -MP -MF $(DEPDIR)/testLaplace-SimpleLayerPotential.Tpo -c -o testLaplace-SimpleLayerPotential.o `test -f 'SimpleLayerPotential.cpp' || echo '$(srcdir)/'`SimpleLayerPotential.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-SimpleLayerPotential.Tpo $(DEPDIR)/testLaplace-SimpleLayerPotential.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SimpleLayerPotential.cpp' object='testLaplace-SimpleLayerPotential.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-SimpleLayerPotential.o `test -f 'SimpleLayerPotential.cpp' || echo '$(srcdir)/'`SimpleLayerPotential.cpp + +testLaplace-SimpleLayerPotential.obj: SimpleLayerPotential.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-SimpleLayerPotential.obj -MD -MP -MF $(DEPDIR)/testLaplace-SimpleLayerPotential.Tpo -c -o testLaplace-SimpleLayerPotential.obj `if test -f 'SimpleLayerPotential.cpp'; then $(CYGPATH_W) 'SimpleLayerPotential.cpp'; else $(CYGPATH_W) '$(srcdir)/SimpleLayerPotential.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-SimpleLayerPotential.Tpo $(DEPDIR)/testLaplace-SimpleLayerPotential.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SimpleLayerPotential.cpp' object='testLaplace-SimpleLayerPotential.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-SimpleLayerPotential.obj `if test -f 'SimpleLayerPotential.cpp'; then $(CYGPATH_W) 'SimpleLayerPotential.cpp'; else $(CYGPATH_W) '$(srcdir)/SimpleLayerPotential.cpp'; fi` + +testLaplace-TriangleIntegrator.o: TriangleIntegrator.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-TriangleIntegrator.o -MD -MP -MF $(DEPDIR)/testLaplace-TriangleIntegrator.Tpo -c -o testLaplace-TriangleIntegrator.o `test -f 'TriangleIntegrator.cpp' || echo '$(srcdir)/'`TriangleIntegrator.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-TriangleIntegrator.Tpo $(DEPDIR)/testLaplace-TriangleIntegrator.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='TriangleIntegrator.cpp' object='testLaplace-TriangleIntegrator.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-TriangleIntegrator.o `test -f 'TriangleIntegrator.cpp' || echo '$(srcdir)/'`TriangleIntegrator.cpp + +testLaplace-TriangleIntegrator.obj: TriangleIntegrator.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-TriangleIntegrator.obj -MD -MP -MF $(DEPDIR)/testLaplace-TriangleIntegrator.Tpo -c -o testLaplace-TriangleIntegrator.obj `if test -f 'TriangleIntegrator.cpp'; then $(CYGPATH_W) 'TriangleIntegrator.cpp'; else $(CYGPATH_W) '$(srcdir)/TriangleIntegrator.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-TriangleIntegrator.Tpo $(DEPDIR)/testLaplace-TriangleIntegrator.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='TriangleIntegrator.cpp' object='testLaplace-TriangleIntegrator.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-TriangleIntegrator.obj `if test -f 'TriangleIntegrator.cpp'; then $(CYGPATH_W) 'TriangleIntegrator.cpp'; else $(CYGPATH_W) '$(srcdir)/TriangleIntegrator.cpp'; fi` + +testLaplace-HLibOperator.o: ../HLibOperator.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-HLibOperator.o -MD -MP -MF $(DEPDIR)/testLaplace-HLibOperator.Tpo -c -o testLaplace-HLibOperator.o `test -f '../HLibOperator.cpp' || echo '$(srcdir)/'`../HLibOperator.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-HLibOperator.Tpo $(DEPDIR)/testLaplace-HLibOperator.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../HLibOperator.cpp' object='testLaplace-HLibOperator.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-HLibOperator.o `test -f '../HLibOperator.cpp' || echo '$(srcdir)/'`../HLibOperator.cpp + +testLaplace-HLibOperator.obj: ../HLibOperator.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-HLibOperator.obj -MD -MP -MF $(DEPDIR)/testLaplace-HLibOperator.Tpo -c -o testLaplace-HLibOperator.obj `if test -f '../HLibOperator.cpp'; then $(CYGPATH_W) '../HLibOperator.cpp'; else $(CYGPATH_W) '$(srcdir)/../HLibOperator.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-HLibOperator.Tpo $(DEPDIR)/testLaplace-HLibOperator.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../HLibOperator.cpp' object='testLaplace-HLibOperator.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-HLibOperator.obj `if test -f '../HLibOperator.cpp'; then $(CYGPATH_W) '../HLibOperator.cpp'; else $(CYGPATH_W) '$(srcdir)/../HLibOperator.cpp'; fi` + +testLaplace-GenericVector.o: ../generic/GenericVector.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-GenericVector.o -MD -MP -MF $(DEPDIR)/testLaplace-GenericVector.Tpo -c -o testLaplace-GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-GenericVector.Tpo $(DEPDIR)/testLaplace-GenericVector.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../generic/GenericVector.cpp' object='testLaplace-GenericVector.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-GenericVector.o `test -f '../generic/GenericVector.cpp' || echo '$(srcdir)/'`../generic/GenericVector.cpp + +testLaplace-GenericVector.obj: ../generic/GenericVector.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT testLaplace-GenericVector.obj -MD -MP -MF $(DEPDIR)/testLaplace-GenericVector.Tpo -c -o testLaplace-GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testLaplace-GenericVector.Tpo $(DEPDIR)/testLaplace-GenericVector.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../generic/GenericVector.cpp' object='testLaplace-GenericVector.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testLaplace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o testLaplace-GenericVector.obj `if test -f '../generic/GenericVector.cpp'; then $(CYGPATH_W) '../generic/GenericVector.cpp'; else $(CYGPATH_W) '$(srcdir)/../generic/GenericVector.cpp'; fi` +install-testLaplaceHEADERS: $(testLaplace_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(testLaplacedir)" || $(MKDIR_P) "$(DESTDIR)$(testLaplacedir)" + @list='$(testLaplace_HEADERS)'; test -n "$(testLaplacedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(testLaplacedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(testLaplacedir)" || exit $$?; \ + done + +uninstall-testLaplaceHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(testLaplace_HEADERS)'; test -n "$(testLaplacedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(testLaplacedir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(testLaplacedir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(testLaplacedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-testLaplaceHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-testLaplaceHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + install-testLaplaceHEADERS installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-testLaplaceHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/bem3d/src/laplace/SLPrecangle.cpp b/src/bem3d/src/laplace/SLPrecangle.cpp new file mode 100644 index 0000000..18f174b --- /dev/null +++ b/src/bem3d/src/laplace/SLPrecangle.cpp @@ -0,0 +1,357 @@ +#include +#include +#include +#include + +#include "SLPrecangle.hpp" + +#define my_PI 3.141592653589793 +#define EPS 0.02 + +using namespace std; + +int sign(double); +double arsinh(double); + +// sol = quadInt((F_par/F_ort),s1,s2,k1,k2,t1,t2,l1,l2,d1,d2,d3); +double quadInt( + double(*)(double, double, double, double, double, double, double), + double, double, double, double, double, double, double, double, double, + double, double); + +void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { + //sicherheitsabfragen zu Datengroessen + if (nrhs != 2) + mexErrMsgTxt("expected (coordinates(Nx3),elements(Mx3))"); + if (nlhs > 1) + mexErrMsgTxt("has only one output argument"); + + int cm = mxGetM(prhs[0]); + int cn = mxGetN(prhs[0]); + + if (cn != 3) + mexErrMsgTxt("expected coordinates (Nx3)"); + int em = mxGetM(prhs[1]); + int en = mxGetN(prhs[1]); + if (en != 3) + mexErrMsgTxt("expected elements (Mx3)"); + //Vorbereitung der Daten + + plhs[0] = mxCreateDoubleMatrix(em, em, mxREAL); + double * A = mxGetPr(plhs[0]); + double * C = mxGetPr(prhs[0]); + double * E = mxGetPr(prhs[1]); + + double * x1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + double * x2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + double * x3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + double * xn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + + double * y1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + double * y2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + double * y3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + double * yn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + + double * d = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL)); + + double tmp; + + int rx, ry; + + //Ausrechnen + for (int j = 0; j < em; ++j) { + x1[0] = C[(int) E[j] - 1]; + x1[1] = C[cm + (int) E[j] - 1]; + x1[2] = C[2 * cm + (int) E[j] - 1]; + + x2[0] = C[(int) E[em + j] - 1]; + x2[1] = C[cm + (int) E[em + j] - 1]; + x2[2] = C[2 * cm + (int) E[em + j] - 1]; + + x3[0] = C[(int) E[2 * em + j] - 1]; + x3[1] = C[cm + (int) E[2 * em + j] - 1]; + x3[2] = C[2 * cm + (int) E[2 * em + j] - 1]; + + xn[0] = (x2[1] - x1[1]) * (x3[2] - x1[2]) - (x2[2] - x1[2]) * (x3[1] + - x1[1]); + xn[1] = (x2[2] - x1[2]) * (x3[0] - x1[0]) - (x2[0] - x1[0]) * (x3[2] + - x1[2]); + xn[2] = (x2[0] - x1[0]) * (x3[1] - x1[1]) - (x2[1] - x1[1]) * (x3[0] + - x1[0]); + + //if(xn[0]*xn[0]+xn[1]*xn[1] 0 ? 1 : (x < 0 ? -1 : 0); +} + +double inline arsinh(double x) { + return log(x + sqrt(x * x + 1)); +} + +//y-x muss != 0 sein +double g0(double p, double y, double x, double l) { + //printf("%.1f | %.1f | %.1f | %.1f +",p,x,y,l); + + double sol = 0; + + if (l != 0) { + if (p == 0.5) { + sol = (y - x) / 2 * sqrt((y - x) * (y - x) + l * l) + l * l / 2 + * arsinh((y - x) / fabs(l)); + // printf("%.2f |",sol); + } else if (p == 0) + sol = y - x; + else if (p == -0.5) + sol = asinh((y - x) / fabs(l)); + else if (p == -1) + sol = atan((y - x) / fabs(l)); + else if (p == -1.5) + sol = (y - x) / ((l * l) * sqrt((y - x) * (y - x) + l * l)); + else + sol = (y - x) * pow((y - x) * (y - x) + l * l, p) + 2 * p * l * l + * g0(p - 1, y, x, l) / (2 * p + 1); + } else { + if (p == -0.5) + sol = sign(y - x) * log(fabs(y - x)); + else + sol = (y - x) * pow(fabs(y - x), 2 * p) / (2 * p + 1); + } + + return sol; +} + +double G00(double p, double y1, double y2, double x1, double x2, double l) { + // printf("%.1f | %.1f %.1f | %.1f %.1f | %.1f +",p,x1,x2,y1,y2,l); + + double sol = 0; + if (p == -1.5) { + if (l == 0) { + sol = -sqrt((y1 - x1) * (y1 - x1) + (y2 - x2) * (y2 - x2)) / ((y1 + - x1) * (y2 - x2)); + } else { + sol = sign((y1 - x1) * (y2 - x2)) / (2 * fabs(l)) * acos( + -2 * (y1 - x1) * (y1 - x1) * (y2 - x2) * (y2 - x2) / (((y1 + - x1) * (y1 - x1) + l * l) * ((y2 - x2) * (y2 - x2) + + l * l)) + 1); + } + + } else if (p == -0.5) { + if (l != 0) + sol = 2 * p * l * l * G00(p - 1, y1, y2, x1, x2, l); + if ((y1 - x1) != 0) + sol += (y1 - x1) * g0(p, y2, x2, + sqrt((y1 - x1) * (y1 - x1) + l * l)); + if ((y2 - x2) != 0) + sol += (y2 - x2) * g0(p, y1, x1, + sqrt((y2 - x2) * (y2 - x2) + l * l)); + sol /= 2 * p + 2; + } else { + mexErrMsgTxt("no case for p defined"); + } + + return sol; +} + +double F_par(double x1, double x2, double y1, double y2, double d1, double d2, + double d3) { + + // printf("%.1f %.1f | %.1f %.1f | %.1f %.1f %.1f",x1,x2,y1,y2,d1,d2,d3); + double sol = (x1 - y1 - d1) * (x2 - y2 - d2); + + if (sol != 0) + sol *= slpADLO(x1, x2, y1 + d1, y2 + d2, d3); + + if ((x1 - y1 - d1) != 0) + sol -= (x1 - y1 - d1) * compute_g0(0.5, x1, y1 + d1, + sqrt((x2 - y2 - d2) * (x2 - y2 - d2) + d3 * d3)); + + if ((x2 - y2 - d2) != 0) + sol -= (x2 - y2 - d2) * compute_g0(0.5, x2, y2 + d2, + sqrt((x1 - y1 - d1) * (x1 - y1 - d1) + d3 * d3)); + + double hlp = ((x1 - y1 - d1) * (x1 - y1 - d1) + (x2 - y2 - d2) * (x2 - y2 + - d2) + d3 * d3); + sol += 1. / 3 * hlp * sqrt(hlp); + return sol; +} + +double inline quadInt( + double(*f)(double, double, double, double, double, double, double), + double s1, double s2, double k1, double k2, double t1, double t2, + double l1, double l2, double d1, double d2, double d3) { + + return f(k1, k2, l1, l2, d1, d2, d3) - f(k1, k2, l1, t2, d1, d2, d3) - f( + k1, k2, t1, l2, d1, d2, d3) + f(k1, k2, t1, t2, d1, d2, d3) - f(k1, + s2, l1, l2, d1, d2, d3) + f(k1, s2, l1, t2, d1, d2, d3) + f(k1, s2, + t1, l2, d1, d2, d3) - f(k1, s2, t1, t2, d1, d2, d3) - f(s1, k2, l1, + l2, d1, d2, d3) + f(s1, k2, l1, t2, d1, d2, d3) + f(s1, k2, t1, l2, + d1, d2, d3) - f(s1, l2, t1, t2, d1, d2, d3) + f(s1, s2, l1, l2, d1, + d2, d3) - f(s1, 0, l1, t2, d1, d2, d3) - f(s1, s2, t1, l2, d1, d2, + d3) + f(s1, s2, t1, t2, d1, d2, d3); +} + +double slpADLO(double y1, double y2, double x1, double x2, double a) { + double G3 = 0; + double gL = 0; + double gK = 0; + double tmp; + + tmp = y1 - x1; + if (fabs(tmp) >= EPS * y1) { + tmp = sqrt(y1 * y1 + x1 * x1 + a * a - 2 * y1 * x1); + gL = compute_g0(-0.5, y2, x2, tmp); + } + tmp = y2 - x2; + if (fabs(tmp) >= EPS * y2) { + tmp = sqrt(y2 * y2 + x2 * x2 + a * a - 2 * y2 * x2); + gK = compute_g0(-0.5, y1, x1, tmp); + } + if (fabs(a * a) > EPS) { + if ((y1 - x1) * (y2 - x2) * a >= 0) + tmp = 1.; + else + tmp = -1.; + + G3 = tmp * acos( + (-2. * (y1 - x1) * (y1 - x1) * (y2 - x2) * (y2 - x2)) / (((y1 + - x1) * (y1 - x1) + a * a) * ((y2 - x2) * (y2 - x2) + a + * a)) + 1.) / (2. * a); + } + + return (y1 - x1) * gL + (y2 - x2) * gK - a * a * G3; +} + +double compute_g0(double p, double y, double x, double a) { + int sp = (int) 2 * (p - EPS); // MK (p-EPS) instead of (p+EPS) + //printf("\n compute_g0, p = %lf, sp = %d\n",p,sp); + assert( + p == 0 || (p == -0.5) || (p == -1) || (p == -1.5) || (fabs(a) + <= EPS)); + if (fabs(a) <= EPS) { + // printf("\n a < eps\n"); + switch (sp) { + case 0: + return y - x; + case -1: + return log(fabs(x - y)) * (y - x) / fabs(y - x); + case -2: + return -(y - x) / fabs(y - x) / fabs(y - x); + case -3: + return -0.5 * (y - x) / fabs(y - x) / fabs(y - x) / fabs(y - x); + } + } else { + // printf("\n a > eps\n"); + switch (sp) { + case 0: + return y - x; + case -1: + return asinh((y - x) / fabs(a)); + case -2: + return atan((y - x) / fabs(a)); + case -3: + return (y - x) * pow((x * x + y * y + a * a - 2 * x * y), -0.5) + / (a * a); + default: + printf("p must be either 0, -1/2, -1 or -3/2."); + return NAN; + } + } +} + +double FLO_plane(double x1, double x2, double y1, double y2, double delta1, + double delta2, double a) { + double yd1 = y1 + delta1; + double yd2 = y2 + delta2; + double tmp1 = x1 - y1 - delta1; + double tmp2 = x2 - y2 - delta2; + double tmp3 = sqrt(tmp2 * tmp2 + a * a); + double tmp4 = sqrt(tmp1 * tmp1 + a * a); + double tmp5 = pow(tmp1 * tmp1 + tmp2 * tmp2 + a * a, 3. / 2.); + double rval = 0; + + rval = tmp1 * tmp2 * slpADLO(x1, x2, yd1, yd2, a) - tmp1 * compute_g0(-0.5, + x1, yd1, tmp3) - tmp2 * compute_g0(-0.5, x2, yd2, tmp4) + tmp5 / 3.; + return rval; +} diff --git a/src/bem3d/src/laplace/SLPrecangle.hpp b/src/bem3d/src/laplace/SLPrecangle.hpp new file mode 100644 index 0000000..6f80150 --- /dev/null +++ b/src/bem3d/src/laplace/SLPrecangle.hpp @@ -0,0 +1,21 @@ +#ifndef HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_ +#define HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_ + +int sign(double); +double arsinh(double); + +// sol = g0(p,y,x,l); +double g0(double, double, double, double); +// sol = G00(p,y1,y2,x1,x2,l); +double G00(double, double, double, double, double, double); +// sol = F_par(x1,x2,y1,y2,d1,d2,d3); +double F_par(double, double, double, double, double, double, double); +// sol = F_ort(x1,x2,y1,y2,d1,d2,d3); +//double F_ort(double, double, double, double, double, double, double); + + +double slpADLO(double, double, double, double, double); +double compute_g0(double, double, double, double); +double FLO_plane(double, double, double, double, double, double, double); + +#endif diff --git a/src/bem3d/src/laplace/SimpleLayerPotential.cpp b/src/bem3d/src/laplace/SimpleLayerPotential.cpp index d400eb2..c5e299a 100644 --- a/src/bem3d/src/laplace/SimpleLayerPotential.cpp +++ b/src/bem3d/src/laplace/SimpleLayerPotential.cpp @@ -3,126 +3,89 @@ #include "../spaces/P0Space.hpp" #include "TriangleIntegrator.hpp" +#include "SLPrecangle.hpp" + #include using namespace laplace; -SimpleLayerPotential::SimpleLayerPotential(const space::P0Space &space) - : s_(space), hlibSupermatrix_(0), rowClusterTree_(0), colClusterTree_(0) +SimpleLayerPotential::SimpleLayerPotential(const space::P0Space& space) + : HLibOperator< space::P0Space, space::P0Space, SymmetricMatrix >( + space, space, SimpleLayerPotential::computeEntry) { - unsigned int numberOfElements = space.getNumberOfElements(); - init_rkmatrices(0); - clusterfactory* factory = space.createClusterFactory(); - rowClusterTree_ = colClusterTree_ = - create_clustertree(factory, HLIB_GEOMETRIC, 30, numberOfElements * numberOfElements); - -// print_cluster(colClusterTree_->root,colClusterTree_->idx2dof,0); - del_clusterfactory(factory); - -// hlibSupermatrix_ = build_supermatrix_from_cluster( -// rowClusterTree_->root, colClusterTree_->root, -// 1, 30, HLIB_MINADM); - - hlibSupermatrix_ = build_full_supermatrix( - rowClusterTree_->root, colClusterTree_->root); - - print_supermatrix("SLP.ps",hlibSupermatrix_); - std::cerr << "hlibSupermatrix: " << hlibSupermatrix_->rows << " x " << hlibSupermatrix_->cols << " (rows x cols), " - << hlibSupermatrix_->block_rows << " x " << hlibSupermatrix_->block_cols << " (blockrows x blockcols)" << std::endl; - - fill_supermatrix_aca( - hlibSupermatrix_, - rowClusterTree_->root, colClusterTree_->root, - (void*) this, - SimpleLayerPotential::slp_compute_matrix_entry,1e-5); - } SimpleLayerPotential::~SimpleLayerPotential() { } -double SimpleLayerPotential::slp_compute_matrix_entry(int i,int j,void* data) +template < class TMesh > +double ComputeSimpleLayerPotentialEntry< TMesh >::exec( + const typename TMesh::Prop::Triangle& f1, + const typename TMesh::Prop::Triangle& f2) const { - int tf_i, tf_j; - const SimpleLayerPotential* th = (SimpleLayerPotential*) (data); - tf_i = th->rowClusterTree_->dof2idx[i]; - tf_j = th->colClusterTree_->dof2idx[j]; - - const space::P0Space& s = th->s_; - return slp_compute_matrix_entry(s[tf_i], s[tf_j]); -} + TriangleIntegrator integrator = TriangleIntegrator(); -double SimpleLayerPotential::slp_compute_matrix_entry(const space::P0Element &e1, - const space::P0Element &e2) -{ - const BoundaryMesh::traits::Face &f1 = e1.getSupport(); - const BoundaryMesh::traits::Face &f2 = e2.getSupport(); - TriangleIntegrator integrator; - - if (f1.area() < f2.area()) - return integrator.integrate(f1, f2, &slp_compute_inner_integral); + if ( f1.computeArea() < f2.computeArea() ) + { + return integrator.integrate( f1, f2, + computeInnerIntegralForTriangles); + } else - return integrator.integrate(f2, f1, &slp_compute_inner_integral); - + { + return integrator.integrate( f2, f1, + computeInnerIntegralForTriangles); + } } -double SimpleLayerPotential::solve(double* rhs) const +template < class TMesh > +double ComputeSimpleLayerPotentialEntry< TMesh >::exec( + const typename TMesh::Prop::Parallelogram& f1, + const typename TMesh::Prop::Parallelogram& f2) const { - std::cerr << "solving by GMRES" << std::endl; -// for ( int i=0; if; - int i, j; + typedef boundary_mesh::DoubleFaceDispatcher< + ComputeSimpleLayerPotentialEntry< BoundaryMesh >, BoundaryMesh, double > + ComputeEntry; - std::ofstream output_file("slp.txt"); - - if ( f!= NULL ) // fill fullmatrix block - for ( i=0; iroot->size; i++ ){ - for ( j=0; jroot->size; j++ ){ -// std::cerr << f->e[i+j*rowClusterTree_->root->size] << ", "; - output_file << f->e[i+j*rowClusterTree_->root->size] << ", " << std::endl; - } -// std::cerr << std::endl; - } + return ComputeEntry::Exec( e1.getSupport(), e2.getSupport(), + ComputeSimpleLayerPotentialEntry< BoundaryMesh >() ); } -double SimpleLayerPotential::slp_compute_inner_integral(const BoundaryMesh::traits::Face &tau, - const BoundaryMesh::traits::UnlinkedVertex &x) +template < class TMesh > +double +ComputeSimpleLayerPotentialEntry< TMesh >::computeInnerIntegralForTriangles( + const typename TMesh::Prop::Triangle& tau, + const typename TMesh::UVertex& x) { - boundary_mesh::Face::ConstVertexIterator vIt = tau.begin_v(); - const boundary_mesh::UnlinkedVertex& x1 = *vIt; - const boundary_mesh::UnlinkedVertex& x2 = *(++vIt); - const boundary_mesh::UnlinkedVertex& x3 = *(++vIt); + BoundaryMesh::Face::ConstVertexIterator vIt = tau.begin_v(); + const BoundaryMesh::UVertex& x1 = *vIt; ++vIt; + const BoundaryMesh::UVertex& x2 = *vIt; ++vIt; + const BoundaryMesh::UVertex& x3 = *vIt; ++vIt; // determine a local orthogonal coordinate system (r1,r2,n) on the triangle tau double t_tau = (x3-x2).norm(); - boundary_mesh::UnlinkedVertex r2 = (x3-x2)/t_tau; + BoundaryMesh::UVertex r2 = (x3-x2)/t_tau; double t_star=(x1-x2)*r2; - boundary_mesh::UnlinkedVertex r1 = (x2+t_star*r2-x1); + BoundaryMesh::UVertex r1 = (x2+t_star*r2-x1); double s_tau = r1.norm(); r1 = r1 / s_tau; - boundary_mesh::UnlinkedVertex n = cross_product(r1,r2); + BoundaryMesh::UVertex n = BoundaryMesh::Vertex::crossProduct(r1,r2); // determine necessary information double sx = (x-x1)*r1; @@ -135,7 +98,10 @@ double SimpleLayerPotential::slp_compute_inner_integral(const BoundaryMesh::trai return 0.25*(F(s_tau,a2,sx,tx,ux) - F(0,a2,sx,tx,ux) - F(s_tau,a1,sx,tx,ux) + F(0,a1,sx,tx,ux))/M_PI; } -double laplace::F(double s, double a, double sx, double tx, double ux) +template < class TMesh > +double +ComputeSimpleLayerPotentialEntry< TMesh >::F( + double s, double a, double sx, double tx, double ux) { double p = (a*tx+sx)/(1+a*a); double q = ux*ux + (tx-a*sx)*(tx-a*sx)/(1+a*a); @@ -145,19 +111,66 @@ double laplace::F(double s, double a, double sx, double tx, double ux) + 2*ux*atan(((q-(a*sx-tx)/(1+a*a))*sqrt((1+a*a)*(s-p)*(s-p)+q*q) + (a*s-tx-q)*q)/((s-p)*ux)); } -void laplace::fill_supermatrix_aca(supermatrix* A, const cluster* row, const cluster* col, void *data, +void fill_supermatrix_aca_OLD(supermatrix* A, const cluster* row, const cluster* col, void *data, double (*compute_entry)(int i, int j, void* data), double aca_eps) { - std::cerr << "*** fill_supermatrix_aca" << std::endl; +// std::cerr << "*** fill_supermatrix_aca" << std::endl; fullmatrix* f = A->f; + rkmatrix* r = A->r; int i, j; + int rank; - if ( f!= NULL ) // fill fullmatrix block + if ( f!= NULL ) { // fill fullmatrix block +// std::cerr << "*** full matrix block" << std::endl; for ( i=0; isize; i++ ){ for ( j=0; jsize; j++ ) -// f->e[i+j*row->size] = 0; f->e[i+j*row->size] = compute_entry(row->start+i,col->start+j, data); } + + return; + } + + if ( r!= NULL ) { // fill rk-block with aca +// std::cerr << "*** rank k matrix block" << std::endl; + if ( r->rows > r-> cols ) + rank = r->cols; + else + rank = r->rows; + + if ( rank > ACA_KMAX ) + rank = ACA_KMAX; + + r->k = rank; + r->a = allocate_matrix(r->rows,rank); + r->b = allocate_matrix(r->cols,rank); + + r->kt = newaca_fill_block(r->a, r->b, r->rows, r->cols, + row->start, col->start, + compute_entry, data, + rank, aca_eps, ACA_STRATEGY); + + r->a = (double*) realloc(r->a,r->rows*r->kt*sizeof(double)); + r->b = (double*) realloc(r->b,r->cols*r->kt*sizeof(double)); + r->k = r->kt; + + return; + } + + if(row->sons>0) { + if(col->sons>0) { + for(int i=0;isons;++i) + for(int j=0;jsons;++j) { + int s=i+j*row->sons; + fill_supermatrix_aca_OLD(A->s[s],row->son[i],col->son[j],data,compute_entry,aca_eps); + } + } else { + for(int i=0;isons;++i) + fill_supermatrix_aca_OLD(A->s[i],row->son[i],col,data,compute_entry,aca_eps); + } + } else { + for(int i=0;isons;++i) + fill_supermatrix_aca_OLD(A->s[i],row,col->son[i],data,compute_entry,aca_eps); + } } diff --git a/src/bem3d/src/laplace/SimpleLayerPotential.hpp b/src/bem3d/src/laplace/SimpleLayerPotential.hpp index 381d60f..fe0e8f0 100644 --- a/src/bem3d/src/laplace/SimpleLayerPotential.hpp +++ b/src/bem3d/src/laplace/SimpleLayerPotential.hpp @@ -2,45 +2,52 @@ #define HILBERT3D_LAPLACE_SIMPLELAYERPOTENTIAL_HPP_GUARD_ #include "../hilbert.hpp" -extern "C" { -#include "HLib/cluster.h" -#include "HLib/supermatrix.h" -#include "HLib/krylov.h" -#include "HLib/graphics.h" -} +#include "../boundary_mesh/FaceDispatch.hpp" +#include "../HLibOperator.hpp" +#include "../spaces/P0Space.hpp" namespace laplace { /* * @ brief: Implementation of Discrete (P0 x P0) Single Layer Potential for Laplace. **/ + template < class TMesh = BoundaryMesh > + class ComputeSimpleLayerPotentialEntry + { + public: + double exec( const typename TMesh::Prop::Triangle& f1, + const typename TMesh::Prop::Triangle& f2 ) const; + double exec( const typename TMesh::Prop::Parallelogram& f1, + const typename TMesh::Prop::Parallelogram& f2 ) const; + double exec( const typename TMesh::Face& f1, + const typename TMesh::Face& f2 ) const + { + assert(0); // Missing implementation! + } + + private: + static double computeInnerIntegralForTriangles( + const typename TMesh::Prop::Triangle& tau, + const typename TMesh::UVertex& x); + static double F(double s, double a, double sx, double tx, double ux); + }; + class SimpleLayerPotential + : public HLibOperator< space::P0Space, space::P0Space, SymmetricMatrix > { public: - SimpleLayerPotential(const space::P0Space &s); - ~SimpleLayerPotential(); - double solve(double* rhs) const; - void show(); + SimpleLayerPotential(const space::P0Space &space); + virtual ~SimpleLayerPotential(); private: - const space::P0Space &s_; - supermatrix* hlibSupermatrix_; - clustertree* rowClusterTree_; - clustertree* colClusterTree_; - static double slp_compute_matrix_entry(int i, int j, void* data); - static double slp_compute_matrix_entry( - const space::P0Element &e1,const space::P0Element &e2); - static double slp_compute_inner_integral(const BoundaryMesh::traits::Face &tau, - const BoundaryMesh::traits::UnlinkedVertex &x); + static double computeEntry( + const space::P0Space::Element& e1,const space::P0Space::Element &e2); }; - double F(double s, double a, double sx, double tx, double ux); - void fill_supermatrix_aca(supermatrix* A, - const cluster* row, - const cluster* col, - void* data, - double (*compute_entry)(int i,int j,void* data), - double aca_eps); +#if 0 + void fill_supermatrix_aca(supermatrix*, const cluster*, const cluster*, void*, double* (compute_entry)(int, int, void*), double); +#endif } #endif + diff --git a/src/bem3d/src/laplace/TriangleIntegrator.cpp b/src/bem3d/src/laplace/TriangleIntegrator.cpp index 87f23d0..c697415 100644 --- a/src/bem3d/src/laplace/TriangleIntegrator.cpp +++ b/src/bem3d/src/laplace/TriangleIntegrator.cpp @@ -3,9 +3,6 @@ #include #include -#include "../boundary_mesh/Vertex.hpp" -#include "../boundary_mesh/Face.hpp" - using namespace std; TriangleIntegrator::TriangleIntegrator() @@ -51,9 +48,9 @@ TriangleIntegrator::TriangleIntegrator() double TriangleIntegrator::integrate( - const boundary_mesh::Face & triangle_1, - const boundary_mesh::Face & triangle_2, - double (*integrand)(const boundary_mesh::Face &triangle, const boundary_mesh::UnlinkedVertex & point)) + const BoundaryMesh::Prop::Triangle & triangle_1, + const BoundaryMesh::Prop::Triangle & triangle_2, + double (*integrand)(const BoundaryMesh::Prop::Triangle &triangle, const BoundaryMesh::UVertex & point)) const { int gauss_order = m_r.size(); @@ -65,14 +62,14 @@ TriangleIntegrator::integrate( computeIthEvaluationPoint( triangle_1, m_r[i], m_s[i] )); } - sum *= 2 * triangle_1.area(); // Factor 2 is becase gauss-weights sum up tp 0.5 + sum *= 2 * triangle_1.computeArea(); // Factor 2 is becase gauss-weights sum up tp 0.5 return sum; } double TriangleIntegrator::integrate( - const boundary_mesh::Face & triangle, - double (*integrand)(const boundary_mesh::UnlinkedVertex & point)) + const BoundaryMesh::Prop::Triangle & triangle, + double (*integrand)(const BoundaryMesh::UVertex & point)) const { int gauss_order = m_r.size(); @@ -83,21 +80,25 @@ TriangleIntegrator::integrate( sum += m_weights[i] * integrand(computeIthEvaluationPoint( triangle, m_r[i], m_s[i] )); } - sum *= 2 * triangle.area(); // Factor 2 is becase gauss-weights sum up tp 0.5 + sum *= 2 * triangle.computeArea(); + // Factor 2 is becase gauss-weights sum up tp 0.5 return sum; } -boundary_mesh::UnlinkedVertex +BoundaryMesh::UVertex TriangleIntegrator::computeIthEvaluationPoint( - const boundary_mesh::Face & triangle, + const BoundaryMesh::Prop::Triangle & triangle, double xCoord, double yCoord) { - boundary_mesh::Face::ConstVertexIterator vertexIt = triangle.begin_v(); // MK: why here not + BoundaryMesh::Face::ConstVertexIterator vertexIt = triangle.begin_v(); // MK: why here not // boundary_mesh::traits:Face.... ???? - const boundary_mesh::UnlinkedVertex& a = *vertexIt; // MK: write a function for this? - const boundary_mesh::UnlinkedVertex& b = *(++vertexIt); - const boundary_mesh::UnlinkedVertex& c = *(++vertexIt); -// assert( vertexIt == triangle.end_v() ); // MK: what is this good for? it doesn't work anyway + const BoundaryMesh::UVertex& a = *vertexIt; ++vertexIt; // MK: write a function for this? + const BoundaryMesh::UVertex& b = *vertexIt; ++vertexIt; + const BoundaryMesh::UVertex& c = *vertexIt; ++vertexIt; + assert( vertexIt == triangle.end_v() ); // MK: what is this good for? + // it doesn't work anyway + // MM: -> Überprüft, ob es sich wirklich um ein Dreieck handelt. + // Wenn es fehlschlägt, dann ist der == operator für Iteratoren fehlerhaft. return a + (b-a) * xCoord + (c-a) * yCoord; } diff --git a/src/bem3d/src/laplace/TriangleIntegrator.hpp b/src/bem3d/src/laplace/TriangleIntegrator.hpp index fd25cfc..6f78276 100644 --- a/src/bem3d/src/laplace/TriangleIntegrator.hpp +++ b/src/bem3d/src/laplace/TriangleIntegrator.hpp @@ -2,11 +2,7 @@ #define HILBERT3D_LAPLACE_TRIANGLEINTEGRATOR_HPP_GUARD_ #include -#include "../boundary_mesh/Vertex.hpp" - -namespace boundary_mesh { - class Face; -} +#include "../hilbert.hpp" class TriangleIntegrator { public: @@ -31,10 +27,10 @@ class TriangleIntegrator { * This function just returns the computed value. */ double integrate( - const boundary_mesh::Face & triangle_1, - const boundary_mesh::Face & triangle_2, - double (*integrand)(const boundary_mesh::Face & triangle, // MK added a & - const boundary_mesh::UnlinkedVertex & point)) + const BoundaryMesh::Prop::Triangle & triangle_1, + const BoundaryMesh::Prop::Triangle & triangle_2, + double (*integrand)(const BoundaryMesh::Prop::Triangle & triangle, + const BoundaryMesh::UVertex & point)) const; /** @@ -51,14 +47,15 @@ class TriangleIntegrator { * \f$f\f$. */ double integrate( - const boundary_mesh::Face & triangle, - double (*integrand)(const boundary_mesh::UnlinkedVertex & point)) + const BoundaryMesh::Prop::Triangle & triangle, + double (*integrand)(const BoundaryMesh::UVertex & point)) const; private: - static boundary_mesh::UnlinkedVertex - computeIthEvaluationPoint( const boundary_mesh::Face& triangle, - double xCoord, double yCoord ); + static BoundaryMesh::UVertex + computeIthEvaluationPoint( + const BoundaryMesh::Prop::Triangle& triangle, + double xCoord, double yCoord ); std::vector m_r; std::vector m_s; diff --git a/src/bem3d/src/laplace/V.ps b/src/bem3d/src/laplace/V.ps new file mode 100644 index 0000000..2245ef0 --- /dev/null +++ b/src/bem3d/src/laplace/V.ps @@ -0,0 +1,19980 @@ +%!PS-Adobe-2.0-2.0 EPSF-2.0 +%%BoundingBox: 50.000000 50.000000 570.000000 570.000000 +60.000000 dup translate +0.488281 dup scale +0.009766 setlinewidth +/Helvetica findfont 24.576000 scalefont setfont +0 setgray +/bl{0 setgray} def +/fb{0.95 setgray fill} def +/fr{1.0 0.6 0.6 setrgbcolor fill} def +/fg{0.5 setgray fill} def +/fl{0.6 1.0 0.6 setrgbcolor fill} def +/fi{0.8 0.0 0.0 setrgbcolor fill} def +/fu{0.3 0.3 1.0 setrgbcolor fill} def +/cs{closepath stroke} def +/m{moveto} def +/l{lineto} def +/hf{/Helvetica findfont} def +/sf{scalefont setfont} def +bl +0 1008 m +0 1024 l +16 1024 l +16 1008 l +0 1008 l +cs +bl +hf 8.0 sf +3.2 1009.6 m (16) show +bl +16 1008 m +16 1024 l +32 1024 l +32 1008 l +16 1008 l +cs +bl +hf 8.0 sf +19.2 1009.6 m (16) show +bl +0 992 m +0 1008 l +16 1008 l +16 992 l +0 992 l +cs +bl +hf 8.0 sf +3.2 993.6 m (16) show +bl +16 992 m +16 1008 l +32 1008 l +32 992 l +16 992 l +cs +bl +hf 8.0 sf +19.2 993.6 m (16) show +bl +32 1008 m +32 1024 l +48 1024 l +48 1008 l +32 1008 l +cs +bl +hf 8.0 sf +35.2 1009.6 m (16) show +bl +48 1008 m +48 1024 l +64 1024 l +64 1008 l +48 1008 l +cs +bl +hf 8.0 sf +51.2 1009.6 m (16) show +bl +32 992 m +32 1008 l +48 1008 l +48 992 l +32 992 l +cs +bl +hf 8.0 sf +35.2 993.6 m (16) show +bl +48 992 m +48 1008 l +64 1008 l +64 992 l +48 992 l +cs +bl +hf 8.0 sf +51.2 993.6 m (16) show +bl +0 976 m +0 992 l +16 992 l +16 976 l +0 976 l +cs +bl +hf 8.0 sf +3.2 977.6 m (16) show +bl +16 976 m +16 992 l +32 992 l +32 976 l +16 976 l +cs +bl +hf 8.0 sf +19.2 977.6 m (16) show +bl +0 960 m +0 976 l +16 976 l +16 960 l +0 960 l +cs +bl +hf 8.0 sf +3.2 961.6 m (16) show +bl +16 960 m +16 976 l +32 976 l +32 960 l +16 960 l +cs +bl +hf 8.0 sf +19.2 961.6 m (16) show +bl +32 976 m +32 992 l +48 992 l +48 976 l +32 976 l +cs +bl +hf 8.0 sf +35.2 977.6 m (16) show +bl +48 976 m +48 992 l +64 992 l +64 976 l +48 976 l +cs +bl +hf 8.0 sf +51.2 977.6 m (16) show +bl +32 960 m +32 976 l +48 976 l +48 960 l +32 960 l +cs +bl +hf 8.0 sf +35.2 961.6 m (16) show +bl +48 960 m +48 976 l +64 976 l +64 960 l +48 960 l +cs +bl +hf 8.0 sf +51.2 961.6 m (16) show +bl +64 1008 m +64 1024 l +80 1024 l +80 1008 l +64 1008 l +cs +bl +hf 8.0 sf +67.2 1009.6 m (16) show +bl +80 1008 m +80 1024 l +96 1024 l +96 1008 l +80 1008 l +cs +bl +hf 8.0 sf +83.2 1009.6 m (16) show +bl +64 992 m +64 1008 l +80 1008 l +80 992 l +64 992 l +cs +bl +hf 8.0 sf +67.2 993.6 m (16) show +bl +80 992 m +80 1008 l +96 1008 l +96 992 l +80 992 l +cs +bl +hf 8.0 sf +83.2 993.6 m (16) show +bl +96 1008 m +96 1024 l +112 1024 l +112 1008 l +96 1008 l +cs +bl +hf 8.0 sf +99.2 1009.6 m (16) show +bl +112 1008 m +112 1024 l +128 1024 l +128 1008 l +112 1008 l +cs +bl +hf 8.0 sf +115.2 1009.6 m (16) show +bl +96 992 m +96 1008 l +112 1008 l +112 992 l +96 992 l +cs +bl +hf 8.0 sf +99.2 993.6 m (16) show +bl +112 992 m +112 1008 l +128 1008 l +128 992 l +112 992 l +cs +bl +hf 8.0 sf +115.2 993.6 m (16) show +bl +64 976 m +64 992 l +80 992 l +80 976 l +64 976 l +cs +bl +hf 8.0 sf +67.2 977.6 m (16) show +bl +80 976 m +80 992 l +96 992 l +96 976 l +80 976 l +cs +bl +hf 8.0 sf +83.2 977.6 m (16) show +bl +64 960 m +64 976 l +80 976 l +80 960 l +64 960 l +cs +bl +hf 8.0 sf +67.2 961.6 m (16) show +bl +80 960 m +80 976 l +96 976 l +96 960 l +80 960 l +cs +bl +hf 8.0 sf +83.2 961.6 m (16) show +bl +96 976 m +96 992 l +112 992 l +112 976 l +96 976 l +cs +bl +hf 8.0 sf +99.2 977.6 m (16) show +bl +112 976 m +112 992 l +128 992 l +128 976 l +112 976 l +cs +bl +hf 8.0 sf +115.2 977.6 m (16) show +bl +96 960 m +96 976 l +112 976 l +112 960 l +96 960 l +cs +bl +hf 8.0 sf +99.2 961.6 m (16) show +bl +112 960 m +112 976 l +128 976 l +128 960 l +112 960 l +cs +bl +hf 8.0 sf +115.2 961.6 m (16) show +bl +0 944 m +0 960 l +16 960 l +16 944 l +0 944 l +cs +bl +hf 8.0 sf +3.2 945.6 m (16) show +bl +16 944 m +16 960 l +32 960 l +32 944 l +16 944 l +cs +bl +hf 8.0 sf +19.2 945.6 m (16) show +bl +0 928 m +0 944 l +16 944 l +16 928 l +0 928 l +cs +bl +hf 8.0 sf +3.2 929.6 m (16) show +bl +16 928 m +16 944 l +32 944 l +32 928 l +16 928 l +cs +bl +hf 8.0 sf +19.2 929.6 m (16) show +bl +32 944 m +32 960 l +48 960 l +48 944 l +32 944 l +cs +bl +hf 8.0 sf +35.2 945.6 m (16) show +bl +48 944 m +48 960 l +64 960 l +64 944 l +48 944 l +cs +bl +hf 8.0 sf +51.2 945.6 m (16) show +bl +32 928 m +32 944 l +48 944 l +48 928 l +32 928 l +cs +bl +hf 8.0 sf +35.2 929.6 m (16) show +bl +48 928 m +48 944 l +64 944 l +64 928 l +48 928 l +cs +bl +hf 8.0 sf +51.2 929.6 m (16) show +bl +0 912 m +0 928 l +16 928 l +16 912 l +0 912 l +cs +bl +hf 8.0 sf +3.2 913.6 m (16) show +bl +16 912 m +16 928 l +32 928 l +32 912 l +16 912 l +cs +bl +hf 8.0 sf +19.2 913.6 m (16) show +bl +0 896 m +0 912 l +16 912 l +16 896 l +0 896 l +cs +bl +hf 8.0 sf +3.2 897.6 m (16) show +bl +16 896 m +16 912 l +32 912 l +32 896 l +16 896 l +cs +bl +hf 8.0 sf +19.2 897.6 m (16) show +bl +32 912 m +32 928 l +48 928 l +48 912 l +32 912 l +cs +bl +hf 8.0 sf +35.2 913.6 m (16) show +bl +48 912 m +48 928 l +64 928 l +64 912 l +48 912 l +cs +bl +hf 8.0 sf +51.2 913.6 m (16) show +bl +32 896 m +32 912 l +48 912 l +48 896 l +32 896 l +cs +bl +hf 8.0 sf +35.2 897.6 m (16) show +bl +48 896 m +48 912 l +64 912 l +64 896 l +48 896 l +cs +bl +hf 8.0 sf +51.2 897.6 m (16) show +bl +64 944 m +64 960 l +80 960 l +80 944 l +64 944 l +cs +bl +hf 8.0 sf +67.2 945.6 m (16) show +bl +80 944 m +80 960 l +96 960 l +96 944 l +80 944 l +cs +bl +hf 8.0 sf +83.2 945.6 m (16) show +bl +64 928 m +64 944 l +80 944 l +80 928 l +64 928 l +cs +bl +hf 8.0 sf +67.2 929.6 m (16) show +bl +80 928 m +80 944 l +96 944 l +96 928 l +80 928 l +cs +bl +hf 8.0 sf +83.2 929.6 m (16) show +bl +96 944 m +96 960 l +112 960 l +112 944 l +96 944 l +cs +bl +hf 8.0 sf +99.2 945.6 m (16) show +bl +112 944 m +112 960 l +128 960 l +128 944 l +112 944 l +cs +bl +hf 8.0 sf +115.2 945.6 m (16) show +bl +96 928 m +96 944 l +112 944 l +112 928 l +96 928 l +cs +bl +hf 8.0 sf +99.2 929.6 m (16) show +bl +112 928 m +112 944 l +128 944 l +128 928 l +112 928 l +cs +bl +hf 8.0 sf +115.2 929.6 m (16) show +bl +64 912 m +64 928 l +80 928 l +80 912 l +64 912 l +cs +bl +hf 8.0 sf +67.2 913.6 m (16) show +bl +80 912 m +80 928 l +96 928 l +96 912 l +80 912 l +cs +bl +hf 8.0 sf +83.2 913.6 m (16) show +bl +64 896 m +64 912 l +80 912 l +80 896 l +64 896 l +cs +bl +hf 8.0 sf +67.2 897.6 m (16) show +bl +80 896 m +80 912 l +96 912 l +96 896 l +80 896 l +cs +bl +hf 8.0 sf +83.2 897.6 m (16) show +bl +96 912 m +96 928 l +112 928 l +112 912 l +96 912 l +cs +bl +hf 8.0 sf +99.2 913.6 m (16) show +bl +112 912 m +112 928 l +128 928 l +128 912 l +112 912 l +cs +bl +hf 8.0 sf +115.2 913.6 m (16) show +bl +96 896 m +96 912 l +112 912 l +112 896 l +96 896 l +cs +bl +hf 8.0 sf +99.2 897.6 m (16) show +bl +112 896 m +112 912 l +128 912 l +128 896 l +112 896 l +cs +bl +hf 8.0 sf +115.2 897.6 m (16) show +bl +128 1008 m +128 1024 l +144 1024 l +144 1008 l +128 1008 l +cs +bl +hf 8.0 sf +131.2 1009.6 m (16) show +bl +144 1008 m +144 1024 l +160 1024 l +160 1008 l +144 1008 l +cs +bl +hf 8.0 sf +147.2 1009.6 m (16) show +bl +128 992 m +128 1008 l +144 1008 l +144 992 l +128 992 l +cs +bl +hf 8.0 sf +131.2 993.6 m (16) show +bl +144 992 m +144 1008 l +160 1008 l +160 992 l +144 992 l +cs +bl +hf 8.0 sf +147.2 993.6 m (16) show +160 992 m +160 1024 l +192 1024 l +192 992 l +160 992 l +fl +bl +160 992 m +160 1024 l +192 1024 l +192 992 l +160 992 l +cs +bl +128 976 m +128 992 l +144 992 l +144 976 l +128 976 l +cs +bl +hf 8.0 sf +131.2 977.6 m (16) show +bl +144 976 m +144 992 l +160 992 l +160 976 l +144 976 l +cs +bl +hf 8.0 sf +147.2 977.6 m (16) show +bl +128 960 m +128 976 l +144 976 l +144 960 l +128 960 l +cs +bl +hf 8.0 sf +131.2 961.6 m (16) show +bl +144 960 m +144 976 l +160 976 l +160 960 l +144 960 l +cs +bl +hf 8.0 sf +147.2 961.6 m (16) show +bl +160 976 m +160 992 l +176 992 l +176 976 l +160 976 l +cs +bl +hf 8.0 sf +163.2 977.6 m (16) show +bl +176 976 m +176 992 l +192 992 l +192 976 l +176 976 l +cs +bl +hf 8.0 sf +179.2 977.6 m (16) show +bl +160 960 m +160 976 l +176 976 l +176 960 l +160 960 l +cs +bl +hf 8.0 sf +163.2 961.6 m (16) show +bl +176 960 m +176 976 l +192 976 l +192 960 l +176 960 l +cs +bl +hf 8.0 sf +179.2 961.6 m (16) show +bl +192 1008 m +192 1024 l +208 1024 l +208 1008 l +192 1008 l +cs +bl +hf 8.0 sf +195.2 1009.6 m (16) show +208 1008 m +208 1024 l +224 1024 l +224 1008 l +208 1008 l +fl +bl +208 1008 m +208 1024 l +224 1024 l +224 1008 l +208 1008 l +cs +bl +192 992 m +192 1008 l +208 1008 l +208 992 l +192 992 l +cs +bl +hf 8.0 sf +195.2 993.6 m (16) show +bl +208 992 m +208 1008 l +224 1008 l +224 992 l +208 992 l +cs +bl +hf 8.0 sf +211.2 993.6 m (16) show +224 992 m +224 1024 l +256 1024 l +256 992 l +224 992 l +fl +bl +224 992 m +224 1024 l +256 1024 l +256 992 l +224 992 l +cs +bl +192 976 m +192 992 l +208 992 l +208 976 l +192 976 l +cs +bl +hf 8.0 sf +195.2 977.6 m (16) show +bl +208 976 m +208 992 l +224 992 l +224 976 l +208 976 l +cs +bl +hf 8.0 sf +211.2 977.6 m (16) show +bl +192 960 m +192 976 l +208 976 l +208 960 l +192 960 l +cs +bl +hf 8.0 sf +195.2 961.6 m (16) show +bl +208 960 m +208 976 l +224 976 l +224 960 l +208 960 l +cs +bl +hf 8.0 sf +211.2 961.6 m (16) show +bl +224 976 m +224 992 l +240 992 l +240 976 l +224 976 l +cs +bl +hf 8.0 sf +227.2 977.6 m (16) show +240 976 m +240 992 l +256 992 l +256 976 l +240 976 l +fl +bl +240 976 m +240 992 l +256 992 l +256 976 l +240 976 l +cs +bl +224 960 m +224 976 l +240 976 l +240 960 l +224 960 l +cs +bl +hf 8.0 sf +227.2 961.6 m (16) show +bl +240 960 m +240 976 l +256 976 l +256 960 l +240 960 l +cs +bl +hf 8.0 sf +243.2 961.6 m (16) show +bl +128 944 m +128 960 l +144 960 l +144 944 l +128 944 l +cs +bl +hf 8.0 sf +131.2 945.6 m (16) show +bl +144 944 m +144 960 l +160 960 l +160 944 l +144 944 l +cs +bl +hf 8.0 sf +147.2 945.6 m (16) show +128 928 m +128 944 l +144 944 l +144 928 l +128 928 l +fl +bl +128 928 m +128 944 l +144 944 l +144 928 l +128 928 l +cs +bl +144 928 m +144 944 l +160 944 l +160 928 l +144 928 l +cs +bl +hf 8.0 sf +147.2 929.6 m (16) show +160 928 m +160 960 l +192 960 l +192 928 l +160 928 l +fl +bl +160 928 m +160 960 l +192 960 l +192 928 l +160 928 l +cs +bl +128 912 m +128 928 l +144 928 l +144 912 l +128 912 l +cs +bl +hf 8.0 sf +131.2 913.6 m (16) show +bl +144 912 m +144 928 l +160 928 l +160 912 l +144 912 l +cs +bl +hf 8.0 sf +147.2 913.6 m (16) show +bl +128 896 m +128 912 l +144 912 l +144 896 l +128 896 l +cs +bl +hf 8.0 sf +131.2 897.6 m (16) show +bl +144 896 m +144 912 l +160 912 l +160 896 l +144 896 l +cs +bl +hf 8.0 sf +147.2 897.6 m (16) show +bl +160 912 m +160 928 l +176 928 l +176 912 l +160 912 l +cs +bl +hf 8.0 sf +163.2 913.6 m (16) show +bl +176 912 m +176 928 l +192 928 l +192 912 l +176 912 l +cs +bl +hf 8.0 sf +179.2 913.6 m (16) show +160 896 m +160 912 l +176 912 l +176 896 l +160 896 l +fl +bl +160 896 m +160 912 l +176 912 l +176 896 l +160 896 l +cs +bl +176 896 m +176 912 l +192 912 l +192 896 l +176 896 l +cs +bl +hf 8.0 sf +179.2 897.6 m (16) show +bl +192 944 m +192 960 l +208 960 l +208 944 l +192 944 l +cs +bl +hf 8.0 sf +195.2 945.6 m (16) show +bl +208 944 m +208 960 l +224 960 l +224 944 l +208 944 l +cs +bl +hf 8.0 sf +211.2 945.6 m (16) show +bl +192 928 m +192 944 l +208 944 l +208 928 l +192 928 l +cs +bl +hf 8.0 sf +195.2 929.6 m (16) show +bl +208 928 m +208 944 l +224 944 l +224 928 l +208 928 l +cs +bl +hf 8.0 sf +211.2 929.6 m (16) show +224 928 m +224 960 l +256 960 l +256 928 l +224 928 l +fl +bl +224 928 m +224 960 l +256 960 l +256 928 l +224 928 l +cs +bl +192 912 m +192 928 l +208 928 l +208 912 l +192 912 l +cs +bl +hf 8.0 sf +195.2 913.6 m (16) show +bl +208 912 m +208 928 l +224 928 l +224 912 l +208 912 l +cs +bl +hf 8.0 sf +211.2 913.6 m (16) show +bl +192 896 m +192 912 l +208 912 l +208 896 l +192 896 l +cs +bl +hf 8.0 sf +195.2 897.6 m (16) show +bl +208 896 m +208 912 l +224 912 l +224 896 l +208 896 l +cs +bl +hf 8.0 sf +211.2 897.6 m (16) show +bl +224 912 m +224 928 l +240 928 l +240 912 l +224 912 l +cs +bl +hf 8.0 sf +227.2 913.6 m (16) show +bl +240 912 m +240 928 l +256 928 l +256 912 l +240 912 l +cs +bl +hf 8.0 sf +243.2 913.6 m (16) show +bl +224 896 m +224 912 l +240 912 l +240 896 l +224 896 l +cs +bl +hf 8.0 sf +227.2 897.6 m (16) show +bl +240 896 m +240 912 l +256 912 l +256 896 l +240 896 l +cs +bl +hf 8.0 sf +243.2 897.6 m (16) show +bl +0 880 m +0 896 l +16 896 l +16 880 l +0 880 l +cs +bl +hf 8.0 sf +3.2 881.6 m (16) show +bl +16 880 m +16 896 l +32 896 l +32 880 l +16 880 l +cs +bl +hf 8.0 sf +19.2 881.6 m (16) show +bl +0 864 m +0 880 l +16 880 l +16 864 l +0 864 l +cs +bl +hf 8.0 sf +3.2 865.6 m (16) show +bl +16 864 m +16 880 l +32 880 l +32 864 l +16 864 l +cs +bl +hf 8.0 sf +19.2 865.6 m (16) show +bl +32 880 m +32 896 l +48 896 l +48 880 l +32 880 l +cs +bl +hf 8.0 sf +35.2 881.6 m (16) show +bl +48 880 m +48 896 l +64 896 l +64 880 l +48 880 l +cs +bl +hf 8.0 sf +51.2 881.6 m (16) show +bl +32 864 m +32 880 l +48 880 l +48 864 l +32 864 l +cs +bl +hf 8.0 sf +35.2 865.6 m (16) show +bl +48 864 m +48 880 l +64 880 l +64 864 l +48 864 l +cs +bl +hf 8.0 sf +51.2 865.6 m (16) show +0 832 m +0 864 l +32 864 l +32 832 l +0 832 l +fl +bl +0 832 m +0 864 l +32 864 l +32 832 l +0 832 l +cs +bl +32 848 m +32 864 l +48 864 l +48 848 l +32 848 l +cs +bl +hf 8.0 sf +35.2 849.6 m (16) show +bl +48 848 m +48 864 l +64 864 l +64 848 l +48 848 l +cs +bl +hf 8.0 sf +51.2 849.6 m (16) show +bl +32 832 m +32 848 l +48 848 l +48 832 l +32 832 l +cs +bl +hf 8.0 sf +35.2 833.6 m (16) show +bl +48 832 m +48 848 l +64 848 l +64 832 l +48 832 l +cs +bl +hf 8.0 sf +51.2 833.6 m (16) show +bl +64 880 m +64 896 l +80 896 l +80 880 l +64 880 l +cs +bl +hf 8.0 sf +67.2 881.6 m (16) show +80 880 m +80 896 l +96 896 l +96 880 l +80 880 l +fl +bl +80 880 m +80 896 l +96 896 l +96 880 l +80 880 l +cs +bl +64 864 m +64 880 l +80 880 l +80 864 l +64 864 l +cs +bl +hf 8.0 sf +67.2 865.6 m (16) show +bl +80 864 m +80 880 l +96 880 l +96 864 l +80 864 l +cs +bl +hf 8.0 sf +83.2 865.6 m (16) show +bl +96 880 m +96 896 l +112 896 l +112 880 l +96 880 l +cs +bl +hf 8.0 sf +99.2 881.6 m (16) show +bl +112 880 m +112 896 l +128 896 l +128 880 l +112 880 l +cs +bl +hf 8.0 sf +115.2 881.6 m (16) show +bl +96 864 m +96 880 l +112 880 l +112 864 l +96 864 l +cs +bl +hf 8.0 sf +99.2 865.6 m (16) show +bl +112 864 m +112 880 l +128 880 l +128 864 l +112 864 l +cs +bl +hf 8.0 sf +115.2 865.6 m (16) show +64 832 m +64 864 l +96 864 l +96 832 l +64 832 l +fl +bl +64 832 m +64 864 l +96 864 l +96 832 l +64 832 l +cs +bl +96 848 m +96 864 l +112 864 l +112 848 l +96 848 l +cs +bl +hf 8.0 sf +99.2 849.6 m (16) show +112 848 m +112 864 l +128 864 l +128 848 l +112 848 l +fl +bl +112 848 m +112 864 l +128 864 l +128 848 l +112 848 l +cs +bl +96 832 m +96 848 l +112 848 l +112 832 l +96 832 l +cs +bl +hf 8.0 sf +99.2 833.6 m (16) show +bl +112 832 m +112 848 l +128 848 l +128 832 l +112 832 l +cs +bl +hf 8.0 sf +115.2 833.6 m (16) show +bl +0 816 m +0 832 l +16 832 l +16 816 l +0 816 l +cs +bl +hf 8.0 sf +3.2 817.6 m (16) show +bl +16 816 m +16 832 l +32 832 l +32 816 l +16 816 l +cs +bl +hf 8.0 sf +19.2 817.6 m (16) show +0 800 m +0 816 l +16 816 l +16 800 l +0 800 l +fl +bl +0 800 m +0 816 l +16 816 l +16 800 l +0 800 l +cs +bl +16 800 m +16 816 l +32 816 l +32 800 l +16 800 l +cs +bl +hf 8.0 sf +19.2 801.6 m (16) show +bl +32 816 m +32 832 l +48 832 l +48 816 l +32 816 l +cs +bl +hf 8.0 sf +35.2 817.6 m (16) show +bl +48 816 m +48 832 l +64 832 l +64 816 l +48 816 l +cs +bl +hf 8.0 sf +51.2 817.6 m (16) show +bl +32 800 m +32 816 l +48 816 l +48 800 l +32 800 l +cs +bl +hf 8.0 sf +35.2 801.6 m (16) show +bl +48 800 m +48 816 l +64 816 l +64 800 l +48 800 l +cs +bl +hf 8.0 sf +51.2 801.6 m (16) show +0 768 m +0 800 l +32 800 l +32 768 l +0 768 l +fl +bl +0 768 m +0 800 l +32 800 l +32 768 l +0 768 l +cs +bl +32 784 m +32 800 l +48 800 l +48 784 l +32 784 l +cs +bl +hf 8.0 sf +35.2 785.6 m (16) show +bl +48 784 m +48 800 l +64 800 l +64 784 l +48 784 l +cs +bl +hf 8.0 sf +51.2 785.6 m (16) show +32 768 m +32 784 l +48 784 l +48 768 l +32 768 l +fl +bl +32 768 m +32 784 l +48 784 l +48 768 l +32 768 l +cs +bl +48 768 m +48 784 l +64 784 l +64 768 l +48 768 l +cs +bl +hf 8.0 sf +51.2 769.6 m (16) show +bl +64 816 m +64 832 l +80 832 l +80 816 l +64 816 l +cs +bl +hf 8.0 sf +67.2 817.6 m (16) show +bl +80 816 m +80 832 l +96 832 l +96 816 l +80 816 l +cs +bl +hf 8.0 sf +83.2 817.6 m (16) show +bl +64 800 m +64 816 l +80 816 l +80 800 l +64 800 l +cs +bl +hf 8.0 sf +67.2 801.6 m (16) show +bl +80 800 m +80 816 l +96 816 l +96 800 l +80 800 l +cs +bl +hf 8.0 sf +83.2 801.6 m (16) show +bl +96 816 m +96 832 l +112 832 l +112 816 l +96 816 l +cs +bl +hf 8.0 sf +99.2 817.6 m (16) show +bl +112 816 m +112 832 l +128 832 l +128 816 l +112 816 l +cs +bl +hf 8.0 sf +115.2 817.6 m (16) show +bl +96 800 m +96 816 l +112 816 l +112 800 l +96 800 l +cs +bl +hf 8.0 sf +99.2 801.6 m (16) show +bl +112 800 m +112 816 l +128 816 l +128 800 l +112 800 l +cs +bl +hf 8.0 sf +115.2 801.6 m (16) show +64 768 m +64 800 l +96 800 l +96 768 l +64 768 l +fl +bl +64 768 m +64 800 l +96 800 l +96 768 l +64 768 l +cs +bl +96 784 m +96 800 l +112 800 l +112 784 l +96 784 l +cs +bl +hf 8.0 sf +99.2 785.6 m (16) show +bl +112 784 m +112 800 l +128 800 l +128 784 l +112 784 l +cs +bl +hf 8.0 sf +115.2 785.6 m (16) show +bl +96 768 m +96 784 l +112 784 l +112 768 l +96 768 l +cs +bl +hf 8.0 sf +99.2 769.6 m (16) show +bl +112 768 m +112 784 l +128 784 l +128 768 l +112 768 l +cs +bl +hf 8.0 sf +115.2 769.6 m (16) show +bl +128 880 m +128 896 l +144 896 l +144 880 l +128 880 l +cs +bl +hf 8.0 sf +131.2 881.6 m (16) show +bl +144 880 m +144 896 l +160 896 l +160 880 l +144 880 l +cs +bl +hf 8.0 sf +147.2 881.6 m (16) show +bl +128 864 m +128 880 l +144 880 l +144 864 l +128 864 l +cs +bl +hf 8.0 sf +131.2 865.6 m (16) show +bl +144 864 m +144 880 l +160 880 l +160 864 l +144 864 l +cs +bl +hf 8.0 sf +147.2 865.6 m (16) show +bl +160 880 m +160 896 l +176 896 l +176 880 l +160 880 l +cs +bl +hf 8.0 sf +163.2 881.6 m (16) show +bl +176 880 m +176 896 l +192 896 l +192 880 l +176 880 l +cs +bl +hf 8.0 sf +179.2 881.6 m (16) show +bl +160 864 m +160 880 l +176 880 l +176 864 l +160 864 l +cs +bl +hf 8.0 sf +163.2 865.6 m (16) show +bl +176 864 m +176 880 l +192 880 l +192 864 l +176 864 l +cs +bl +hf 8.0 sf +179.2 865.6 m (16) show +bl +128 848 m +128 864 l +144 864 l +144 848 l +128 848 l +cs +bl +hf 8.0 sf +131.2 849.6 m (16) show +bl +144 848 m +144 864 l +160 864 l +160 848 l +144 848 l +cs +bl +hf 8.0 sf +147.2 849.6 m (16) show +bl +128 832 m +128 848 l +144 848 l +144 832 l +128 832 l +cs +bl +hf 8.0 sf +131.2 833.6 m (16) show +bl +144 832 m +144 848 l +160 848 l +160 832 l +144 832 l +cs +bl +hf 8.0 sf +147.2 833.6 m (16) show +bl +160 848 m +160 864 l +176 864 l +176 848 l +160 848 l +cs +bl +hf 8.0 sf +163.2 849.6 m (16) show +bl +176 848 m +176 864 l +192 864 l +192 848 l +176 848 l +cs +bl +hf 8.0 sf +179.2 849.6 m (16) show +bl +160 832 m +160 848 l +176 848 l +176 832 l +160 832 l +cs +bl +hf 8.0 sf +163.2 833.6 m (16) show +bl +176 832 m +176 848 l +192 848 l +192 832 l +176 832 l +cs +bl +hf 8.0 sf +179.2 833.6 m (16) show +bl +192 880 m +192 896 l +208 896 l +208 880 l +192 880 l +cs +bl +hf 8.0 sf +195.2 881.6 m (16) show +bl +208 880 m +208 896 l +224 896 l +224 880 l +208 880 l +cs +bl +hf 8.0 sf +211.2 881.6 m (16) show +bl +192 864 m +192 880 l +208 880 l +208 864 l +192 864 l +cs +bl +hf 8.0 sf +195.2 865.6 m (16) show +bl +208 864 m +208 880 l +224 880 l +224 864 l +208 864 l +cs +bl +hf 8.0 sf +211.2 865.6 m (16) show +bl +224 880 m +224 896 l +240 896 l +240 880 l +224 880 l +cs +bl +hf 8.0 sf +227.2 881.6 m (16) show +bl +240 880 m +240 896 l +256 896 l +256 880 l +240 880 l +cs +bl +hf 8.0 sf +243.2 881.6 m (16) show +bl +224 864 m +224 880 l +240 880 l +240 864 l +224 864 l +cs +bl +hf 8.0 sf +227.2 865.6 m (16) show +bl +240 864 m +240 880 l +256 880 l +256 864 l +240 864 l +cs +bl +hf 8.0 sf +243.2 865.6 m (16) show +bl +192 848 m +192 864 l +208 864 l +208 848 l +192 848 l +cs +bl +hf 8.0 sf +195.2 849.6 m (16) show +bl +208 848 m +208 864 l +224 864 l +224 848 l +208 848 l +cs +bl +hf 8.0 sf +211.2 849.6 m (16) show +bl +192 832 m +192 848 l +208 848 l +208 832 l +192 832 l +cs +bl +hf 8.0 sf +195.2 833.6 m (16) show +bl +208 832 m +208 848 l +224 848 l +224 832 l +208 832 l +cs +bl +hf 8.0 sf +211.2 833.6 m (16) show +bl +224 848 m +224 864 l +240 864 l +240 848 l +224 848 l +cs +bl +hf 8.0 sf +227.2 849.6 m (16) show +bl +240 848 m +240 864 l +256 864 l +256 848 l +240 848 l +cs +bl +hf 8.0 sf +243.2 849.6 m (16) show +bl +224 832 m +224 848 l +240 848 l +240 832 l +224 832 l +cs +bl +hf 8.0 sf +227.2 833.6 m (16) show +bl +240 832 m +240 848 l +256 848 l +256 832 l +240 832 l +cs +bl +hf 8.0 sf +243.2 833.6 m (16) show +bl +128 816 m +128 832 l +144 832 l +144 816 l +128 816 l +cs +bl +hf 8.0 sf +131.2 817.6 m (16) show +bl +144 816 m +144 832 l +160 832 l +160 816 l +144 816 l +cs +bl +hf 8.0 sf +147.2 817.6 m (16) show +bl +128 800 m +128 816 l +144 816 l +144 800 l +128 800 l +cs +bl +hf 8.0 sf +131.2 801.6 m (16) show +bl +144 800 m +144 816 l +160 816 l +160 800 l +144 800 l +cs +bl +hf 8.0 sf +147.2 801.6 m (16) show +bl +160 816 m +160 832 l +176 832 l +176 816 l +160 816 l +cs +bl +hf 8.0 sf +163.2 817.6 m (16) show +bl +176 816 m +176 832 l +192 832 l +192 816 l +176 816 l +cs +bl +hf 8.0 sf +179.2 817.6 m (16) show +bl +160 800 m +160 816 l +176 816 l +176 800 l +160 800 l +cs +bl +hf 8.0 sf +163.2 801.6 m (16) show +bl +176 800 m +176 816 l +192 816 l +192 800 l +176 800 l +cs +bl +hf 8.0 sf +179.2 801.6 m (16) show +bl +128 784 m +128 800 l +144 800 l +144 784 l +128 784 l +cs +bl +hf 8.0 sf +131.2 785.6 m (16) show +bl +144 784 m +144 800 l +160 800 l +160 784 l +144 784 l +cs +bl +hf 8.0 sf +147.2 785.6 m (16) show +bl +128 768 m +128 784 l +144 784 l +144 768 l +128 768 l +cs +bl +hf 8.0 sf +131.2 769.6 m (16) show +bl +144 768 m +144 784 l +160 784 l +160 768 l +144 768 l +cs +bl +hf 8.0 sf +147.2 769.6 m (16) show +bl +160 784 m +160 800 l +176 800 l +176 784 l +160 784 l +cs +bl +hf 8.0 sf +163.2 785.6 m (16) show +bl +176 784 m +176 800 l +192 800 l +192 784 l +176 784 l +cs +bl +hf 8.0 sf +179.2 785.6 m (16) show +bl +160 768 m +160 784 l +176 784 l +176 768 l +160 768 l +cs +bl +hf 8.0 sf +163.2 769.6 m (16) show +bl +176 768 m +176 784 l +192 784 l +192 768 l +176 768 l +cs +bl +hf 8.0 sf +179.2 769.6 m (16) show +bl +192 816 m +192 832 l +208 832 l +208 816 l +192 816 l +cs +bl +hf 8.0 sf +195.2 817.6 m (16) show +bl +208 816 m +208 832 l +224 832 l +224 816 l +208 816 l +cs +bl +hf 8.0 sf +211.2 817.6 m (16) show +bl +192 800 m +192 816 l +208 816 l +208 800 l +192 800 l +cs +bl +hf 8.0 sf +195.2 801.6 m (16) show +bl +208 800 m +208 816 l +224 816 l +224 800 l +208 800 l +cs +bl +hf 8.0 sf +211.2 801.6 m (16) show +bl +224 816 m +224 832 l +240 832 l +240 816 l +224 816 l +cs +bl +hf 8.0 sf +227.2 817.6 m (16) show +bl +240 816 m +240 832 l +256 832 l +256 816 l +240 816 l +cs +bl +hf 8.0 sf +243.2 817.6 m (16) show +bl +224 800 m +224 816 l +240 816 l +240 800 l +224 800 l +cs +bl +hf 8.0 sf +227.2 801.6 m (16) show +bl +240 800 m +240 816 l +256 816 l +256 800 l +240 800 l +cs +bl +hf 8.0 sf +243.2 801.6 m (16) show +bl +192 784 m +192 800 l +208 800 l +208 784 l +192 784 l +cs +bl +hf 8.0 sf +195.2 785.6 m (16) show +bl +208 784 m +208 800 l +224 800 l +224 784 l +208 784 l +cs +bl +hf 8.0 sf +211.2 785.6 m (16) show +bl +192 768 m +192 784 l +208 784 l +208 768 l +192 768 l +cs +bl +hf 8.0 sf +195.2 769.6 m (16) show +bl +208 768 m +208 784 l +224 784 l +224 768 l +208 768 l +cs +bl +hf 8.0 sf +211.2 769.6 m (16) show +bl +224 784 m +224 800 l +240 800 l +240 784 l +224 784 l +cs +bl +hf 8.0 sf +227.2 785.6 m (16) show +bl +240 784 m +240 800 l +256 800 l +256 784 l +240 784 l +cs +bl +hf 8.0 sf +243.2 785.6 m (16) show +bl +224 768 m +224 784 l +240 784 l +240 768 l +224 768 l +cs +bl +hf 8.0 sf +227.2 769.6 m (16) show +bl +240 768 m +240 784 l +256 784 l +256 768 l +240 768 l +cs +bl +hf 8.0 sf +243.2 769.6 m (16) show +256 1008 m +256 1024 l +272 1024 l +272 1008 l +256 1008 l +fl +bl +256 1008 m +256 1024 l +272 1024 l +272 1008 l +256 1008 l +cs +272 1008 m +272 1024 l +288 1024 l +288 1008 l +272 1008 l +fl +bl +272 1008 m +272 1024 l +288 1024 l +288 1008 l +272 1008 l +cs +bl +256 992 m +256 1008 l +272 1008 l +272 992 l +256 992 l +cs +bl +hf 8.0 sf +259.2 993.6 m (16) show +272 992 m +272 1008 l +288 1008 l +288 992 l +272 992 l +fl +bl +272 992 m +272 1008 l +288 1008 l +288 992 l +272 992 l +cs +288 1008 m +288 1024 l +304 1024 l +304 1008 l +288 1008 l +fl +bl +288 1008 m +288 1024 l +304 1024 l +304 1008 l +288 1008 l +cs +304 1008 m +304 1024 l +320 1024 l +320 1008 l +304 1008 l +fl +bl +304 1008 m +304 1024 l +320 1024 l +320 1008 l +304 1008 l +cs +bl +288 992 m +288 1008 l +304 1008 l +304 992 l +288 992 l +cs +bl +hf 8.0 sf +291.2 993.6 m (16) show +304 992 m +304 1008 l +320 1008 l +320 992 l +304 992 l +fl +bl +304 992 m +304 1008 l +320 1008 l +320 992 l +304 992 l +cs +256 976 m +256 992 l +272 992 l +272 976 l +256 976 l +fl +bl +256 976 m +256 992 l +272 992 l +272 976 l +256 976 l +cs +272 976 m +272 992 l +288 992 l +288 976 l +272 976 l +fl +bl +272 976 m +272 992 l +288 992 l +288 976 l +272 976 l +cs +bl +256 960 m +256 976 l +272 976 l +272 960 l +256 960 l +cs +bl +hf 8.0 sf +259.2 961.6 m (16) show +272 960 m +272 976 l +288 976 l +288 960 l +272 960 l +fl +bl +272 960 m +272 976 l +288 976 l +288 960 l +272 960 l +cs +288 976 m +288 992 l +304 992 l +304 976 l +288 976 l +fl +bl +288 976 m +288 992 l +304 992 l +304 976 l +288 976 l +cs +304 976 m +304 992 l +320 992 l +320 976 l +304 976 l +fl +bl +304 976 m +304 992 l +320 992 l +320 976 l +304 976 l +cs +bl +288 960 m +288 976 l +304 976 l +304 960 l +288 960 l +cs +bl +hf 8.0 sf +291.2 961.6 m (16) show +304 960 m +304 976 l +320 976 l +320 960 l +304 960 l +fl +bl +304 960 m +304 976 l +320 976 l +320 960 l +304 960 l +cs +320 992 m +320 1024 l +352 1024 l +352 992 l +320 992 l +fl +bl +320 992 m +320 1024 l +352 1024 l +352 992 l +320 992 l +cs +352 992 m +352 1024 l +384 1024 l +384 992 l +352 992 l +fl +bl +352 992 m +352 1024 l +384 1024 l +384 992 l +352 992 l +cs +320 960 m +320 992 l +352 992 l +352 960 l +320 960 l +fl +bl +320 960 m +320 992 l +352 992 l +352 960 l +320 960 l +cs +352 960 m +352 992 l +384 992 l +384 960 l +352 960 l +fl +bl +352 960 m +352 992 l +384 992 l +384 960 l +352 960 l +cs +bl +256 944 m +256 960 l +272 960 l +272 944 l +256 944 l +cs +bl +hf 8.0 sf +259.2 945.6 m (16) show +bl +272 944 m +272 960 l +288 960 l +288 944 l +272 944 l +cs +bl +hf 8.0 sf +275.2 945.6 m (16) show +bl +256 928 m +256 944 l +272 944 l +272 928 l +256 928 l +cs +bl +hf 8.0 sf +259.2 929.6 m (16) show +bl +272 928 m +272 944 l +288 944 l +288 928 l +272 928 l +cs +bl +hf 8.0 sf +275.2 929.6 m (16) show +bl +288 944 m +288 960 l +304 960 l +304 944 l +288 944 l +cs +bl +hf 8.0 sf +291.2 945.6 m (16) show +bl +304 944 m +304 960 l +320 960 l +320 944 l +304 944 l +cs +bl +hf 8.0 sf +307.2 945.6 m (16) show +bl +288 928 m +288 944 l +304 944 l +304 928 l +288 928 l +cs +bl +hf 8.0 sf +291.2 929.6 m (16) show +bl +304 928 m +304 944 l +320 944 l +320 928 l +304 928 l +cs +bl +hf 8.0 sf +307.2 929.6 m (16) show +bl +256 912 m +256 928 l +272 928 l +272 912 l +256 912 l +cs +bl +hf 8.0 sf +259.2 913.6 m (16) show +bl +272 912 m +272 928 l +288 928 l +288 912 l +272 912 l +cs +bl +hf 8.0 sf +275.2 913.6 m (16) show +bl +256 896 m +256 912 l +272 912 l +272 896 l +256 896 l +cs +bl +hf 8.0 sf +259.2 897.6 m (16) show +bl +272 896 m +272 912 l +288 912 l +288 896 l +272 896 l +cs +bl +hf 8.0 sf +275.2 897.6 m (16) show +bl +288 912 m +288 928 l +304 928 l +304 912 l +288 912 l +cs +bl +hf 8.0 sf +291.2 913.6 m (16) show +bl +304 912 m +304 928 l +320 928 l +320 912 l +304 912 l +cs +bl +hf 8.0 sf +307.2 913.6 m (16) show +bl +288 896 m +288 912 l +304 912 l +304 896 l +288 896 l +cs +bl +hf 8.0 sf +291.2 897.6 m (16) show +bl +304 896 m +304 912 l +320 912 l +320 896 l +304 896 l +cs +bl +hf 8.0 sf +307.2 897.6 m (16) show +320 944 m +320 960 l +336 960 l +336 944 l +320 944 l +fl +bl +320 944 m +320 960 l +336 960 l +336 944 l +320 944 l +cs +336 944 m +336 960 l +352 960 l +352 944 l +336 944 l +fl +bl +336 944 m +336 960 l +352 960 l +352 944 l +336 944 l +cs +bl +320 928 m +320 944 l +336 944 l +336 928 l +320 928 l +cs +bl +hf 8.0 sf +323.2 929.6 m (16) show +336 928 m +336 944 l +352 944 l +352 928 l +336 928 l +fl +bl +336 928 m +336 944 l +352 944 l +352 928 l +336 928 l +cs +352 944 m +352 960 l +368 960 l +368 944 l +352 944 l +fl +bl +352 944 m +352 960 l +368 960 l +368 944 l +352 944 l +cs +368 944 m +368 960 l +384 960 l +384 944 l +368 944 l +fl +bl +368 944 m +368 960 l +384 960 l +384 944 l +368 944 l +cs +bl +352 928 m +352 944 l +368 944 l +368 928 l +352 928 l +cs +bl +hf 8.0 sf +355.2 929.6 m (16) show +368 928 m +368 944 l +384 944 l +384 928 l +368 928 l +fl +bl +368 928 m +368 944 l +384 944 l +384 928 l +368 928 l +cs +320 912 m +320 928 l +336 928 l +336 912 l +320 912 l +fl +bl +320 912 m +320 928 l +336 928 l +336 912 l +320 912 l +cs +336 912 m +336 928 l +352 928 l +352 912 l +336 912 l +fl +bl +336 912 m +336 928 l +352 928 l +352 912 l +336 912 l +cs +bl +320 896 m +320 912 l +336 912 l +336 896 l +320 896 l +cs +bl +hf 8.0 sf +323.2 897.6 m (16) show +336 896 m +336 912 l +352 912 l +352 896 l +336 896 l +fl +bl +336 896 m +336 912 l +352 912 l +352 896 l +336 896 l +cs +352 912 m +352 928 l +368 928 l +368 912 l +352 912 l +fl +bl +352 912 m +352 928 l +368 928 l +368 912 l +352 912 l +cs +368 912 m +368 928 l +384 928 l +384 912 l +368 912 l +fl +bl +368 912 m +368 928 l +384 928 l +384 912 l +368 912 l +cs +bl +352 896 m +352 912 l +368 912 l +368 896 l +352 896 l +cs +bl +hf 8.0 sf +355.2 897.6 m (16) show +368 896 m +368 912 l +384 912 l +384 896 l +368 896 l +fl +bl +368 896 m +368 912 l +384 912 l +384 896 l +368 896 l +cs +384 1008 m +384 1024 l +400 1024 l +400 1008 l +384 1008 l +fl +bl +384 1008 m +384 1024 l +400 1024 l +400 1008 l +384 1008 l +cs +400 1008 m +400 1024 l +416 1024 l +416 1008 l +400 1008 l +fl +bl +400 1008 m +400 1024 l +416 1024 l +416 1008 l +400 1008 l +cs +384 992 m +384 1008 l +400 1008 l +400 992 l +384 992 l +fl +bl +384 992 m +384 1008 l +400 1008 l +400 992 l +384 992 l +cs +400 992 m +400 1008 l +416 1008 l +416 992 l +400 992 l +fl +bl +400 992 m +400 1008 l +416 1008 l +416 992 l +400 992 l +cs +416 992 m +416 1024 l +448 1024 l +448 992 l +416 992 l +fl +bl +416 992 m +416 1024 l +448 1024 l +448 992 l +416 992 l +cs +384 976 m +384 992 l +400 992 l +400 976 l +384 976 l +fl +bl +384 976 m +384 992 l +400 992 l +400 976 l +384 976 l +cs +400 976 m +400 992 l +416 992 l +416 976 l +400 976 l +fl +bl +400 976 m +400 992 l +416 992 l +416 976 l +400 976 l +cs +bl +384 960 m +384 976 l +400 976 l +400 960 l +384 960 l +cs +bl +hf 8.0 sf +387.2 961.6 m (16) show +400 960 m +400 976 l +416 976 l +416 960 l +400 960 l +fl +bl +400 960 m +400 976 l +416 976 l +416 960 l +400 960 l +cs +416 976 m +416 992 l +432 992 l +432 976 l +416 976 l +fl +bl +416 976 m +416 992 l +432 992 l +432 976 l +416 976 l +cs +432 976 m +432 992 l +448 992 l +448 976 l +432 976 l +fl +bl +432 976 m +432 992 l +448 992 l +448 976 l +432 976 l +cs +416 960 m +416 976 l +432 976 l +432 960 l +416 960 l +fl +bl +416 960 m +416 976 l +432 976 l +432 960 l +416 960 l +cs +432 960 m +432 976 l +448 976 l +448 960 l +432 960 l +fl +bl +432 960 m +432 976 l +448 976 l +448 960 l +432 960 l +cs +448 992 m +448 1024 l +480 1024 l +480 992 l +448 992 l +fl +bl +448 992 m +448 1024 l +480 1024 l +480 992 l +448 992 l +cs +480 992 m +480 1024 l +512 1024 l +512 992 l +480 992 l +fl +bl +480 992 m +480 1024 l +512 1024 l +512 992 l +480 992 l +cs +448 960 m +448 992 l +480 992 l +480 960 l +448 960 l +fl +bl +448 960 m +448 992 l +480 992 l +480 960 l +448 960 l +cs +480 960 m +480 992 l +512 992 l +512 960 l +480 960 l +fl +bl +480 960 m +480 992 l +512 992 l +512 960 l +480 960 l +cs +bl +384 944 m +384 960 l +400 960 l +400 944 l +384 944 l +cs +bl +hf 8.0 sf +387.2 945.6 m (16) show +400 944 m +400 960 l +416 960 l +416 944 l +400 944 l +fl +bl +400 944 m +400 960 l +416 960 l +416 944 l +400 944 l +cs +bl +384 928 m +384 944 l +400 944 l +400 928 l +384 928 l +cs +bl +hf 8.0 sf +387.2 929.6 m (16) show +bl +400 928 m +400 944 l +416 944 l +416 928 l +400 928 l +cs +bl +hf 8.0 sf +403.2 929.6 m (16) show +416 928 m +416 960 l +448 960 l +448 928 l +416 928 l +fl +bl +416 928 m +416 960 l +448 960 l +448 928 l +416 928 l +cs +bl +384 912 m +384 928 l +400 928 l +400 912 l +384 912 l +cs +bl +hf 8.0 sf +387.2 913.6 m (16) show +bl +400 912 m +400 928 l +416 928 l +416 912 l +400 912 l +cs +bl +hf 8.0 sf +403.2 913.6 m (16) show +bl +384 896 m +384 912 l +400 912 l +400 896 l +384 896 l +cs +bl +hf 8.0 sf +387.2 897.6 m (16) show +bl +400 896 m +400 912 l +416 912 l +416 896 l +400 896 l +cs +bl +hf 8.0 sf +403.2 897.6 m (16) show +bl +416 912 m +416 928 l +432 928 l +432 912 l +416 912 l +cs +bl +hf 8.0 sf +419.2 913.6 m (16) show +432 912 m +432 928 l +448 928 l +448 912 l +432 912 l +fl +bl +432 912 m +432 928 l +448 928 l +448 912 l +432 912 l +cs +bl +416 896 m +416 912 l +432 912 l +432 896 l +416 896 l +cs +bl +hf 8.0 sf +419.2 897.6 m (16) show +bl +432 896 m +432 912 l +448 912 l +448 896 l +432 896 l +cs +bl +hf 8.0 sf +435.2 897.6 m (16) show +448 944 m +448 960 l +464 960 l +464 944 l +448 944 l +fl +bl +448 944 m +448 960 l +464 960 l +464 944 l +448 944 l +cs +464 944 m +464 960 l +480 960 l +480 944 l +464 944 l +fl +bl +464 944 m +464 960 l +480 960 l +480 944 l +464 944 l +cs +448 928 m +448 944 l +464 944 l +464 928 l +448 928 l +fl +bl +448 928 m +448 944 l +464 944 l +464 928 l +448 928 l +cs +464 928 m +464 944 l +480 944 l +480 928 l +464 928 l +fl +bl +464 928 m +464 944 l +480 944 l +480 928 l +464 928 l +cs +480 928 m +480 960 l +512 960 l +512 928 l +480 928 l +fl +bl +480 928 m +480 960 l +512 960 l +512 928 l +480 928 l +cs +448 912 m +448 928 l +464 928 l +464 912 l +448 912 l +fl +bl +448 912 m +448 928 l +464 928 l +464 912 l +448 912 l +cs +464 912 m +464 928 l +480 928 l +480 912 l +464 912 l +fl +bl +464 912 m +464 928 l +480 928 l +480 912 l +464 912 l +cs +bl +448 896 m +448 912 l +464 912 l +464 896 l +448 896 l +cs +bl +hf 8.0 sf +451.2 897.6 m (16) show +464 896 m +464 912 l +480 912 l +480 896 l +464 896 l +fl +bl +464 896 m +464 912 l +480 912 l +480 896 l +464 896 l +cs +480 912 m +480 928 l +496 928 l +496 912 l +480 912 l +fl +bl +480 912 m +480 928 l +496 928 l +496 912 l +480 912 l +cs +496 912 m +496 928 l +512 928 l +512 912 l +496 912 l +fl +bl +496 912 m +496 928 l +512 928 l +512 912 l +496 912 l +cs +480 896 m +480 912 l +496 912 l +496 896 l +480 896 l +fl +bl +480 896 m +480 912 l +496 912 l +496 896 l +480 896 l +cs +496 896 m +496 912 l +512 912 l +512 896 l +496 896 l +fl +bl +496 896 m +496 912 l +512 912 l +512 896 l +496 896 l +cs +256 880 m +256 896 l +272 896 l +272 880 l +256 880 l +fl +bl +256 880 m +256 896 l +272 896 l +272 880 l +256 880 l +cs +272 880 m +272 896 l +288 896 l +288 880 l +272 880 l +fl +bl +272 880 m +272 896 l +288 896 l +288 880 l +272 880 l +cs +256 864 m +256 880 l +272 880 l +272 864 l +256 864 l +fl +bl +256 864 m +256 880 l +272 880 l +272 864 l +256 864 l +cs +272 864 m +272 880 l +288 880 l +288 864 l +272 864 l +fl +bl +272 864 m +272 880 l +288 880 l +288 864 l +272 864 l +cs +288 880 m +288 896 l +304 896 l +304 880 l +288 880 l +fl +bl +288 880 m +288 896 l +304 896 l +304 880 l +288 880 l +cs +304 880 m +304 896 l +320 896 l +320 880 l +304 880 l +fl +bl +304 880 m +304 896 l +320 896 l +320 880 l +304 880 l +cs +bl +288 864 m +288 880 l +304 880 l +304 864 l +288 864 l +cs +bl +hf 8.0 sf +291.2 865.6 m (16) show +304 864 m +304 880 l +320 880 l +320 864 l +304 864 l +fl +bl +304 864 m +304 880 l +320 880 l +320 864 l +304 864 l +cs +256 832 m +256 864 l +288 864 l +288 832 l +256 832 l +fl +bl +256 832 m +256 864 l +288 864 l +288 832 l +256 832 l +cs +288 848 m +288 864 l +304 864 l +304 848 l +288 848 l +fl +bl +288 848 m +288 864 l +304 864 l +304 848 l +288 848 l +cs +304 848 m +304 864 l +320 864 l +320 848 l +304 848 l +fl +bl +304 848 m +304 864 l +320 864 l +320 848 l +304 848 l +cs +288 832 m +288 848 l +304 848 l +304 832 l +288 832 l +fl +bl +288 832 m +288 848 l +304 848 l +304 832 l +288 832 l +cs +304 832 m +304 848 l +320 848 l +320 832 l +304 832 l +fl +bl +304 832 m +304 848 l +320 848 l +320 832 l +304 832 l +cs +320 864 m +320 896 l +352 896 l +352 864 l +320 864 l +fl +bl +320 864 m +320 896 l +352 896 l +352 864 l +320 864 l +cs +352 864 m +352 896 l +384 896 l +384 864 l +352 864 l +fl +bl +352 864 m +352 896 l +384 896 l +384 864 l +352 864 l +cs +320 832 m +320 864 l +352 864 l +352 832 l +320 832 l +fl +bl +320 832 m +320 864 l +352 864 l +352 832 l +320 832 l +cs +352 832 m +352 864 l +384 864 l +384 832 l +352 832 l +fl +bl +352 832 m +352 864 l +384 864 l +384 832 l +352 832 l +cs +bl +256 816 m +256 832 l +272 832 l +272 816 l +256 816 l +cs +bl +hf 8.0 sf +259.2 817.6 m (16) show +272 816 m +272 832 l +288 832 l +288 816 l +272 816 l +fl +bl +272 816 m +272 832 l +288 832 l +288 816 l +272 816 l +cs +bl +256 800 m +256 816 l +272 816 l +272 800 l +256 800 l +cs +bl +hf 8.0 sf +259.2 801.6 m (16) show +bl +272 800 m +272 816 l +288 816 l +288 800 l +272 800 l +cs +bl +hf 8.0 sf +275.2 801.6 m (16) show +bl +288 816 m +288 832 l +304 832 l +304 816 l +288 816 l +cs +bl +hf 8.0 sf +291.2 817.6 m (16) show +bl +304 816 m +304 832 l +320 832 l +320 816 l +304 816 l +cs +bl +hf 8.0 sf +307.2 817.6 m (16) show +bl +288 800 m +288 816 l +304 816 l +304 800 l +288 800 l +cs +bl +hf 8.0 sf +291.2 801.6 m (16) show +bl +304 800 m +304 816 l +320 816 l +320 800 l +304 800 l +cs +bl +hf 8.0 sf +307.2 801.6 m (16) show +256 768 m +256 800 l +288 800 l +288 768 l +256 768 l +fl +bl +256 768 m +256 800 l +288 800 l +288 768 l +256 768 l +cs +bl +288 784 m +288 800 l +304 800 l +304 784 l +288 784 l +cs +bl +hf 8.0 sf +291.2 785.6 m (16) show +304 784 m +304 800 l +320 800 l +320 784 l +304 784 l +fl +bl +304 784 m +304 800 l +320 800 l +320 784 l +304 784 l +cs +bl +288 768 m +288 784 l +304 784 l +304 768 l +288 768 l +cs +bl +hf 8.0 sf +291.2 769.6 m (16) show +bl +304 768 m +304 784 l +320 784 l +320 768 l +304 768 l +cs +bl +hf 8.0 sf +307.2 769.6 m (16) show +320 816 m +320 832 l +336 832 l +336 816 l +320 816 l +fl +bl +320 816 m +320 832 l +336 832 l +336 816 l +320 816 l +cs +336 816 m +336 832 l +352 832 l +352 816 l +336 816 l +fl +bl +336 816 m +336 832 l +352 832 l +352 816 l +336 816 l +cs +320 800 m +320 816 l +336 816 l +336 800 l +320 800 l +fl +bl +320 800 m +320 816 l +336 816 l +336 800 l +320 800 l +cs +336 800 m +336 816 l +352 816 l +352 800 l +336 800 l +fl +bl +336 800 m +336 816 l +352 816 l +352 800 l +336 800 l +cs +352 816 m +352 832 l +368 832 l +368 816 l +352 816 l +fl +bl +352 816 m +352 832 l +368 832 l +368 816 l +352 816 l +cs +368 816 m +368 832 l +384 832 l +384 816 l +368 816 l +fl +bl +368 816 m +368 832 l +384 832 l +384 816 l +368 816 l +cs +bl +352 800 m +352 816 l +368 816 l +368 800 l +352 800 l +cs +bl +hf 8.0 sf +355.2 801.6 m (16) show +368 800 m +368 816 l +384 816 l +384 800 l +368 800 l +fl +bl +368 800 m +368 816 l +384 816 l +384 800 l +368 800 l +cs +320 768 m +320 800 l +352 800 l +352 768 l +320 768 l +fl +bl +320 768 m +320 800 l +352 800 l +352 768 l +320 768 l +cs +352 784 m +352 800 l +368 800 l +368 784 l +352 784 l +fl +bl +352 784 m +352 800 l +368 800 l +368 784 l +352 784 l +cs +368 784 m +368 800 l +384 800 l +384 784 l +368 784 l +fl +bl +368 784 m +368 800 l +384 800 l +384 784 l +368 784 l +cs +352 768 m +352 784 l +368 784 l +368 768 l +352 768 l +fl +bl +352 768 m +352 784 l +368 784 l +368 768 l +352 768 l +cs +368 768 m +368 784 l +384 784 l +384 768 l +368 768 l +fl +bl +368 768 m +368 784 l +384 784 l +384 768 l +368 768 l +cs +384 880 m +384 896 l +400 896 l +400 880 l +384 880 l +fl +bl +384 880 m +384 896 l +400 896 l +400 880 l +384 880 l +cs +400 880 m +400 896 l +416 896 l +416 880 l +400 880 l +fl +bl +400 880 m +400 896 l +416 896 l +416 880 l +400 880 l +cs +bl +384 864 m +384 880 l +400 880 l +400 864 l +384 864 l +cs +bl +hf 8.0 sf +387.2 865.6 m (16) show +400 864 m +400 880 l +416 880 l +416 864 l +400 864 l +fl +bl +400 864 m +400 880 l +416 880 l +416 864 l +400 864 l +cs +416 880 m +416 896 l +432 896 l +432 880 l +416 880 l +fl +bl +416 880 m +416 896 l +432 896 l +432 880 l +416 880 l +cs +432 880 m +432 896 l +448 896 l +448 880 l +432 880 l +fl +bl +432 880 m +432 896 l +448 896 l +448 880 l +432 880 l +cs +bl +416 864 m +416 880 l +432 880 l +432 864 l +416 864 l +cs +bl +hf 8.0 sf +419.2 865.6 m (16) show +432 864 m +432 880 l +448 880 l +448 864 l +432 864 l +fl +bl +432 864 m +432 880 l +448 880 l +448 864 l +432 864 l +cs +384 848 m +384 864 l +400 864 l +400 848 l +384 848 l +fl +bl +384 848 m +384 864 l +400 864 l +400 848 l +384 848 l +cs +400 848 m +400 864 l +416 864 l +416 848 l +400 848 l +fl +bl +400 848 m +400 864 l +416 864 l +416 848 l +400 848 l +cs +bl +384 832 m +384 848 l +400 848 l +400 832 l +384 832 l +cs +bl +hf 8.0 sf +387.2 833.6 m (16) show +400 832 m +400 848 l +416 848 l +416 832 l +400 832 l +fl +bl +400 832 m +400 848 l +416 848 l +416 832 l +400 832 l +cs +416 848 m +416 864 l +432 864 l +432 848 l +416 848 l +fl +bl +416 848 m +416 864 l +432 864 l +432 848 l +416 848 l +cs +432 848 m +432 864 l +448 864 l +448 848 l +432 848 l +fl +bl +432 848 m +432 864 l +448 864 l +448 848 l +432 848 l +cs +bl +416 832 m +416 848 l +432 848 l +432 832 l +416 832 l +cs +bl +hf 8.0 sf +419.2 833.6 m (16) show +432 832 m +432 848 l +448 848 l +448 832 l +432 832 l +fl +bl +432 832 m +432 848 l +448 848 l +448 832 l +432 832 l +cs +448 864 m +448 896 l +480 896 l +480 864 l +448 864 l +fl +bl +448 864 m +448 896 l +480 896 l +480 864 l +448 864 l +cs +480 864 m +480 896 l +512 896 l +512 864 l +480 864 l +fl +bl +480 864 m +480 896 l +512 896 l +512 864 l +480 864 l +cs +448 832 m +448 864 l +480 864 l +480 832 l +448 832 l +fl +bl +448 832 m +448 864 l +480 864 l +480 832 l +448 832 l +cs +480 832 m +480 864 l +512 864 l +512 832 l +480 832 l +fl +bl +480 832 m +480 864 l +512 864 l +512 832 l +480 832 l +cs +bl +384 816 m +384 832 l +400 832 l +400 816 l +384 816 l +cs +bl +hf 8.0 sf +387.2 817.6 m (16) show +bl +400 816 m +400 832 l +416 832 l +416 816 l +400 816 l +cs +bl +hf 8.0 sf +403.2 817.6 m (16) show +bl +384 800 m +384 816 l +400 816 l +400 800 l +384 800 l +cs +bl +hf 8.0 sf +387.2 801.6 m (16) show +bl +400 800 m +400 816 l +416 816 l +416 800 l +400 800 l +cs +bl +hf 8.0 sf +403.2 801.6 m (16) show +bl +416 816 m +416 832 l +432 832 l +432 816 l +416 816 l +cs +bl +hf 8.0 sf +419.2 817.6 m (16) show +bl +432 816 m +432 832 l +448 832 l +448 816 l +432 816 l +cs +bl +hf 8.0 sf +435.2 817.6 m (16) show +bl +416 800 m +416 816 l +432 816 l +432 800 l +416 800 l +cs +bl +hf 8.0 sf +419.2 801.6 m (16) show +bl +432 800 m +432 816 l +448 816 l +448 800 l +432 800 l +cs +bl +hf 8.0 sf +435.2 801.6 m (16) show +bl +384 784 m +384 800 l +400 800 l +400 784 l +384 784 l +cs +bl +hf 8.0 sf +387.2 785.6 m (16) show +bl +400 784 m +400 800 l +416 800 l +416 784 l +400 784 l +cs +bl +hf 8.0 sf +403.2 785.6 m (16) show +bl +384 768 m +384 784 l +400 784 l +400 768 l +384 768 l +cs +bl +hf 8.0 sf +387.2 769.6 m (16) show +bl +400 768 m +400 784 l +416 784 l +416 768 l +400 768 l +cs +bl +hf 8.0 sf +403.2 769.6 m (16) show +bl +416 784 m +416 800 l +432 800 l +432 784 l +416 784 l +cs +bl +hf 8.0 sf +419.2 785.6 m (16) show +bl +432 784 m +432 800 l +448 800 l +448 784 l +432 784 l +cs +bl +hf 8.0 sf +435.2 785.6 m (16) show +bl +416 768 m +416 784 l +432 784 l +432 768 l +416 768 l +cs +bl +hf 8.0 sf +419.2 769.6 m (16) show +bl +432 768 m +432 784 l +448 784 l +448 768 l +432 768 l +cs +bl +hf 8.0 sf +435.2 769.6 m (16) show +448 816 m +448 832 l +464 832 l +464 816 l +448 816 l +fl +bl +448 816 m +448 832 l +464 832 l +464 816 l +448 816 l +cs +464 816 m +464 832 l +480 832 l +480 816 l +464 816 l +fl +bl +464 816 m +464 832 l +480 832 l +480 816 l +464 816 l +cs +bl +448 800 m +448 816 l +464 816 l +464 800 l +448 800 l +cs +bl +hf 8.0 sf +451.2 801.6 m (16) show +464 800 m +464 816 l +480 816 l +480 800 l +464 800 l +fl +bl +464 800 m +464 816 l +480 816 l +480 800 l +464 800 l +cs +480 816 m +480 832 l +496 832 l +496 816 l +480 816 l +fl +bl +480 816 m +480 832 l +496 832 l +496 816 l +480 816 l +cs +496 816 m +496 832 l +512 832 l +512 816 l +496 816 l +fl +bl +496 816 m +496 832 l +512 832 l +512 816 l +496 816 l +cs +bl +480 800 m +480 816 l +496 816 l +496 800 l +480 800 l +cs +bl +hf 8.0 sf +483.2 801.6 m (16) show +496 800 m +496 816 l +512 816 l +512 800 l +496 800 l +fl +bl +496 800 m +496 816 l +512 816 l +512 800 l +496 800 l +cs +448 784 m +448 800 l +464 800 l +464 784 l +448 784 l +fl +bl +448 784 m +448 800 l +464 800 l +464 784 l +448 784 l +cs +464 784 m +464 800 l +480 800 l +480 784 l +464 784 l +fl +bl +464 784 m +464 800 l +480 800 l +480 784 l +464 784 l +cs +bl +448 768 m +448 784 l +464 784 l +464 768 l +448 768 l +cs +bl +hf 8.0 sf +451.2 769.6 m (16) show +464 768 m +464 784 l +480 784 l +480 768 l +464 768 l +fl +bl +464 768 m +464 784 l +480 784 l +480 768 l +464 768 l +cs +480 784 m +480 800 l +496 800 l +496 784 l +480 784 l +fl +bl +480 784 m +480 800 l +496 800 l +496 784 l +480 784 l +cs +496 784 m +496 800 l +512 800 l +512 784 l +496 784 l +fl +bl +496 784 m +496 800 l +512 800 l +512 784 l +496 784 l +cs +bl +480 768 m +480 784 l +496 784 l +496 768 l +480 768 l +cs +bl +hf 8.0 sf +483.2 769.6 m (16) show +496 768 m +496 784 l +512 784 l +512 768 l +496 768 l +fl +bl +496 768 m +496 784 l +512 784 l +512 768 l +496 768 l +cs +0 752 m +0 768 l +16 768 l +16 752 l +0 752 l +fl +bl +0 752 m +0 768 l +16 768 l +16 752 l +0 752 l +cs +bl +16 752 m +16 768 l +32 768 l +32 752 l +16 752 l +cs +bl +hf 8.0 sf +19.2 753.6 m (16) show +0 736 m +0 752 l +16 752 l +16 736 l +0 736 l +fl +bl +0 736 m +0 752 l +16 752 l +16 736 l +0 736 l +cs +16 736 m +16 752 l +32 752 l +32 736 l +16 736 l +fl +bl +16 736 m +16 752 l +32 752 l +32 736 l +16 736 l +cs +32 752 m +32 768 l +48 768 l +48 752 l +32 752 l +fl +bl +32 752 m +32 768 l +48 768 l +48 752 l +32 752 l +cs +bl +48 752 m +48 768 l +64 768 l +64 752 l +48 752 l +cs +bl +hf 8.0 sf +51.2 753.6 m (16) show +32 736 m +32 752 l +48 752 l +48 736 l +32 736 l +fl +bl +32 736 m +32 752 l +48 752 l +48 736 l +32 736 l +cs +48 736 m +48 752 l +64 752 l +64 736 l +48 736 l +fl +bl +48 736 m +48 752 l +64 752 l +64 736 l +48 736 l +cs +0 720 m +0 736 l +16 736 l +16 720 l +0 720 l +fl +bl +0 720 m +0 736 l +16 736 l +16 720 l +0 720 l +cs +bl +16 720 m +16 736 l +32 736 l +32 720 l +16 720 l +cs +bl +hf 8.0 sf +19.2 721.6 m (16) show +0 704 m +0 720 l +16 720 l +16 704 l +0 704 l +fl +bl +0 704 m +0 720 l +16 720 l +16 704 l +0 704 l +cs +16 704 m +16 720 l +32 720 l +32 704 l +16 704 l +fl +bl +16 704 m +16 720 l +32 720 l +32 704 l +16 704 l +cs +32 720 m +32 736 l +48 736 l +48 720 l +32 720 l +fl +bl +32 720 m +32 736 l +48 736 l +48 720 l +32 720 l +cs +bl +48 720 m +48 736 l +64 736 l +64 720 l +48 720 l +cs +bl +hf 8.0 sf +51.2 721.6 m (16) show +32 704 m +32 720 l +48 720 l +48 704 l +32 704 l +fl +bl +32 704 m +32 720 l +48 720 l +48 704 l +32 704 l +cs +48 704 m +48 720 l +64 720 l +64 704 l +48 704 l +fl +bl +48 704 m +48 720 l +64 720 l +64 704 l +48 704 l +cs +bl +64 752 m +64 768 l +80 768 l +80 752 l +64 752 l +cs +bl +hf 8.0 sf +67.2 753.6 m (16) show +bl +80 752 m +80 768 l +96 768 l +96 752 l +80 752 l +cs +bl +hf 8.0 sf +83.2 753.6 m (16) show +bl +64 736 m +64 752 l +80 752 l +80 736 l +64 736 l +cs +bl +hf 8.0 sf +67.2 737.6 m (16) show +bl +80 736 m +80 752 l +96 752 l +96 736 l +80 736 l +cs +bl +hf 8.0 sf +83.2 737.6 m (16) show +bl +96 752 m +96 768 l +112 768 l +112 752 l +96 752 l +cs +bl +hf 8.0 sf +99.2 753.6 m (16) show +bl +112 752 m +112 768 l +128 768 l +128 752 l +112 752 l +cs +bl +hf 8.0 sf +115.2 753.6 m (16) show +bl +96 736 m +96 752 l +112 752 l +112 736 l +96 736 l +cs +bl +hf 8.0 sf +99.2 737.6 m (16) show +bl +112 736 m +112 752 l +128 752 l +128 736 l +112 736 l +cs +bl +hf 8.0 sf +115.2 737.6 m (16) show +bl +64 720 m +64 736 l +80 736 l +80 720 l +64 720 l +cs +bl +hf 8.0 sf +67.2 721.6 m (16) show +bl +80 720 m +80 736 l +96 736 l +96 720 l +80 720 l +cs +bl +hf 8.0 sf +83.2 721.6 m (16) show +bl +64 704 m +64 720 l +80 720 l +80 704 l +64 704 l +cs +bl +hf 8.0 sf +67.2 705.6 m (16) show +bl +80 704 m +80 720 l +96 720 l +96 704 l +80 704 l +cs +bl +hf 8.0 sf +83.2 705.6 m (16) show +bl +96 720 m +96 736 l +112 736 l +112 720 l +96 720 l +cs +bl +hf 8.0 sf +99.2 721.6 m (16) show +bl +112 720 m +112 736 l +128 736 l +128 720 l +112 720 l +cs +bl +hf 8.0 sf +115.2 721.6 m (16) show +bl +96 704 m +96 720 l +112 720 l +112 704 l +96 704 l +cs +bl +hf 8.0 sf +99.2 705.6 m (16) show +bl +112 704 m +112 720 l +128 720 l +128 704 l +112 704 l +cs +bl +hf 8.0 sf +115.2 705.6 m (16) show +0 672 m +0 704 l +32 704 l +32 672 l +0 672 l +fl +bl +0 672 m +0 704 l +32 704 l +32 672 l +0 672 l +cs +32 672 m +32 704 l +64 704 l +64 672 l +32 672 l +fl +bl +32 672 m +32 704 l +64 704 l +64 672 l +32 672 l +cs +0 640 m +0 672 l +32 672 l +32 640 l +0 640 l +fl +bl +0 640 m +0 672 l +32 672 l +32 640 l +0 640 l +cs +32 640 m +32 672 l +64 672 l +64 640 l +32 640 l +fl +bl +32 640 m +32 672 l +64 672 l +64 640 l +32 640 l +cs +64 688 m +64 704 l +80 704 l +80 688 l +64 688 l +fl +bl +64 688 m +64 704 l +80 704 l +80 688 l +64 688 l +cs +bl +80 688 m +80 704 l +96 704 l +96 688 l +80 688 l +cs +bl +hf 8.0 sf +83.2 689.6 m (16) show +64 672 m +64 688 l +80 688 l +80 672 l +64 672 l +fl +bl +64 672 m +64 688 l +80 688 l +80 672 l +64 672 l +cs +80 672 m +80 688 l +96 688 l +96 672 l +80 672 l +fl +bl +80 672 m +80 688 l +96 688 l +96 672 l +80 672 l +cs +96 688 m +96 704 l +112 704 l +112 688 l +96 688 l +fl +bl +96 688 m +96 704 l +112 704 l +112 688 l +96 688 l +cs +bl +112 688 m +112 704 l +128 704 l +128 688 l +112 688 l +cs +bl +hf 8.0 sf +115.2 689.6 m (16) show +96 672 m +96 688 l +112 688 l +112 672 l +96 672 l +fl +bl +96 672 m +96 688 l +112 688 l +112 672 l +96 672 l +cs +112 672 m +112 688 l +128 688 l +128 672 l +112 672 l +fl +bl +112 672 m +112 688 l +128 688 l +128 672 l +112 672 l +cs +64 656 m +64 672 l +80 672 l +80 656 l +64 656 l +fl +bl +64 656 m +64 672 l +80 672 l +80 656 l +64 656 l +cs +bl +80 656 m +80 672 l +96 672 l +96 656 l +80 656 l +cs +bl +hf 8.0 sf +83.2 657.6 m (16) show +64 640 m +64 656 l +80 656 l +80 640 l +64 640 l +fl +bl +64 640 m +64 656 l +80 656 l +80 640 l +64 640 l +cs +80 640 m +80 656 l +96 656 l +96 640 l +80 640 l +fl +bl +80 640 m +80 656 l +96 656 l +96 640 l +80 640 l +cs +96 656 m +96 672 l +112 672 l +112 656 l +96 656 l +fl +bl +96 656 m +96 672 l +112 672 l +112 656 l +96 656 l +cs +bl +112 656 m +112 672 l +128 672 l +128 656 l +112 656 l +cs +bl +hf 8.0 sf +115.2 657.6 m (16) show +96 640 m +96 656 l +112 656 l +112 640 l +96 640 l +fl +bl +96 640 m +96 656 l +112 656 l +112 640 l +96 640 l +cs +112 640 m +112 656 l +128 656 l +128 640 l +112 640 l +fl +bl +112 640 m +112 656 l +128 656 l +128 640 l +112 640 l +cs +128 752 m +128 768 l +144 768 l +144 752 l +128 752 l +fl +bl +128 752 m +128 768 l +144 768 l +144 752 l +128 752 l +cs +144 752 m +144 768 l +160 768 l +160 752 l +144 752 l +fl +bl +144 752 m +144 768 l +160 768 l +160 752 l +144 752 l +cs +128 736 m +128 752 l +144 752 l +144 736 l +128 736 l +fl +bl +128 736 m +128 752 l +144 752 l +144 736 l +128 736 l +cs +144 736 m +144 752 l +160 752 l +160 736 l +144 736 l +fl +bl +144 736 m +144 752 l +160 752 l +160 736 l +144 736 l +cs +160 736 m +160 768 l +192 768 l +192 736 l +160 736 l +fl +bl +160 736 m +160 768 l +192 768 l +192 736 l +160 736 l +cs +128 720 m +128 736 l +144 736 l +144 720 l +128 720 l +fl +bl +128 720 m +128 736 l +144 736 l +144 720 l +128 720 l +cs +bl +144 720 m +144 736 l +160 736 l +160 720 l +144 720 l +cs +bl +hf 8.0 sf +147.2 721.6 m (16) show +128 704 m +128 720 l +144 720 l +144 704 l +128 704 l +fl +bl +128 704 m +128 720 l +144 720 l +144 704 l +128 704 l +cs +144 704 m +144 720 l +160 720 l +160 704 l +144 704 l +fl +bl +144 704 m +144 720 l +160 720 l +160 704 l +144 704 l +cs +160 720 m +160 736 l +176 736 l +176 720 l +160 720 l +fl +bl +160 720 m +160 736 l +176 736 l +176 720 l +160 720 l +cs +176 720 m +176 736 l +192 736 l +192 720 l +176 720 l +fl +bl +176 720 m +176 736 l +192 736 l +192 720 l +176 720 l +cs +160 704 m +160 720 l +176 720 l +176 704 l +160 704 l +fl +bl +160 704 m +160 720 l +176 720 l +176 704 l +160 704 l +cs +176 704 m +176 720 l +192 720 l +192 704 l +176 704 l +fl +bl +176 704 m +176 720 l +192 720 l +192 704 l +176 704 l +cs +bl +192 752 m +192 768 l +208 768 l +208 752 l +192 752 l +cs +bl +hf 8.0 sf +195.2 753.6 m (16) show +bl +208 752 m +208 768 l +224 768 l +224 752 l +208 752 l +cs +bl +hf 8.0 sf +211.2 753.6 m (16) show +192 736 m +192 752 l +208 752 l +208 736 l +192 736 l +fl +bl +192 736 m +192 752 l +208 752 l +208 736 l +192 736 l +cs +bl +208 736 m +208 752 l +224 752 l +224 736 l +208 736 l +cs +bl +hf 8.0 sf +211.2 737.6 m (16) show +224 736 m +224 768 l +256 768 l +256 736 l +224 736 l +fl +bl +224 736 m +224 768 l +256 768 l +256 736 l +224 736 l +cs +bl +192 720 m +192 736 l +208 736 l +208 720 l +192 720 l +cs +bl +hf 8.0 sf +195.2 721.6 m (16) show +bl +208 720 m +208 736 l +224 736 l +224 720 l +208 720 l +cs +bl +hf 8.0 sf +211.2 721.6 m (16) show +bl +192 704 m +192 720 l +208 720 l +208 704 l +192 704 l +cs +bl +hf 8.0 sf +195.2 705.6 m (16) show +bl +208 704 m +208 720 l +224 720 l +224 704 l +208 704 l +cs +bl +hf 8.0 sf +211.2 705.6 m (16) show +bl +224 720 m +224 736 l +240 736 l +240 720 l +224 720 l +cs +bl +hf 8.0 sf +227.2 721.6 m (16) show +bl +240 720 m +240 736 l +256 736 l +256 720 l +240 720 l +cs +bl +hf 8.0 sf +243.2 721.6 m (16) show +224 704 m +224 720 l +240 720 l +240 704 l +224 704 l +fl +bl +224 704 m +224 720 l +240 720 l +240 704 l +224 704 l +cs +bl +240 704 m +240 720 l +256 720 l +256 704 l +240 704 l +cs +bl +hf 8.0 sf +243.2 705.6 m (16) show +128 672 m +128 704 l +160 704 l +160 672 l +128 672 l +fl +bl +128 672 m +128 704 l +160 704 l +160 672 l +128 672 l +cs +160 672 m +160 704 l +192 704 l +192 672 l +160 672 l +fl +bl +160 672 m +160 704 l +192 704 l +192 672 l +160 672 l +cs +128 640 m +128 672 l +160 672 l +160 640 l +128 640 l +fl +bl +128 640 m +128 672 l +160 672 l +160 640 l +128 640 l +cs +160 640 m +160 672 l +192 672 l +192 640 l +160 640 l +fl +bl +160 640 m +160 672 l +192 672 l +192 640 l +160 640 l +cs +192 688 m +192 704 l +208 704 l +208 688 l +192 688 l +fl +bl +192 688 m +192 704 l +208 704 l +208 688 l +192 688 l +cs +208 688 m +208 704 l +224 704 l +224 688 l +208 688 l +fl +bl +208 688 m +208 704 l +224 704 l +224 688 l +208 688 l +cs +192 672 m +192 688 l +208 688 l +208 672 l +192 672 l +fl +bl +192 672 m +192 688 l +208 688 l +208 672 l +192 672 l +cs +208 672 m +208 688 l +224 688 l +224 672 l +208 672 l +fl +bl +208 672 m +208 688 l +224 688 l +224 672 l +208 672 l +cs +224 672 m +224 704 l +256 704 l +256 672 l +224 672 l +fl +bl +224 672 m +224 704 l +256 704 l +256 672 l +224 672 l +cs +192 656 m +192 672 l +208 672 l +208 656 l +192 656 l +fl +bl +192 656 m +192 672 l +208 672 l +208 656 l +192 656 l +cs +bl +208 656 m +208 672 l +224 672 l +224 656 l +208 656 l +cs +bl +hf 8.0 sf +211.2 657.6 m (16) show +192 640 m +192 656 l +208 656 l +208 640 l +192 640 l +fl +bl +192 640 m +192 656 l +208 656 l +208 640 l +192 640 l +cs +208 640 m +208 656 l +224 656 l +224 640 l +208 640 l +fl +bl +208 640 m +208 656 l +224 656 l +224 640 l +208 640 l +cs +224 656 m +224 672 l +240 672 l +240 656 l +224 656 l +fl +bl +224 656 m +224 672 l +240 672 l +240 656 l +224 656 l +cs +240 656 m +240 672 l +256 672 l +256 656 l +240 656 l +fl +bl +240 656 m +240 672 l +256 672 l +256 656 l +240 656 l +cs +224 640 m +224 656 l +240 656 l +240 640 l +224 640 l +fl +bl +224 640 m +224 656 l +240 656 l +240 640 l +224 640 l +cs +240 640 m +240 656 l +256 656 l +256 640 l +240 640 l +fl +bl +240 640 m +240 656 l +256 656 l +256 640 l +240 640 l +cs +0 624 m +0 640 l +16 640 l +16 624 l +0 624 l +fl +bl +0 624 m +0 640 l +16 640 l +16 624 l +0 624 l +cs +16 624 m +16 640 l +32 640 l +32 624 l +16 624 l +fl +bl +16 624 m +16 640 l +32 640 l +32 624 l +16 624 l +cs +0 608 m +0 624 l +16 624 l +16 608 l +0 608 l +fl +bl +0 608 m +0 624 l +16 624 l +16 608 l +0 608 l +cs +16 608 m +16 624 l +32 624 l +32 608 l +16 608 l +fl +bl +16 608 m +16 624 l +32 624 l +32 608 l +16 608 l +cs +32 624 m +32 640 l +48 640 l +48 624 l +32 624 l +fl +bl +32 624 m +32 640 l +48 640 l +48 624 l +32 624 l +cs +bl +48 624 m +48 640 l +64 640 l +64 624 l +48 624 l +cs +bl +hf 8.0 sf +51.2 625.6 m (16) show +32 608 m +32 624 l +48 624 l +48 608 l +32 608 l +fl +bl +32 608 m +32 624 l +48 624 l +48 608 l +32 608 l +cs +48 608 m +48 624 l +64 624 l +64 608 l +48 608 l +fl +bl +48 608 m +48 624 l +64 624 l +64 608 l +48 608 l +cs +0 576 m +0 608 l +32 608 l +32 576 l +0 576 l +fl +bl +0 576 m +0 608 l +32 608 l +32 576 l +0 576 l +cs +32 592 m +32 608 l +48 608 l +48 592 l +32 592 l +fl +bl +32 592 m +32 608 l +48 608 l +48 592 l +32 592 l +cs +48 592 m +48 608 l +64 608 l +64 592 l +48 592 l +fl +bl +48 592 m +48 608 l +64 608 l +64 592 l +48 592 l +cs +32 576 m +32 592 l +48 592 l +48 576 l +32 576 l +fl +bl +32 576 m +32 592 l +48 592 l +48 576 l +32 576 l +cs +48 576 m +48 592 l +64 592 l +64 576 l +48 576 l +fl +bl +48 576 m +48 592 l +64 592 l +64 576 l +48 576 l +cs +bl +64 624 m +64 640 l +80 640 l +80 624 l +64 624 l +cs +bl +hf 8.0 sf +67.2 625.6 m (16) show +bl +80 624 m +80 640 l +96 640 l +96 624 l +80 624 l +cs +bl +hf 8.0 sf +83.2 625.6 m (16) show +64 608 m +64 624 l +80 624 l +80 608 l +64 608 l +fl +bl +64 608 m +64 624 l +80 624 l +80 608 l +64 608 l +cs +bl +80 608 m +80 624 l +96 624 l +96 608 l +80 608 l +cs +bl +hf 8.0 sf +83.2 609.6 m (16) show +bl +96 624 m +96 640 l +112 640 l +112 624 l +96 624 l +cs +bl +hf 8.0 sf +99.2 625.6 m (16) show +bl +112 624 m +112 640 l +128 640 l +128 624 l +112 624 l +cs +bl +hf 8.0 sf +115.2 625.6 m (16) show +bl +96 608 m +96 624 l +112 624 l +112 608 l +96 608 l +cs +bl +hf 8.0 sf +99.2 609.6 m (16) show +bl +112 608 m +112 624 l +128 624 l +128 608 l +112 608 l +cs +bl +hf 8.0 sf +115.2 609.6 m (16) show +64 576 m +64 608 l +96 608 l +96 576 l +64 576 l +fl +bl +64 576 m +64 608 l +96 608 l +96 576 l +64 576 l +cs +bl +96 592 m +96 608 l +112 608 l +112 592 l +96 592 l +cs +bl +hf 8.0 sf +99.2 593.6 m (16) show +bl +112 592 m +112 608 l +128 608 l +128 592 l +112 592 l +cs +bl +hf 8.0 sf +115.2 593.6 m (16) show +96 576 m +96 592 l +112 592 l +112 576 l +96 576 l +fl +bl +96 576 m +96 592 l +112 592 l +112 576 l +96 576 l +cs +bl +112 576 m +112 592 l +128 592 l +128 576 l +112 576 l +cs +bl +hf 8.0 sf +115.2 577.6 m (16) show +0 544 m +0 576 l +32 576 l +32 544 l +0 544 l +fl +bl +0 544 m +0 576 l +32 576 l +32 544 l +0 544 l +cs +32 544 m +32 576 l +64 576 l +64 544 l +32 544 l +fl +bl +32 544 m +32 576 l +64 576 l +64 544 l +32 544 l +cs +0 512 m +0 544 l +32 544 l +32 512 l +0 512 l +fl +bl +0 512 m +0 544 l +32 544 l +32 512 l +0 512 l +cs +32 512 m +32 544 l +64 544 l +64 512 l +32 512 l +fl +bl +32 512 m +32 544 l +64 544 l +64 512 l +32 512 l +cs +64 560 m +64 576 l +80 576 l +80 560 l +64 560 l +fl +bl +64 560 m +64 576 l +80 576 l +80 560 l +64 560 l +cs +80 560 m +80 576 l +96 576 l +96 560 l +80 560 l +fl +bl +80 560 m +80 576 l +96 576 l +96 560 l +80 560 l +cs +64 544 m +64 560 l +80 560 l +80 544 l +64 544 l +fl +bl +64 544 m +64 560 l +80 560 l +80 544 l +64 544 l +cs +80 544 m +80 560 l +96 560 l +96 544 l +80 544 l +fl +bl +80 544 m +80 560 l +96 560 l +96 544 l +80 544 l +cs +96 560 m +96 576 l +112 576 l +112 560 l +96 560 l +fl +bl +96 560 m +96 576 l +112 576 l +112 560 l +96 560 l +cs +bl +112 560 m +112 576 l +128 576 l +128 560 l +112 560 l +cs +bl +hf 8.0 sf +115.2 561.6 m (16) show +96 544 m +96 560 l +112 560 l +112 544 l +96 544 l +fl +bl +96 544 m +96 560 l +112 560 l +112 544 l +96 544 l +cs +112 544 m +112 560 l +128 560 l +128 544 l +112 544 l +fl +bl +112 544 m +112 560 l +128 560 l +128 544 l +112 544 l +cs +64 512 m +64 544 l +96 544 l +96 512 l +64 512 l +fl +bl +64 512 m +64 544 l +96 544 l +96 512 l +64 512 l +cs +96 528 m +96 544 l +112 544 l +112 528 l +96 528 l +fl +bl +96 528 m +96 544 l +112 544 l +112 528 l +96 528 l +cs +112 528 m +112 544 l +128 544 l +128 528 l +112 528 l +fl +bl +112 528 m +112 544 l +128 544 l +128 528 l +112 528 l +cs +96 512 m +96 528 l +112 528 l +112 512 l +96 512 l +fl +bl +96 512 m +96 528 l +112 528 l +112 512 l +96 512 l +cs +112 512 m +112 528 l +128 528 l +128 512 l +112 512 l +fl +bl +112 512 m +112 528 l +128 528 l +128 512 l +112 512 l +cs +128 624 m +128 640 l +144 640 l +144 624 l +128 624 l +fl +bl +128 624 m +128 640 l +144 640 l +144 624 l +128 624 l +cs +bl +144 624 m +144 640 l +160 640 l +160 624 l +144 624 l +cs +bl +hf 8.0 sf +147.2 625.6 m (16) show +128 608 m +128 624 l +144 624 l +144 608 l +128 608 l +fl +bl +128 608 m +128 624 l +144 624 l +144 608 l +128 608 l +cs +144 608 m +144 624 l +160 624 l +160 608 l +144 608 l +fl +bl +144 608 m +144 624 l +160 624 l +160 608 l +144 608 l +cs +160 624 m +160 640 l +176 640 l +176 624 l +160 624 l +fl +bl +160 624 m +160 640 l +176 640 l +176 624 l +160 624 l +cs +bl +176 624 m +176 640 l +192 640 l +192 624 l +176 624 l +cs +bl +hf 8.0 sf +179.2 625.6 m (16) show +160 608 m +160 624 l +176 624 l +176 608 l +160 608 l +fl +bl +160 608 m +160 624 l +176 624 l +176 608 l +160 608 l +cs +176 608 m +176 624 l +192 624 l +192 608 l +176 608 l +fl +bl +176 608 m +176 624 l +192 624 l +192 608 l +176 608 l +cs +128 592 m +128 608 l +144 608 l +144 592 l +128 592 l +fl +bl +128 592 m +128 608 l +144 608 l +144 592 l +128 592 l +cs +bl +144 592 m +144 608 l +160 608 l +160 592 l +144 592 l +cs +bl +hf 8.0 sf +147.2 593.6 m (16) show +128 576 m +128 592 l +144 592 l +144 576 l +128 576 l +fl +bl +128 576 m +128 592 l +144 592 l +144 576 l +128 576 l +cs +144 576 m +144 592 l +160 592 l +160 576 l +144 576 l +fl +bl +144 576 m +144 592 l +160 592 l +160 576 l +144 576 l +cs +160 592 m +160 608 l +176 608 l +176 592 l +160 592 l +fl +bl +160 592 m +160 608 l +176 608 l +176 592 l +160 592 l +cs +bl +176 592 m +176 608 l +192 608 l +192 592 l +176 592 l +cs +bl +hf 8.0 sf +179.2 593.6 m (16) show +160 576 m +160 592 l +176 592 l +176 576 l +160 576 l +fl +bl +160 576 m +160 592 l +176 592 l +176 576 l +160 576 l +cs +176 576 m +176 592 l +192 592 l +192 576 l +176 576 l +fl +bl +176 576 m +176 592 l +192 592 l +192 576 l +176 576 l +cs +bl +192 624 m +192 640 l +208 640 l +208 624 l +192 624 l +cs +bl +hf 8.0 sf +195.2 625.6 m (16) show +bl +208 624 m +208 640 l +224 640 l +224 624 l +208 624 l +cs +bl +hf 8.0 sf +211.2 625.6 m (16) show +bl +192 608 m +192 624 l +208 624 l +208 608 l +192 608 l +cs +bl +hf 8.0 sf +195.2 609.6 m (16) show +bl +208 608 m +208 624 l +224 624 l +224 608 l +208 608 l +cs +bl +hf 8.0 sf +211.2 609.6 m (16) show +bl +224 624 m +224 640 l +240 640 l +240 624 l +224 624 l +cs +bl +hf 8.0 sf +227.2 625.6 m (16) show +bl +240 624 m +240 640 l +256 640 l +256 624 l +240 624 l +cs +bl +hf 8.0 sf +243.2 625.6 m (16) show +bl +224 608 m +224 624 l +240 624 l +240 608 l +224 608 l +cs +bl +hf 8.0 sf +227.2 609.6 m (16) show +bl +240 608 m +240 624 l +256 624 l +256 608 l +240 608 l +cs +bl +hf 8.0 sf +243.2 609.6 m (16) show +bl +192 592 m +192 608 l +208 608 l +208 592 l +192 592 l +cs +bl +hf 8.0 sf +195.2 593.6 m (16) show +bl +208 592 m +208 608 l +224 608 l +224 592 l +208 592 l +cs +bl +hf 8.0 sf +211.2 593.6 m (16) show +bl +192 576 m +192 592 l +208 592 l +208 576 l +192 576 l +cs +bl +hf 8.0 sf +195.2 577.6 m (16) show +bl +208 576 m +208 592 l +224 592 l +224 576 l +208 576 l +cs +bl +hf 8.0 sf +211.2 577.6 m (16) show +bl +224 592 m +224 608 l +240 608 l +240 592 l +224 592 l +cs +bl +hf 8.0 sf +227.2 593.6 m (16) show +bl +240 592 m +240 608 l +256 608 l +256 592 l +240 592 l +cs +bl +hf 8.0 sf +243.2 593.6 m (16) show +bl +224 576 m +224 592 l +240 592 l +240 576 l +224 576 l +cs +bl +hf 8.0 sf +227.2 577.6 m (16) show +bl +240 576 m +240 592 l +256 592 l +256 576 l +240 576 l +cs +bl +hf 8.0 sf +243.2 577.6 m (16) show +128 544 m +128 576 l +160 576 l +160 544 l +128 544 l +fl +bl +128 544 m +128 576 l +160 576 l +160 544 l +128 544 l +cs +160 544 m +160 576 l +192 576 l +192 544 l +160 544 l +fl +bl +160 544 m +160 576 l +192 576 l +192 544 l +160 544 l +cs +128 512 m +128 544 l +160 544 l +160 512 l +128 512 l +fl +bl +128 512 m +128 544 l +160 544 l +160 512 l +128 512 l +cs +160 512 m +160 544 l +192 544 l +192 512 l +160 512 l +fl +bl +160 512 m +160 544 l +192 544 l +192 512 l +160 512 l +cs +192 560 m +192 576 l +208 576 l +208 560 l +192 560 l +fl +bl +192 560 m +192 576 l +208 576 l +208 560 l +192 560 l +cs +bl +208 560 m +208 576 l +224 576 l +224 560 l +208 560 l +cs +bl +hf 8.0 sf +211.2 561.6 m (16) show +192 544 m +192 560 l +208 560 l +208 544 l +192 544 l +fl +bl +192 544 m +192 560 l +208 560 l +208 544 l +192 544 l +cs +208 544 m +208 560 l +224 560 l +224 544 l +208 544 l +fl +bl +208 544 m +208 560 l +224 560 l +224 544 l +208 544 l +cs +224 560 m +224 576 l +240 576 l +240 560 l +224 560 l +fl +bl +224 560 m +224 576 l +240 576 l +240 560 l +224 560 l +cs +bl +240 560 m +240 576 l +256 576 l +256 560 l +240 560 l +cs +bl +hf 8.0 sf +243.2 561.6 m (16) show +224 544 m +224 560 l +240 560 l +240 544 l +224 544 l +fl +bl +224 544 m +224 560 l +240 560 l +240 544 l +224 544 l +cs +240 544 m +240 560 l +256 560 l +256 544 l +240 544 l +fl +bl +240 544 m +240 560 l +256 560 l +256 544 l +240 544 l +cs +192 528 m +192 544 l +208 544 l +208 528 l +192 528 l +fl +bl +192 528 m +192 544 l +208 544 l +208 528 l +192 528 l +cs +bl +208 528 m +208 544 l +224 544 l +224 528 l +208 528 l +cs +bl +hf 8.0 sf +211.2 529.6 m (16) show +192 512 m +192 528 l +208 528 l +208 512 l +192 512 l +fl +bl +192 512 m +192 528 l +208 528 l +208 512 l +192 512 l +cs +208 512 m +208 528 l +224 528 l +224 512 l +208 512 l +fl +bl +208 512 m +208 528 l +224 528 l +224 512 l +208 512 l +cs +224 528 m +224 544 l +240 544 l +240 528 l +224 528 l +fl +bl +224 528 m +224 544 l +240 544 l +240 528 l +224 528 l +cs +bl +240 528 m +240 544 l +256 544 l +256 528 l +240 528 l +cs +bl +hf 8.0 sf +243.2 529.6 m (16) show +224 512 m +224 528 l +240 528 l +240 512 l +224 512 l +fl +bl +224 512 m +224 528 l +240 528 l +240 512 l +224 512 l +cs +240 512 m +240 528 l +256 528 l +256 512 l +240 512 l +fl +bl +240 512 m +240 528 l +256 528 l +256 512 l +240 512 l +cs +bl +256 752 m +256 768 l +272 768 l +272 752 l +256 752 l +cs +bl +hf 8.0 sf +259.2 753.6 m (16) show +bl +272 752 m +272 768 l +288 768 l +288 752 l +272 752 l +cs +bl +hf 8.0 sf +275.2 753.6 m (16) show +bl +256 736 m +256 752 l +272 752 l +272 736 l +256 736 l +cs +bl +hf 8.0 sf +259.2 737.6 m (16) show +bl +272 736 m +272 752 l +288 752 l +288 736 l +272 736 l +cs +bl +hf 8.0 sf +275.2 737.6 m (16) show +bl +288 752 m +288 768 l +304 768 l +304 752 l +288 752 l +cs +bl +hf 8.0 sf +291.2 753.6 m (16) show +bl +304 752 m +304 768 l +320 768 l +320 752 l +304 752 l +cs +bl +hf 8.0 sf +307.2 753.6 m (16) show +bl +288 736 m +288 752 l +304 752 l +304 736 l +288 736 l +cs +bl +hf 8.0 sf +291.2 737.6 m (16) show +bl +304 736 m +304 752 l +320 752 l +320 736 l +304 736 l +cs +bl +hf 8.0 sf +307.2 737.6 m (16) show +bl +256 720 m +256 736 l +272 736 l +272 720 l +256 720 l +cs +bl +hf 8.0 sf +259.2 721.6 m (16) show +bl +272 720 m +272 736 l +288 736 l +288 720 l +272 720 l +cs +bl +hf 8.0 sf +275.2 721.6 m (16) show +bl +256 704 m +256 720 l +272 720 l +272 704 l +256 704 l +cs +bl +hf 8.0 sf +259.2 705.6 m (16) show +bl +272 704 m +272 720 l +288 720 l +288 704 l +272 704 l +cs +bl +hf 8.0 sf +275.2 705.6 m (16) show +bl +288 720 m +288 736 l +304 736 l +304 720 l +288 720 l +cs +bl +hf 8.0 sf +291.2 721.6 m (16) show +bl +304 720 m +304 736 l +320 736 l +320 720 l +304 720 l +cs +bl +hf 8.0 sf +307.2 721.6 m (16) show +bl +288 704 m +288 720 l +304 720 l +304 704 l +288 704 l +cs +bl +hf 8.0 sf +291.2 705.6 m (16) show +bl +304 704 m +304 720 l +320 720 l +320 704 l +304 704 l +cs +bl +hf 8.0 sf +307.2 705.6 m (16) show +bl +320 752 m +320 768 l +336 768 l +336 752 l +320 752 l +cs +bl +hf 8.0 sf +323.2 753.6 m (16) show +bl +336 752 m +336 768 l +352 768 l +352 752 l +336 752 l +cs +bl +hf 8.0 sf +339.2 753.6 m (16) show +bl +320 736 m +320 752 l +336 752 l +336 736 l +320 736 l +cs +bl +hf 8.0 sf +323.2 737.6 m (16) show +bl +336 736 m +336 752 l +352 752 l +352 736 l +336 736 l +cs +bl +hf 8.0 sf +339.2 737.6 m (16) show +bl +352 752 m +352 768 l +368 768 l +368 752 l +352 752 l +cs +bl +hf 8.0 sf +355.2 753.6 m (16) show +bl +368 752 m +368 768 l +384 768 l +384 752 l +368 752 l +cs +bl +hf 8.0 sf +371.2 753.6 m (16) show +bl +352 736 m +352 752 l +368 752 l +368 736 l +352 736 l +cs +bl +hf 8.0 sf +355.2 737.6 m (16) show +bl +368 736 m +368 752 l +384 752 l +384 736 l +368 736 l +cs +bl +hf 8.0 sf +371.2 737.6 m (16) show +bl +320 720 m +320 736 l +336 736 l +336 720 l +320 720 l +cs +bl +hf 8.0 sf +323.2 721.6 m (16) show +bl +336 720 m +336 736 l +352 736 l +352 720 l +336 720 l +cs +bl +hf 8.0 sf +339.2 721.6 m (16) show +bl +320 704 m +320 720 l +336 720 l +336 704 l +320 704 l +cs +bl +hf 8.0 sf +323.2 705.6 m (16) show +bl +336 704 m +336 720 l +352 720 l +352 704 l +336 704 l +cs +bl +hf 8.0 sf +339.2 705.6 m (16) show +bl +352 720 m +352 736 l +368 736 l +368 720 l +352 720 l +cs +bl +hf 8.0 sf +355.2 721.6 m (16) show +bl +368 720 m +368 736 l +384 736 l +384 720 l +368 720 l +cs +bl +hf 8.0 sf +371.2 721.6 m (16) show +bl +352 704 m +352 720 l +368 720 l +368 704 l +352 704 l +cs +bl +hf 8.0 sf +355.2 705.6 m (16) show +bl +368 704 m +368 720 l +384 720 l +384 704 l +368 704 l +cs +bl +hf 8.0 sf +371.2 705.6 m (16) show +bl +256 688 m +256 704 l +272 704 l +272 688 l +256 688 l +cs +bl +hf 8.0 sf +259.2 689.6 m (16) show +bl +272 688 m +272 704 l +288 704 l +288 688 l +272 688 l +cs +bl +hf 8.0 sf +275.2 689.6 m (16) show +bl +256 672 m +256 688 l +272 688 l +272 672 l +256 672 l +cs +bl +hf 8.0 sf +259.2 673.6 m (16) show +bl +272 672 m +272 688 l +288 688 l +288 672 l +272 672 l +cs +bl +hf 8.0 sf +275.2 673.6 m (16) show +bl +288 688 m +288 704 l +304 704 l +304 688 l +288 688 l +cs +bl +hf 8.0 sf +291.2 689.6 m (16) show +bl +304 688 m +304 704 l +320 704 l +320 688 l +304 688 l +cs +bl +hf 8.0 sf +307.2 689.6 m (16) show +bl +288 672 m +288 688 l +304 688 l +304 672 l +288 672 l +cs +bl +hf 8.0 sf +291.2 673.6 m (16) show +bl +304 672 m +304 688 l +320 688 l +320 672 l +304 672 l +cs +bl +hf 8.0 sf +307.2 673.6 m (16) show +bl +256 656 m +256 672 l +272 672 l +272 656 l +256 656 l +cs +bl +hf 8.0 sf +259.2 657.6 m (16) show +bl +272 656 m +272 672 l +288 672 l +288 656 l +272 656 l +cs +bl +hf 8.0 sf +275.2 657.6 m (16) show +bl +256 640 m +256 656 l +272 656 l +272 640 l +256 640 l +cs +bl +hf 8.0 sf +259.2 641.6 m (16) show +bl +272 640 m +272 656 l +288 656 l +288 640 l +272 640 l +cs +bl +hf 8.0 sf +275.2 641.6 m (16) show +bl +288 656 m +288 672 l +304 672 l +304 656 l +288 656 l +cs +bl +hf 8.0 sf +291.2 657.6 m (16) show +bl +304 656 m +304 672 l +320 672 l +320 656 l +304 656 l +cs +bl +hf 8.0 sf +307.2 657.6 m (16) show +bl +288 640 m +288 656 l +304 656 l +304 640 l +288 640 l +cs +bl +hf 8.0 sf +291.2 641.6 m (16) show +bl +304 640 m +304 656 l +320 656 l +320 640 l +304 640 l +cs +bl +hf 8.0 sf +307.2 641.6 m (16) show +bl +320 688 m +320 704 l +336 704 l +336 688 l +320 688 l +cs +bl +hf 8.0 sf +323.2 689.6 m (16) show +bl +336 688 m +336 704 l +352 704 l +352 688 l +336 688 l +cs +bl +hf 8.0 sf +339.2 689.6 m (16) show +bl +320 672 m +320 688 l +336 688 l +336 672 l +320 672 l +cs +bl +hf 8.0 sf +323.2 673.6 m (16) show +bl +336 672 m +336 688 l +352 688 l +352 672 l +336 672 l +cs +bl +hf 8.0 sf +339.2 673.6 m (16) show +bl +352 688 m +352 704 l +368 704 l +368 688 l +352 688 l +cs +bl +hf 8.0 sf +355.2 689.6 m (16) show +bl +368 688 m +368 704 l +384 704 l +384 688 l +368 688 l +cs +bl +hf 8.0 sf +371.2 689.6 m (16) show +bl +352 672 m +352 688 l +368 688 l +368 672 l +352 672 l +cs +bl +hf 8.0 sf +355.2 673.6 m (16) show +bl +368 672 m +368 688 l +384 688 l +384 672 l +368 672 l +cs +bl +hf 8.0 sf +371.2 673.6 m (16) show +bl +320 656 m +320 672 l +336 672 l +336 656 l +320 656 l +cs +bl +hf 8.0 sf +323.2 657.6 m (16) show +bl +336 656 m +336 672 l +352 672 l +352 656 l +336 656 l +cs +bl +hf 8.0 sf +339.2 657.6 m (16) show +bl +320 640 m +320 656 l +336 656 l +336 640 l +320 640 l +cs +bl +hf 8.0 sf +323.2 641.6 m (16) show +bl +336 640 m +336 656 l +352 656 l +352 640 l +336 640 l +cs +bl +hf 8.0 sf +339.2 641.6 m (16) show +bl +352 656 m +352 672 l +368 672 l +368 656 l +352 656 l +cs +bl +hf 8.0 sf +355.2 657.6 m (16) show +bl +368 656 m +368 672 l +384 672 l +384 656 l +368 656 l +cs +bl +hf 8.0 sf +371.2 657.6 m (16) show +bl +352 640 m +352 656 l +368 656 l +368 640 l +352 640 l +cs +bl +hf 8.0 sf +355.2 641.6 m (16) show +bl +368 640 m +368 656 l +384 656 l +384 640 l +368 640 l +cs +bl +hf 8.0 sf +371.2 641.6 m (16) show +bl +384 752 m +384 768 l +400 768 l +400 752 l +384 752 l +cs +bl +hf 8.0 sf +387.2 753.6 m (16) show +bl +400 752 m +400 768 l +416 768 l +416 752 l +400 752 l +cs +bl +hf 8.0 sf +403.2 753.6 m (16) show +bl +384 736 m +384 752 l +400 752 l +400 736 l +384 736 l +cs +bl +hf 8.0 sf +387.2 737.6 m (16) show +bl +400 736 m +400 752 l +416 752 l +416 736 l +400 736 l +cs +bl +hf 8.0 sf +403.2 737.6 m (16) show +416 736 m +416 768 l +448 768 l +448 736 l +416 736 l +fl +bl +416 736 m +416 768 l +448 768 l +448 736 l +416 736 l +cs +bl +384 720 m +384 736 l +400 736 l +400 720 l +384 720 l +cs +bl +hf 8.0 sf +387.2 721.6 m (16) show +bl +400 720 m +400 736 l +416 736 l +416 720 l +400 720 l +cs +bl +hf 8.0 sf +403.2 721.6 m (16) show +bl +384 704 m +384 720 l +400 720 l +400 704 l +384 704 l +cs +bl +hf 8.0 sf +387.2 705.6 m (16) show +bl +400 704 m +400 720 l +416 720 l +416 704 l +400 704 l +cs +bl +hf 8.0 sf +403.2 705.6 m (16) show +bl +416 720 m +416 736 l +432 736 l +432 720 l +416 720 l +cs +bl +hf 8.0 sf +419.2 721.6 m (16) show +bl +432 720 m +432 736 l +448 736 l +448 720 l +432 720 l +cs +bl +hf 8.0 sf +435.2 721.6 m (16) show +bl +416 704 m +416 720 l +432 720 l +432 704 l +416 704 l +cs +bl +hf 8.0 sf +419.2 705.6 m (16) show +bl +432 704 m +432 720 l +448 720 l +448 704 l +432 704 l +cs +bl +hf 8.0 sf +435.2 705.6 m (16) show +bl +448 752 m +448 768 l +464 768 l +464 752 l +448 752 l +cs +bl +hf 8.0 sf +451.2 753.6 m (16) show +464 752 m +464 768 l +480 768 l +480 752 l +464 752 l +fl +bl +464 752 m +464 768 l +480 768 l +480 752 l +464 752 l +cs +bl +448 736 m +448 752 l +464 752 l +464 736 l +448 736 l +cs +bl +hf 8.0 sf +451.2 737.6 m (16) show +bl +464 736 m +464 752 l +480 752 l +480 736 l +464 736 l +cs +bl +hf 8.0 sf +467.2 737.6 m (16) show +480 736 m +480 768 l +512 768 l +512 736 l +480 736 l +fl +bl +480 736 m +480 768 l +512 768 l +512 736 l +480 736 l +cs +bl +448 720 m +448 736 l +464 736 l +464 720 l +448 720 l +cs +bl +hf 8.0 sf +451.2 721.6 m (16) show +bl +464 720 m +464 736 l +480 736 l +480 720 l +464 720 l +cs +bl +hf 8.0 sf +467.2 721.6 m (16) show +bl +448 704 m +448 720 l +464 720 l +464 704 l +448 704 l +cs +bl +hf 8.0 sf +451.2 705.6 m (16) show +bl +464 704 m +464 720 l +480 720 l +480 704 l +464 704 l +cs +bl +hf 8.0 sf +467.2 705.6 m (16) show +bl +480 720 m +480 736 l +496 736 l +496 720 l +480 720 l +cs +bl +hf 8.0 sf +483.2 721.6 m (16) show +496 720 m +496 736 l +512 736 l +512 720 l +496 720 l +fl +bl +496 720 m +496 736 l +512 736 l +512 720 l +496 720 l +cs +bl +480 704 m +480 720 l +496 720 l +496 704 l +480 704 l +cs +bl +hf 8.0 sf +483.2 705.6 m (16) show +bl +496 704 m +496 720 l +512 720 l +512 704 l +496 704 l +cs +bl +hf 8.0 sf +499.2 705.6 m (16) show +bl +384 688 m +384 704 l +400 704 l +400 688 l +384 688 l +cs +bl +hf 8.0 sf +387.2 689.6 m (16) show +bl +400 688 m +400 704 l +416 704 l +416 688 l +400 688 l +cs +bl +hf 8.0 sf +403.2 689.6 m (16) show +384 672 m +384 688 l +400 688 l +400 672 l +384 672 l +fl +bl +384 672 m +384 688 l +400 688 l +400 672 l +384 672 l +cs +bl +400 672 m +400 688 l +416 688 l +416 672 l +400 672 l +cs +bl +hf 8.0 sf +403.2 673.6 m (16) show +416 672 m +416 704 l +448 704 l +448 672 l +416 672 l +fl +bl +416 672 m +416 704 l +448 704 l +448 672 l +416 672 l +cs +bl +384 656 m +384 672 l +400 672 l +400 656 l +384 656 l +cs +bl +hf 8.0 sf +387.2 657.6 m (16) show +bl +400 656 m +400 672 l +416 672 l +416 656 l +400 656 l +cs +bl +hf 8.0 sf +403.2 657.6 m (16) show +bl +384 640 m +384 656 l +400 656 l +400 640 l +384 640 l +cs +bl +hf 8.0 sf +387.2 641.6 m (16) show +bl +400 640 m +400 656 l +416 656 l +416 640 l +400 640 l +cs +bl +hf 8.0 sf +403.2 641.6 m (16) show +bl +416 656 m +416 672 l +432 672 l +432 656 l +416 656 l +cs +bl +hf 8.0 sf +419.2 657.6 m (16) show +bl +432 656 m +432 672 l +448 672 l +448 656 l +432 656 l +cs +bl +hf 8.0 sf +435.2 657.6 m (16) show +416 640 m +416 656 l +432 656 l +432 640 l +416 640 l +fl +bl +416 640 m +416 656 l +432 656 l +432 640 l +416 640 l +cs +bl +432 640 m +432 656 l +448 656 l +448 640 l +432 640 l +cs +bl +hf 8.0 sf +435.2 641.6 m (16) show +bl +448 688 m +448 704 l +464 704 l +464 688 l +448 688 l +cs +bl +hf 8.0 sf +451.2 689.6 m (16) show +bl +464 688 m +464 704 l +480 704 l +480 688 l +464 688 l +cs +bl +hf 8.0 sf +467.2 689.6 m (16) show +bl +448 672 m +448 688 l +464 688 l +464 672 l +448 672 l +cs +bl +hf 8.0 sf +451.2 673.6 m (16) show +bl +464 672 m +464 688 l +480 688 l +480 672 l +464 672 l +cs +bl +hf 8.0 sf +467.2 673.6 m (16) show +480 672 m +480 704 l +512 704 l +512 672 l +480 672 l +fl +bl +480 672 m +480 704 l +512 704 l +512 672 l +480 672 l +cs +bl +448 656 m +448 672 l +464 672 l +464 656 l +448 656 l +cs +bl +hf 8.0 sf +451.2 657.6 m (16) show +bl +464 656 m +464 672 l +480 672 l +480 656 l +464 656 l +cs +bl +hf 8.0 sf +467.2 657.6 m (16) show +bl +448 640 m +448 656 l +464 656 l +464 640 l +448 640 l +cs +bl +hf 8.0 sf +451.2 641.6 m (16) show +bl +464 640 m +464 656 l +480 656 l +480 640 l +464 640 l +cs +bl +hf 8.0 sf +467.2 641.6 m (16) show +bl +480 656 m +480 672 l +496 672 l +496 656 l +480 656 l +cs +bl +hf 8.0 sf +483.2 657.6 m (16) show +bl +496 656 m +496 672 l +512 672 l +512 656 l +496 656 l +cs +bl +hf 8.0 sf +499.2 657.6 m (16) show +bl +480 640 m +480 656 l +496 656 l +496 640 l +480 640 l +cs +bl +hf 8.0 sf +483.2 641.6 m (16) show +bl +496 640 m +496 656 l +512 656 l +512 640 l +496 640 l +cs +bl +hf 8.0 sf +499.2 641.6 m (16) show +bl +256 624 m +256 640 l +272 640 l +272 624 l +256 624 l +cs +bl +hf 8.0 sf +259.2 625.6 m (16) show +bl +272 624 m +272 640 l +288 640 l +288 624 l +272 624 l +cs +bl +hf 8.0 sf +275.2 625.6 m (16) show +bl +256 608 m +256 624 l +272 624 l +272 608 l +256 608 l +cs +bl +hf 8.0 sf +259.2 609.6 m (16) show +bl +272 608 m +272 624 l +288 624 l +288 608 l +272 608 l +cs +bl +hf 8.0 sf +275.2 609.6 m (16) show +bl +288 624 m +288 640 l +304 640 l +304 624 l +288 624 l +cs +bl +hf 8.0 sf +291.2 625.6 m (16) show +bl +304 624 m +304 640 l +320 640 l +320 624 l +304 624 l +cs +bl +hf 8.0 sf +307.2 625.6 m (16) show +bl +288 608 m +288 624 l +304 624 l +304 608 l +288 608 l +cs +bl +hf 8.0 sf +291.2 609.6 m (16) show +bl +304 608 m +304 624 l +320 624 l +320 608 l +304 608 l +cs +bl +hf 8.0 sf +307.2 609.6 m (16) show +256 576 m +256 608 l +288 608 l +288 576 l +256 576 l +fl +bl +256 576 m +256 608 l +288 608 l +288 576 l +256 576 l +cs +bl +288 592 m +288 608 l +304 608 l +304 592 l +288 592 l +cs +bl +hf 8.0 sf +291.2 593.6 m (16) show +bl +304 592 m +304 608 l +320 608 l +320 592 l +304 592 l +cs +bl +hf 8.0 sf +307.2 593.6 m (16) show +bl +288 576 m +288 592 l +304 592 l +304 576 l +288 576 l +cs +bl +hf 8.0 sf +291.2 577.6 m (16) show +bl +304 576 m +304 592 l +320 592 l +320 576 l +304 576 l +cs +bl +hf 8.0 sf +307.2 577.6 m (16) show +bl +320 624 m +320 640 l +336 640 l +336 624 l +320 624 l +cs +bl +hf 8.0 sf +323.2 625.6 m (16) show +336 624 m +336 640 l +352 640 l +352 624 l +336 624 l +fl +bl +336 624 m +336 640 l +352 640 l +352 624 l +336 624 l +cs +bl +320 608 m +320 624 l +336 624 l +336 608 l +320 608 l +cs +bl +hf 8.0 sf +323.2 609.6 m (16) show +bl +336 608 m +336 624 l +352 624 l +352 608 l +336 608 l +cs +bl +hf 8.0 sf +339.2 609.6 m (16) show +bl +352 624 m +352 640 l +368 640 l +368 624 l +352 624 l +cs +bl +hf 8.0 sf +355.2 625.6 m (16) show +bl +368 624 m +368 640 l +384 640 l +384 624 l +368 624 l +cs +bl +hf 8.0 sf +371.2 625.6 m (16) show +bl +352 608 m +352 624 l +368 624 l +368 608 l +352 608 l +cs +bl +hf 8.0 sf +355.2 609.6 m (16) show +bl +368 608 m +368 624 l +384 624 l +384 608 l +368 608 l +cs +bl +hf 8.0 sf +371.2 609.6 m (16) show +320 576 m +320 608 l +352 608 l +352 576 l +320 576 l +fl +bl +320 576 m +320 608 l +352 608 l +352 576 l +320 576 l +cs +bl +352 592 m +352 608 l +368 608 l +368 592 l +352 592 l +cs +bl +hf 8.0 sf +355.2 593.6 m (16) show +368 592 m +368 608 l +384 608 l +384 592 l +368 592 l +fl +bl +368 592 m +368 608 l +384 608 l +384 592 l +368 592 l +cs +bl +352 576 m +352 592 l +368 592 l +368 576 l +352 576 l +cs +bl +hf 8.0 sf +355.2 577.6 m (16) show +bl +368 576 m +368 592 l +384 592 l +384 576 l +368 576 l +cs +bl +hf 8.0 sf +371.2 577.6 m (16) show +bl +256 560 m +256 576 l +272 576 l +272 560 l +256 560 l +cs +bl +hf 8.0 sf +259.2 561.6 m (16) show +bl +272 560 m +272 576 l +288 576 l +288 560 l +272 560 l +cs +bl +hf 8.0 sf +275.2 561.6 m (16) show +256 544 m +256 560 l +272 560 l +272 544 l +256 544 l +fl +bl +256 544 m +256 560 l +272 560 l +272 544 l +256 544 l +cs +bl +272 544 m +272 560 l +288 560 l +288 544 l +272 544 l +cs +bl +hf 8.0 sf +275.2 545.6 m (16) show +bl +288 560 m +288 576 l +304 576 l +304 560 l +288 560 l +cs +bl +hf 8.0 sf +291.2 561.6 m (16) show +bl +304 560 m +304 576 l +320 576 l +320 560 l +304 560 l +cs +bl +hf 8.0 sf +307.2 561.6 m (16) show +bl +288 544 m +288 560 l +304 560 l +304 544 l +288 544 l +cs +bl +hf 8.0 sf +291.2 545.6 m (16) show +bl +304 544 m +304 560 l +320 560 l +320 544 l +304 544 l +cs +bl +hf 8.0 sf +307.2 545.6 m (16) show +256 512 m +256 544 l +288 544 l +288 512 l +256 512 l +fl +bl +256 512 m +256 544 l +288 544 l +288 512 l +256 512 l +cs +bl +288 528 m +288 544 l +304 544 l +304 528 l +288 528 l +cs +bl +hf 8.0 sf +291.2 529.6 m (16) show +bl +304 528 m +304 544 l +320 544 l +320 528 l +304 528 l +cs +bl +hf 8.0 sf +307.2 529.6 m (16) show +288 512 m +288 528 l +304 528 l +304 512 l +288 512 l +fl +bl +288 512 m +288 528 l +304 528 l +304 512 l +288 512 l +cs +bl +304 512 m +304 528 l +320 528 l +320 512 l +304 512 l +cs +bl +hf 8.0 sf +307.2 513.6 m (16) show +bl +320 560 m +320 576 l +336 576 l +336 560 l +320 560 l +cs +bl +hf 8.0 sf +323.2 561.6 m (16) show +bl +336 560 m +336 576 l +352 576 l +352 560 l +336 560 l +cs +bl +hf 8.0 sf +339.2 561.6 m (16) show +bl +320 544 m +320 560 l +336 560 l +336 544 l +320 544 l +cs +bl +hf 8.0 sf +323.2 545.6 m (16) show +bl +336 544 m +336 560 l +352 560 l +352 544 l +336 544 l +cs +bl +hf 8.0 sf +339.2 545.6 m (16) show +bl +352 560 m +352 576 l +368 576 l +368 560 l +352 560 l +cs +bl +hf 8.0 sf +355.2 561.6 m (16) show +bl +368 560 m +368 576 l +384 576 l +384 560 l +368 560 l +cs +bl +hf 8.0 sf +371.2 561.6 m (16) show +bl +352 544 m +352 560 l +368 560 l +368 544 l +352 544 l +cs +bl +hf 8.0 sf +355.2 545.6 m (16) show +bl +368 544 m +368 560 l +384 560 l +384 544 l +368 544 l +cs +bl +hf 8.0 sf +371.2 545.6 m (16) show +320 512 m +320 544 l +352 544 l +352 512 l +320 512 l +fl +bl +320 512 m +320 544 l +352 544 l +352 512 l +320 512 l +cs +bl +352 528 m +352 544 l +368 544 l +368 528 l +352 528 l +cs +bl +hf 8.0 sf +355.2 529.6 m (16) show +bl +368 528 m +368 544 l +384 544 l +384 528 l +368 528 l +cs +bl +hf 8.0 sf +371.2 529.6 m (16) show +bl +352 512 m +352 528 l +368 528 l +368 512 l +352 512 l +cs +bl +hf 8.0 sf +355.2 513.6 m (16) show +bl +368 512 m +368 528 l +384 528 l +384 512 l +368 512 l +cs +bl +hf 8.0 sf +371.2 513.6 m (16) show +bl +384 624 m +384 640 l +400 640 l +400 624 l +384 624 l +cs +bl +hf 8.0 sf +387.2 625.6 m (16) show +bl +400 624 m +400 640 l +416 640 l +416 624 l +400 624 l +cs +bl +hf 8.0 sf +403.2 625.6 m (16) show +bl +384 608 m +384 624 l +400 624 l +400 608 l +384 608 l +cs +bl +hf 8.0 sf +387.2 609.6 m (16) show +bl +400 608 m +400 624 l +416 624 l +416 608 l +400 608 l +cs +bl +hf 8.0 sf +403.2 609.6 m (16) show +bl +416 624 m +416 640 l +432 640 l +432 624 l +416 624 l +cs +bl +hf 8.0 sf +419.2 625.6 m (16) show +bl +432 624 m +432 640 l +448 640 l +448 624 l +432 624 l +cs +bl +hf 8.0 sf +435.2 625.6 m (16) show +bl +416 608 m +416 624 l +432 624 l +432 608 l +416 608 l +cs +bl +hf 8.0 sf +419.2 609.6 m (16) show +bl +432 608 m +432 624 l +448 624 l +448 608 l +432 608 l +cs +bl +hf 8.0 sf +435.2 609.6 m (16) show +bl +384 592 m +384 608 l +400 608 l +400 592 l +384 592 l +cs +bl +hf 8.0 sf +387.2 593.6 m (16) show +bl +400 592 m +400 608 l +416 608 l +416 592 l +400 592 l +cs +bl +hf 8.0 sf +403.2 593.6 m (16) show +bl +384 576 m +384 592 l +400 592 l +400 576 l +384 576 l +cs +bl +hf 8.0 sf +387.2 577.6 m (16) show +bl +400 576 m +400 592 l +416 592 l +416 576 l +400 576 l +cs +bl +hf 8.0 sf +403.2 577.6 m (16) show +bl +416 592 m +416 608 l +432 608 l +432 592 l +416 592 l +cs +bl +hf 8.0 sf +419.2 593.6 m (16) show +bl +432 592 m +432 608 l +448 608 l +448 592 l +432 592 l +cs +bl +hf 8.0 sf +435.2 593.6 m (16) show +bl +416 576 m +416 592 l +432 592 l +432 576 l +416 576 l +cs +bl +hf 8.0 sf +419.2 577.6 m (16) show +bl +432 576 m +432 592 l +448 592 l +448 576 l +432 576 l +cs +bl +hf 8.0 sf +435.2 577.6 m (16) show +bl +448 624 m +448 640 l +464 640 l +464 624 l +448 624 l +cs +bl +hf 8.0 sf +451.2 625.6 m (16) show +bl +464 624 m +464 640 l +480 640 l +480 624 l +464 624 l +cs +bl +hf 8.0 sf +467.2 625.6 m (16) show +bl +448 608 m +448 624 l +464 624 l +464 608 l +448 608 l +cs +bl +hf 8.0 sf +451.2 609.6 m (16) show +bl +464 608 m +464 624 l +480 624 l +480 608 l +464 608 l +cs +bl +hf 8.0 sf +467.2 609.6 m (16) show +bl +480 624 m +480 640 l +496 640 l +496 624 l +480 624 l +cs +bl +hf 8.0 sf +483.2 625.6 m (16) show +bl +496 624 m +496 640 l +512 640 l +512 624 l +496 624 l +cs +bl +hf 8.0 sf +499.2 625.6 m (16) show +bl +480 608 m +480 624 l +496 624 l +496 608 l +480 608 l +cs +bl +hf 8.0 sf +483.2 609.6 m (16) show +bl +496 608 m +496 624 l +512 624 l +512 608 l +496 608 l +cs +bl +hf 8.0 sf +499.2 609.6 m (16) show +bl +448 592 m +448 608 l +464 608 l +464 592 l +448 592 l +cs +bl +hf 8.0 sf +451.2 593.6 m (16) show +bl +464 592 m +464 608 l +480 608 l +480 592 l +464 592 l +cs +bl +hf 8.0 sf +467.2 593.6 m (16) show +bl +448 576 m +448 592 l +464 592 l +464 576 l +448 576 l +cs +bl +hf 8.0 sf +451.2 577.6 m (16) show +bl +464 576 m +464 592 l +480 592 l +480 576 l +464 576 l +cs +bl +hf 8.0 sf +467.2 577.6 m (16) show +bl +480 592 m +480 608 l +496 608 l +496 592 l +480 592 l +cs +bl +hf 8.0 sf +483.2 593.6 m (16) show +bl +496 592 m +496 608 l +512 608 l +512 592 l +496 592 l +cs +bl +hf 8.0 sf +499.2 593.6 m (16) show +bl +480 576 m +480 592 l +496 592 l +496 576 l +480 576 l +cs +bl +hf 8.0 sf +483.2 577.6 m (16) show +bl +496 576 m +496 592 l +512 592 l +512 576 l +496 576 l +cs +bl +hf 8.0 sf +499.2 577.6 m (16) show +bl +384 560 m +384 576 l +400 576 l +400 560 l +384 560 l +cs +bl +hf 8.0 sf +387.2 561.6 m (16) show +bl +400 560 m +400 576 l +416 576 l +416 560 l +400 560 l +cs +bl +hf 8.0 sf +403.2 561.6 m (16) show +bl +384 544 m +384 560 l +400 560 l +400 544 l +384 544 l +cs +bl +hf 8.0 sf +387.2 545.6 m (16) show +bl +400 544 m +400 560 l +416 560 l +416 544 l +400 544 l +cs +bl +hf 8.0 sf +403.2 545.6 m (16) show +bl +416 560 m +416 576 l +432 576 l +432 560 l +416 560 l +cs +bl +hf 8.0 sf +419.2 561.6 m (16) show +bl +432 560 m +432 576 l +448 576 l +448 560 l +432 560 l +cs +bl +hf 8.0 sf +435.2 561.6 m (16) show +bl +416 544 m +416 560 l +432 560 l +432 544 l +416 544 l +cs +bl +hf 8.0 sf +419.2 545.6 m (16) show +bl +432 544 m +432 560 l +448 560 l +448 544 l +432 544 l +cs +bl +hf 8.0 sf +435.2 545.6 m (16) show +bl +384 528 m +384 544 l +400 544 l +400 528 l +384 528 l +cs +bl +hf 8.0 sf +387.2 529.6 m (16) show +bl +400 528 m +400 544 l +416 544 l +416 528 l +400 528 l +cs +bl +hf 8.0 sf +403.2 529.6 m (16) show +bl +384 512 m +384 528 l +400 528 l +400 512 l +384 512 l +cs +bl +hf 8.0 sf +387.2 513.6 m (16) show +bl +400 512 m +400 528 l +416 528 l +416 512 l +400 512 l +cs +bl +hf 8.0 sf +403.2 513.6 m (16) show +bl +416 528 m +416 544 l +432 544 l +432 528 l +416 528 l +cs +bl +hf 8.0 sf +419.2 529.6 m (16) show +bl +432 528 m +432 544 l +448 544 l +448 528 l +432 528 l +cs +bl +hf 8.0 sf +435.2 529.6 m (16) show +bl +416 512 m +416 528 l +432 528 l +432 512 l +416 512 l +cs +bl +hf 8.0 sf +419.2 513.6 m (16) show +bl +432 512 m +432 528 l +448 528 l +448 512 l +432 512 l +cs +bl +hf 8.0 sf +435.2 513.6 m (16) show +bl +448 560 m +448 576 l +464 576 l +464 560 l +448 560 l +cs +bl +hf 8.0 sf +451.2 561.6 m (16) show +bl +464 560 m +464 576 l +480 576 l +480 560 l +464 560 l +cs +bl +hf 8.0 sf +467.2 561.6 m (16) show +bl +448 544 m +448 560 l +464 560 l +464 544 l +448 544 l +cs +bl +hf 8.0 sf +451.2 545.6 m (16) show +bl +464 544 m +464 560 l +480 560 l +480 544 l +464 544 l +cs +bl +hf 8.0 sf +467.2 545.6 m (16) show +bl +480 560 m +480 576 l +496 576 l +496 560 l +480 560 l +cs +bl +hf 8.0 sf +483.2 561.6 m (16) show +bl +496 560 m +496 576 l +512 576 l +512 560 l +496 560 l +cs +bl +hf 8.0 sf +499.2 561.6 m (16) show +bl +480 544 m +480 560 l +496 560 l +496 544 l +480 544 l +cs +bl +hf 8.0 sf +483.2 545.6 m (16) show +bl +496 544 m +496 560 l +512 560 l +512 544 l +496 544 l +cs +bl +hf 8.0 sf +499.2 545.6 m (16) show +bl +448 528 m +448 544 l +464 544 l +464 528 l +448 528 l +cs +bl +hf 8.0 sf +451.2 529.6 m (16) show +bl +464 528 m +464 544 l +480 544 l +480 528 l +464 528 l +cs +bl +hf 8.0 sf +467.2 529.6 m (16) show +bl +448 512 m +448 528 l +464 528 l +464 512 l +448 512 l +cs +bl +hf 8.0 sf +451.2 513.6 m (16) show +bl +464 512 m +464 528 l +480 528 l +480 512 l +464 512 l +cs +bl +hf 8.0 sf +467.2 513.6 m (16) show +bl +480 528 m +480 544 l +496 544 l +496 528 l +480 528 l +cs +bl +hf 8.0 sf +483.2 529.6 m (16) show +bl +496 528 m +496 544 l +512 544 l +512 528 l +496 528 l +cs +bl +hf 8.0 sf +499.2 529.6 m (16) show +bl +480 512 m +480 528 l +496 528 l +496 512 l +480 512 l +cs +bl +hf 8.0 sf +483.2 513.6 m (16) show +bl +496 512 m +496 528 l +512 528 l +512 512 l +496 512 l +cs +bl +hf 8.0 sf +499.2 513.6 m (16) show +512 992 m +512 1024 l +544 1024 l +544 992 l +512 992 l +fl +bl +512 992 m +512 1024 l +544 1024 l +544 992 l +512 992 l +cs +544 992 m +544 1024 l +576 1024 l +576 992 l +544 992 l +fl +bl +544 992 m +544 1024 l +576 1024 l +576 992 l +544 992 l +cs +512 960 m +512 992 l +544 992 l +544 960 l +512 960 l +fl +bl +512 960 m +512 992 l +544 992 l +544 960 l +512 960 l +cs +544 960 m +544 992 l +576 992 l +576 960 l +544 960 l +fl +bl +544 960 m +544 992 l +576 992 l +576 960 l +544 960 l +cs +576 992 m +576 1024 l +608 1024 l +608 992 l +576 992 l +fl +bl +576 992 m +576 1024 l +608 1024 l +608 992 l +576 992 l +cs +608 992 m +608 1024 l +640 1024 l +640 992 l +608 992 l +fl +bl +608 992 m +608 1024 l +640 1024 l +640 992 l +608 992 l +cs +576 960 m +576 992 l +608 992 l +608 960 l +576 960 l +fl +bl +576 960 m +576 992 l +608 992 l +608 960 l +576 960 l +cs +608 960 m +608 992 l +640 992 l +640 960 l +608 960 l +fl +bl +608 960 m +608 992 l +640 992 l +640 960 l +608 960 l +cs +512 928 m +512 960 l +544 960 l +544 928 l +512 928 l +fl +bl +512 928 m +512 960 l +544 960 l +544 928 l +512 928 l +cs +544 928 m +544 960 l +576 960 l +576 928 l +544 928 l +fl +bl +544 928 m +544 960 l +576 960 l +576 928 l +544 928 l +cs +512 896 m +512 928 l +544 928 l +544 896 l +512 896 l +fl +bl +512 896 m +512 928 l +544 928 l +544 896 l +512 896 l +cs +544 896 m +544 928 l +576 928 l +576 896 l +544 896 l +fl +bl +544 896 m +544 928 l +576 928 l +576 896 l +544 896 l +cs +576 928 m +576 960 l +608 960 l +608 928 l +576 928 l +fl +bl +576 928 m +576 960 l +608 960 l +608 928 l +576 928 l +cs +608 928 m +608 960 l +640 960 l +640 928 l +608 928 l +fl +bl +608 928 m +608 960 l +640 960 l +640 928 l +608 928 l +cs +576 896 m +576 928 l +608 928 l +608 896 l +576 896 l +fl +bl +576 896 m +576 928 l +608 928 l +608 896 l +576 896 l +cs +608 896 m +608 928 l +640 928 l +640 896 l +608 896 l +fl +bl +608 896 m +608 928 l +640 928 l +640 896 l +608 896 l +cs +640 896 m +640 1024 l +704 1024 l +704 896 l +640 896 l +fl +bl +640 896 m +640 1024 l +704 1024 l +704 896 l +640 896 l +cs +bl +512 880 m +512 896 l +528 896 l +528 880 l +512 880 l +cs +bl +hf 8.0 sf +515.2 881.6 m (16) show +bl +528 880 m +528 896 l +544 896 l +544 880 l +528 880 l +cs +bl +hf 8.0 sf +531.2 881.6 m (16) show +bl +512 864 m +512 880 l +528 880 l +528 864 l +512 864 l +cs +bl +hf 8.0 sf +515.2 865.6 m (16) show +bl +528 864 m +528 880 l +544 880 l +544 864 l +528 864 l +cs +bl +hf 8.0 sf +531.2 865.6 m (16) show +544 864 m +544 896 l +576 896 l +576 864 l +544 864 l +fl +bl +544 864 m +544 896 l +576 896 l +576 864 l +544 864 l +cs +bl +512 848 m +512 864 l +528 864 l +528 848 l +512 848 l +cs +bl +hf 8.0 sf +515.2 849.6 m (16) show +bl +528 848 m +528 864 l +544 864 l +544 848 l +528 848 l +cs +bl +hf 8.0 sf +531.2 849.6 m (16) show +bl +512 832 m +512 848 l +528 848 l +528 832 l +512 832 l +cs +bl +hf 8.0 sf +515.2 833.6 m (16) show +bl +528 832 m +528 848 l +544 848 l +544 832 l +528 832 l +cs +bl +hf 8.0 sf +531.2 833.6 m (16) show +bl +544 848 m +544 864 l +560 864 l +560 848 l +544 848 l +cs +bl +hf 8.0 sf +547.2 849.6 m (16) show +bl +560 848 m +560 864 l +576 864 l +576 848 l +560 848 l +cs +bl +hf 8.0 sf +563.2 849.6 m (16) show +bl +544 832 m +544 848 l +560 848 l +560 832 l +544 832 l +cs +bl +hf 8.0 sf +547.2 833.6 m (16) show +bl +560 832 m +560 848 l +576 848 l +576 832 l +560 832 l +cs +bl +hf 8.0 sf +563.2 833.6 m (16) show +bl +576 880 m +576 896 l +592 896 l +592 880 l +576 880 l +cs +bl +hf 8.0 sf +579.2 881.6 m (16) show +592 880 m +592 896 l +608 896 l +608 880 l +592 880 l +fl +bl +592 880 m +592 896 l +608 896 l +608 880 l +592 880 l +cs +bl +576 864 m +576 880 l +592 880 l +592 864 l +576 864 l +cs +bl +hf 8.0 sf +579.2 865.6 m (16) show +bl +592 864 m +592 880 l +608 880 l +608 864 l +592 864 l +cs +bl +hf 8.0 sf +595.2 865.6 m (16) show +608 864 m +608 896 l +640 896 l +640 864 l +608 864 l +fl +bl +608 864 m +608 896 l +640 896 l +640 864 l +608 864 l +cs +bl +576 848 m +576 864 l +592 864 l +592 848 l +576 848 l +cs +bl +hf 8.0 sf +579.2 849.6 m (16) show +bl +592 848 m +592 864 l +608 864 l +608 848 l +592 848 l +cs +bl +hf 8.0 sf +595.2 849.6 m (16) show +bl +576 832 m +576 848 l +592 848 l +592 832 l +576 832 l +cs +bl +hf 8.0 sf +579.2 833.6 m (16) show +bl +592 832 m +592 848 l +608 848 l +608 832 l +592 832 l +cs +bl +hf 8.0 sf +595.2 833.6 m (16) show +bl +608 848 m +608 864 l +624 864 l +624 848 l +608 848 l +cs +bl +hf 8.0 sf +611.2 849.6 m (16) show +624 848 m +624 864 l +640 864 l +640 848 l +624 848 l +fl +bl +624 848 m +624 864 l +640 864 l +640 848 l +624 848 l +cs +bl +608 832 m +608 848 l +624 848 l +624 832 l +608 832 l +cs +bl +hf 8.0 sf +611.2 833.6 m (16) show +bl +624 832 m +624 848 l +640 848 l +640 832 l +624 832 l +cs +bl +hf 8.0 sf +627.2 833.6 m (16) show +bl +512 816 m +512 832 l +528 832 l +528 816 l +512 816 l +cs +bl +hf 8.0 sf +515.2 817.6 m (16) show +bl +528 816 m +528 832 l +544 832 l +544 816 l +528 816 l +cs +bl +hf 8.0 sf +531.2 817.6 m (16) show +512 800 m +512 816 l +528 816 l +528 800 l +512 800 l +fl +bl +512 800 m +512 816 l +528 816 l +528 800 l +512 800 l +cs +bl +528 800 m +528 816 l +544 816 l +544 800 l +528 800 l +cs +bl +hf 8.0 sf +531.2 801.6 m (16) show +544 800 m +544 832 l +576 832 l +576 800 l +544 800 l +fl +bl +544 800 m +544 832 l +576 832 l +576 800 l +544 800 l +cs +bl +512 784 m +512 800 l +528 800 l +528 784 l +512 784 l +cs +bl +hf 8.0 sf +515.2 785.6 m (16) show +bl +528 784 m +528 800 l +544 800 l +544 784 l +528 784 l +cs +bl +hf 8.0 sf +531.2 785.6 m (16) show +bl +512 768 m +512 784 l +528 784 l +528 768 l +512 768 l +cs +bl +hf 8.0 sf +515.2 769.6 m (16) show +bl +528 768 m +528 784 l +544 784 l +544 768 l +528 768 l +cs +bl +hf 8.0 sf +531.2 769.6 m (16) show +bl +544 784 m +544 800 l +560 800 l +560 784 l +544 784 l +cs +bl +hf 8.0 sf +547.2 785.6 m (16) show +bl +560 784 m +560 800 l +576 800 l +576 784 l +560 784 l +cs +bl +hf 8.0 sf +563.2 785.6 m (16) show +544 768 m +544 784 l +560 784 l +560 768 l +544 768 l +fl +bl +544 768 m +544 784 l +560 784 l +560 768 l +544 768 l +cs +bl +560 768 m +560 784 l +576 784 l +576 768 l +560 768 l +cs +bl +hf 8.0 sf +563.2 769.6 m (16) show +bl +576 816 m +576 832 l +592 832 l +592 816 l +576 816 l +cs +bl +hf 8.0 sf +579.2 817.6 m (16) show +bl +592 816 m +592 832 l +608 832 l +608 816 l +592 816 l +cs +bl +hf 8.0 sf +595.2 817.6 m (16) show +bl +576 800 m +576 816 l +592 816 l +592 800 l +576 800 l +cs +bl +hf 8.0 sf +579.2 801.6 m (16) show +bl +592 800 m +592 816 l +608 816 l +608 800 l +592 800 l +cs +bl +hf 8.0 sf +595.2 801.6 m (16) show +608 800 m +608 832 l +640 832 l +640 800 l +608 800 l +fl +bl +608 800 m +608 832 l +640 832 l +640 800 l +608 800 l +cs +bl +576 784 m +576 800 l +592 800 l +592 784 l +576 784 l +cs +bl +hf 8.0 sf +579.2 785.6 m (16) show +bl +592 784 m +592 800 l +608 800 l +608 784 l +592 784 l +cs +bl +hf 8.0 sf +595.2 785.6 m (16) show +bl +576 768 m +576 784 l +592 784 l +592 768 l +576 768 l +cs +bl +hf 8.0 sf +579.2 769.6 m (16) show +bl +592 768 m +592 784 l +608 784 l +608 768 l +592 768 l +cs +bl +hf 8.0 sf +595.2 769.6 m (16) show +bl +608 784 m +608 800 l +624 800 l +624 784 l +608 784 l +cs +bl +hf 8.0 sf +611.2 785.6 m (16) show +bl +624 784 m +624 800 l +640 800 l +640 784 l +624 784 l +cs +bl +hf 8.0 sf +627.2 785.6 m (16) show +bl +608 768 m +608 784 l +624 784 l +624 768 l +608 768 l +cs +bl +hf 8.0 sf +611.2 769.6 m (16) show +bl +624 768 m +624 784 l +640 784 l +640 768 l +624 768 l +cs +bl +hf 8.0 sf +627.2 769.6 m (16) show +640 864 m +640 896 l +672 896 l +672 864 l +640 864 l +fl +bl +640 864 m +640 896 l +672 896 l +672 864 l +640 864 l +cs +672 864 m +672 896 l +688 896 l +688 864 l +672 864 l +fl +bl +672 864 m +672 896 l +688 896 l +688 864 l +672 864 l +cs +640 832 m +640 864 l +672 864 l +672 832 l +640 832 l +fl +bl +640 832 m +640 864 l +672 864 l +672 832 l +640 832 l +cs +672 832 m +672 864 l +688 864 l +688 832 l +672 832 l +fl +bl +672 832 m +672 864 l +688 864 l +688 832 l +672 832 l +cs +688 832 m +688 896 l +704 896 l +704 832 l +688 832 l +fl +bl +688 832 m +688 896 l +704 896 l +704 832 l +688 832 l +cs +640 800 m +640 832 l +672 832 l +672 800 l +640 800 l +fl +bl +640 800 m +640 832 l +672 832 l +672 800 l +640 800 l +cs +672 800 m +672 832 l +688 832 l +688 800 l +672 800 l +fl +bl +672 800 m +672 832 l +688 832 l +688 800 l +672 800 l +cs +640 768 m +640 800 l +672 800 l +672 768 l +640 768 l +fl +bl +640 768 m +640 800 l +672 800 l +672 768 l +640 768 l +cs +672 768 m +672 800 l +688 800 l +688 768 l +672 768 l +fl +bl +672 768 m +672 800 l +688 800 l +688 768 l +672 768 l +cs +688 768 m +688 832 l +704 832 l +704 768 l +688 768 l +fl +bl +688 768 m +688 832 l +704 832 l +704 768 l +688 768 l +cs +704 960 m +704 1024 l +736 1024 l +736 960 l +704 960 l +fl +bl +704 960 m +704 1024 l +736 1024 l +736 960 l +704 960 l +cs +736 960 m +736 1024 l +752 1024 l +752 960 l +736 960 l +fl +bl +736 960 m +736 1024 l +752 1024 l +752 960 l +736 960 l +cs +704 896 m +704 960 l +736 960 l +736 896 l +704 896 l +fl +bl +704 896 m +704 960 l +736 960 l +736 896 l +704 896 l +cs +736 896 m +736 960 l +752 960 l +752 896 l +736 896 l +fl +bl +736 896 m +736 960 l +752 960 l +752 896 l +736 896 l +cs +752 896 m +752 1024 l +768 1024 l +768 896 l +752 896 l +fl +bl +752 896 m +752 1024 l +768 1024 l +768 896 l +752 896 l +cs +704 864 m +704 896 l +720 896 l +720 864 l +704 864 l +fl +bl +704 864 m +704 896 l +720 896 l +720 864 l +704 864 l +cs +720 864 m +720 896 l +736 896 l +736 864 l +720 864 l +fl +bl +720 864 m +720 896 l +736 896 l +736 864 l +720 864 l +cs +bl +704 832 m +704 864 l +720 864 l +720 832 l +704 832 l +cs +bl +hf 8.0 sf +707.2 835.2 m (16) show +720 832 m +720 864 l +736 864 l +736 832 l +720 832 l +fl +bl +720 832 m +720 864 l +736 864 l +736 832 l +720 832 l +cs +bl +736 832 m +736 896 l +752 896 l +752 832 l +736 832 l +cs +bl +hf 8.0 sf +739.2 838.4 m (16) show +bl +704 800 m +704 832 l +720 832 l +720 800 l +704 800 l +cs +bl +hf 8.0 sf +707.2 803.2 m (16) show +bl +720 800 m +720 832 l +736 832 l +736 800 l +720 800 l +cs +bl +hf 8.0 sf +723.2 803.2 m (16) show +bl +704 768 m +704 800 l +720 800 l +720 768 l +704 768 l +cs +bl +hf 8.0 sf +707.2 771.2 m (16) show +bl +720 768 m +720 800 l +736 800 l +736 768 l +720 768 l +cs +bl +hf 8.0 sf +723.2 771.2 m (16) show +bl +736 768 m +736 832 l +752 832 l +752 768 l +736 768 l +cs +bl +hf 8.0 sf +739.2 774.4 m (16) show +bl +752 768 m +752 896 l +768 896 l +768 768 l +752 768 l +cs +bl +hf 8.0 sf +755.2 780.8 m (16) show +512 736 m +512 768 l +544 768 l +544 736 l +512 736 l +fl +bl +512 736 m +512 768 l +544 768 l +544 736 l +512 736 l +cs +544 736 m +544 768 l +576 768 l +576 736 l +544 736 l +fl +bl +544 736 m +544 768 l +576 768 l +576 736 l +544 736 l +cs +512 704 m +512 736 l +544 736 l +544 704 l +512 704 l +fl +bl +512 704 m +512 736 l +544 736 l +544 704 l +512 704 l +cs +544 704 m +544 736 l +576 736 l +576 704 l +544 704 l +fl +bl +544 704 m +544 736 l +576 736 l +576 704 l +544 704 l +cs +576 736 m +576 768 l +608 768 l +608 736 l +576 736 l +fl +bl +576 736 m +576 768 l +608 768 l +608 736 l +576 736 l +cs +608 736 m +608 768 l +640 768 l +640 736 l +608 736 l +fl +bl +608 736 m +608 768 l +640 768 l +640 736 l +608 736 l +cs +576 704 m +576 736 l +608 736 l +608 704 l +576 704 l +fl +bl +576 704 m +576 736 l +608 736 l +608 704 l +576 704 l +cs +608 704 m +608 736 l +640 736 l +640 704 l +608 704 l +fl +bl +608 704 m +608 736 l +640 736 l +640 704 l +608 704 l +cs +512 640 m +512 704 l +576 704 l +576 640 l +512 640 l +fl +bl +512 640 m +512 704 l +576 704 l +576 640 l +512 640 l +cs +576 672 m +576 704 l +608 704 l +608 672 l +576 672 l +fl +bl +576 672 m +576 704 l +608 704 l +608 672 l +576 672 l +cs +608 672 m +608 704 l +640 704 l +640 672 l +608 672 l +fl +bl +608 672 m +608 704 l +640 704 l +640 672 l +608 672 l +cs +576 640 m +576 672 l +608 672 l +608 640 l +576 640 l +fl +bl +576 640 m +576 672 l +608 672 l +608 640 l +576 640 l +cs +608 640 m +608 672 l +640 672 l +640 640 l +608 640 l +fl +bl +608 640 m +608 672 l +640 672 l +640 640 l +608 640 l +cs +640 640 m +640 768 l +704 768 l +704 640 l +640 640 l +fl +bl +640 640 m +640 768 l +704 768 l +704 640 l +640 640 l +cs +512 624 m +512 640 l +528 640 l +528 624 l +512 624 l +fl +bl +512 624 m +512 640 l +528 640 l +528 624 l +512 624 l +cs +528 624 m +528 640 l +544 640 l +544 624 l +528 624 l +fl +bl +528 624 m +528 640 l +544 640 l +544 624 l +528 624 l +cs +512 608 m +512 624 l +528 624 l +528 608 l +512 608 l +fl +bl +512 608 m +512 624 l +528 624 l +528 608 l +512 608 l +cs +528 608 m +528 624 l +544 624 l +544 608 l +528 608 l +fl +bl +528 608 m +528 624 l +544 624 l +544 608 l +528 608 l +cs +544 608 m +544 640 l +576 640 l +576 608 l +544 608 l +fl +bl +544 608 m +544 640 l +576 640 l +576 608 l +544 608 l +cs +512 592 m +512 608 l +528 608 l +528 592 l +512 592 l +fl +bl +512 592 m +512 608 l +528 608 l +528 592 l +512 592 l +cs +bl +528 592 m +528 608 l +544 608 l +544 592 l +528 592 l +cs +bl +hf 8.0 sf +531.2 593.6 m (16) show +512 576 m +512 592 l +528 592 l +528 576 l +512 576 l +fl +bl +512 576 m +512 592 l +528 592 l +528 576 l +512 576 l +cs +528 576 m +528 592 l +544 592 l +544 576 l +528 576 l +fl +bl +528 576 m +528 592 l +544 592 l +544 576 l +528 576 l +cs +544 592 m +544 608 l +560 608 l +560 592 l +544 592 l +fl +bl +544 592 m +544 608 l +560 608 l +560 592 l +544 592 l +cs +560 592 m +560 608 l +576 608 l +576 592 l +560 592 l +fl +bl +560 592 m +560 608 l +576 608 l +576 592 l +560 592 l +cs +544 576 m +544 592 l +560 592 l +560 576 l +544 576 l +fl +bl +544 576 m +544 592 l +560 592 l +560 576 l +544 576 l +cs +560 576 m +560 592 l +576 592 l +576 576 l +560 576 l +fl +bl +560 576 m +560 592 l +576 592 l +576 576 l +560 576 l +cs +bl +576 624 m +576 640 l +592 640 l +592 624 l +576 624 l +cs +bl +hf 8.0 sf +579.2 625.6 m (16) show +bl +592 624 m +592 640 l +608 640 l +608 624 l +592 624 l +cs +bl +hf 8.0 sf +595.2 625.6 m (16) show +576 608 m +576 624 l +592 624 l +592 608 l +576 608 l +fl +bl +576 608 m +576 624 l +592 624 l +592 608 l +576 608 l +cs +bl +592 608 m +592 624 l +608 624 l +608 608 l +592 608 l +cs +bl +hf 8.0 sf +595.2 609.6 m (16) show +608 608 m +608 640 l +640 640 l +640 608 l +608 608 l +fl +bl +608 608 m +608 640 l +640 640 l +640 608 l +608 608 l +cs +bl +576 592 m +576 608 l +592 608 l +592 592 l +576 592 l +cs +bl +hf 8.0 sf +579.2 593.6 m (16) show +bl +592 592 m +592 608 l +608 608 l +608 592 l +592 592 l +cs +bl +hf 8.0 sf +595.2 593.6 m (16) show +bl +576 576 m +576 592 l +592 592 l +592 576 l +576 576 l +cs +bl +hf 8.0 sf +579.2 577.6 m (16) show +bl +592 576 m +592 592 l +608 592 l +608 576 l +592 576 l +cs +bl +hf 8.0 sf +595.2 577.6 m (16) show +bl +608 592 m +608 608 l +624 608 l +624 592 l +608 592 l +cs +bl +hf 8.0 sf +611.2 593.6 m (16) show +bl +624 592 m +624 608 l +640 608 l +640 592 l +624 592 l +cs +bl +hf 8.0 sf +627.2 593.6 m (16) show +608 576 m +608 592 l +624 592 l +624 576 l +608 576 l +fl +bl +608 576 m +608 592 l +624 592 l +624 576 l +608 576 l +cs +bl +624 576 m +624 592 l +640 592 l +640 576 l +624 576 l +cs +bl +hf 8.0 sf +627.2 577.6 m (16) show +512 544 m +512 576 l +544 576 l +544 544 l +512 544 l +fl +bl +512 544 m +512 576 l +544 576 l +544 544 l +512 544 l +cs +544 544 m +544 576 l +576 576 l +576 544 l +544 544 l +fl +bl +544 544 m +544 576 l +576 576 l +576 544 l +544 544 l +cs +512 512 m +512 544 l +544 544 l +544 512 l +512 512 l +fl +bl +512 512 m +512 544 l +544 544 l +544 512 l +512 512 l +cs +544 512 m +544 544 l +576 544 l +576 512 l +544 512 l +fl +bl +544 512 m +544 544 l +576 544 l +576 512 l +544 512 l +cs +576 560 m +576 576 l +592 576 l +592 560 l +576 560 l +fl +bl +576 560 m +576 576 l +592 576 l +592 560 l +576 560 l +cs +592 560 m +592 576 l +608 576 l +608 560 l +592 560 l +fl +bl +592 560 m +592 576 l +608 576 l +608 560 l +592 560 l +cs +576 544 m +576 560 l +592 560 l +592 544 l +576 544 l +fl +bl +576 544 m +576 560 l +592 560 l +592 544 l +576 544 l +cs +592 544 m +592 560 l +608 560 l +608 544 l +592 544 l +fl +bl +592 544 m +592 560 l +608 560 l +608 544 l +592 544 l +cs +608 544 m +608 576 l +640 576 l +640 544 l +608 544 l +fl +bl +608 544 m +608 576 l +640 576 l +640 544 l +608 544 l +cs +576 528 m +576 544 l +592 544 l +592 528 l +576 528 l +fl +bl +576 528 m +576 544 l +592 544 l +592 528 l +576 528 l +cs +bl +592 528 m +592 544 l +608 544 l +608 528 l +592 528 l +cs +bl +hf 8.0 sf +595.2 529.6 m (16) show +576 512 m +576 528 l +592 528 l +592 512 l +576 512 l +fl +bl +576 512 m +576 528 l +592 528 l +592 512 l +576 512 l +cs +592 512 m +592 528 l +608 528 l +608 512 l +592 512 l +fl +bl +592 512 m +592 528 l +608 528 l +608 512 l +592 512 l +cs +608 528 m +608 544 l +624 544 l +624 528 l +608 528 l +fl +bl +608 528 m +608 544 l +624 544 l +624 528 l +608 528 l +cs +624 528 m +624 544 l +640 544 l +640 528 l +624 528 l +fl +bl +624 528 m +624 544 l +640 544 l +640 528 l +624 528 l +cs +608 512 m +608 528 l +624 528 l +624 512 l +608 512 l +fl +bl +608 512 m +608 528 l +624 528 l +624 512 l +608 512 l +cs +624 512 m +624 528 l +640 528 l +640 512 l +624 512 l +fl +bl +624 512 m +624 528 l +640 528 l +640 512 l +624 512 l +cs +640 608 m +640 640 l +672 640 l +672 608 l +640 608 l +fl +bl +640 608 m +640 640 l +672 640 l +672 608 l +640 608 l +cs +672 608 m +672 640 l +688 640 l +688 608 l +672 608 l +fl +bl +672 608 m +672 640 l +688 640 l +688 608 l +672 608 l +cs +640 576 m +640 608 l +672 608 l +672 576 l +640 576 l +fl +bl +640 576 m +640 608 l +672 608 l +672 576 l +640 576 l +cs +672 576 m +672 608 l +688 608 l +688 576 l +672 576 l +fl +bl +672 576 m +672 608 l +688 608 l +688 576 l +672 576 l +cs +688 576 m +688 640 l +704 640 l +704 576 l +688 576 l +fl +bl +688 576 m +688 640 l +704 640 l +704 576 l +688 576 l +cs +640 512 m +640 576 l +688 576 l +688 512 l +640 512 l +fl +bl +640 512 m +640 576 l +688 576 l +688 512 l +640 512 l +cs +688 512 m +688 576 l +704 576 l +704 512 l +688 512 l +fl +bl +688 512 m +688 576 l +704 576 l +704 512 l +688 512 l +cs +704 704 m +704 768 l +736 768 l +736 704 l +704 704 l +fl +bl +704 704 m +704 768 l +736 768 l +736 704 l +704 704 l +cs +736 704 m +736 768 l +752 768 l +752 704 l +736 704 l +fl +bl +736 704 m +736 768 l +752 768 l +752 704 l +736 704 l +cs +704 640 m +704 704 l +736 704 l +736 640 l +704 640 l +fl +bl +704 640 m +704 704 l +736 704 l +736 640 l +704 640 l +cs +736 640 m +736 704 l +752 704 l +752 640 l +736 640 l +fl +bl +736 640 m +736 704 l +752 704 l +752 640 l +736 640 l +cs +752 640 m +752 768 l +768 768 l +768 640 l +752 640 l +fl +bl +752 640 m +752 768 l +768 768 l +768 640 l +752 640 l +cs +bl +704 608 m +704 640 l +720 640 l +720 608 l +704 608 l +cs +bl +hf 8.0 sf +707.2 611.2 m (16) show +bl +720 608 m +720 640 l +736 640 l +736 608 l +720 608 l +cs +bl +hf 8.0 sf +723.2 611.2 m (16) show +bl +704 576 m +704 608 l +720 608 l +720 576 l +704 576 l +cs +bl +hf 8.0 sf +707.2 579.2 m (16) show +bl +720 576 m +720 608 l +736 608 l +736 576 l +720 576 l +cs +bl +hf 8.0 sf +723.2 579.2 m (16) show +bl +736 576 m +736 640 l +752 640 l +752 576 l +736 576 l +cs +bl +hf 8.0 sf +739.2 582.4 m (16) show +bl +704 544 m +704 576 l +720 576 l +720 544 l +704 544 l +cs +bl +hf 8.0 sf +707.2 547.2 m (16) show +bl +720 544 m +720 576 l +736 576 l +736 544 l +720 544 l +cs +bl +hf 8.0 sf +723.2 547.2 m (16) show +bl +704 512 m +704 544 l +720 544 l +720 512 l +704 512 l +cs +bl +hf 8.0 sf +707.2 515.2 m (16) show +bl +720 512 m +720 544 l +736 544 l +736 512 l +720 512 l +cs +bl +hf 8.0 sf +723.2 515.2 m (16) show +bl +736 512 m +736 576 l +752 576 l +752 512 l +736 512 l +cs +bl +hf 8.0 sf +739.2 518.4 m (16) show +bl +752 512 m +752 640 l +768 640 l +768 512 l +752 512 l +cs +bl +hf 8.0 sf +755.2 524.8 m (16) show +0 480 m +0 512 l +32 512 l +32 480 l +0 480 l +fl +bl +0 480 m +0 512 l +32 512 l +32 480 l +0 480 l +cs +32 480 m +32 512 l +64 512 l +64 480 l +32 480 l +fl +bl +32 480 m +32 512 l +64 512 l +64 480 l +32 480 l +cs +0 448 m +0 480 l +32 480 l +32 448 l +0 448 l +fl +bl +0 448 m +0 480 l +32 480 l +32 448 l +0 448 l +cs +32 448 m +32 480 l +64 480 l +64 448 l +32 448 l +fl +bl +32 448 m +32 480 l +64 480 l +64 448 l +32 448 l +cs +64 480 m +64 512 l +96 512 l +96 480 l +64 480 l +fl +bl +64 480 m +64 512 l +96 512 l +96 480 l +64 480 l +cs +96 480 m +96 512 l +128 512 l +128 480 l +96 480 l +fl +bl +96 480 m +96 512 l +128 512 l +128 480 l +96 480 l +cs +64 448 m +64 480 l +96 480 l +96 448 l +64 448 l +fl +bl +64 448 m +64 480 l +96 480 l +96 448 l +64 448 l +cs +96 448 m +96 480 l +128 480 l +128 448 l +96 448 l +fl +bl +96 448 m +96 480 l +128 480 l +128 448 l +96 448 l +cs +0 416 m +0 448 l +32 448 l +32 416 l +0 416 l +fl +bl +0 416 m +0 448 l +32 448 l +32 416 l +0 416 l +cs +32 416 m +32 448 l +64 448 l +64 416 l +32 416 l +fl +bl +32 416 m +32 448 l +64 448 l +64 416 l +32 416 l +cs +0 384 m +0 416 l +32 416 l +32 384 l +0 384 l +fl +bl +0 384 m +0 416 l +32 416 l +32 384 l +0 384 l +cs +32 384 m +32 416 l +64 416 l +64 384 l +32 384 l +fl +bl +32 384 m +32 416 l +64 416 l +64 384 l +32 384 l +cs +64 416 m +64 448 l +96 448 l +96 416 l +64 416 l +fl +bl +64 416 m +64 448 l +96 448 l +96 416 l +64 416 l +cs +96 416 m +96 448 l +128 448 l +128 416 l +96 416 l +fl +bl +96 416 m +96 448 l +128 448 l +128 416 l +96 416 l +cs +64 384 m +64 416 l +96 416 l +96 384 l +64 384 l +fl +bl +64 384 m +64 416 l +96 416 l +96 384 l +64 384 l +cs +96 384 m +96 416 l +128 416 l +128 384 l +96 384 l +fl +bl +96 384 m +96 416 l +128 416 l +128 384 l +96 384 l +cs +bl +128 496 m +128 512 l +144 512 l +144 496 l +128 496 l +cs +bl +hf 8.0 sf +131.2 497.6 m (16) show +bl +144 496 m +144 512 l +160 512 l +160 496 l +144 496 l +cs +bl +hf 8.0 sf +147.2 497.6 m (16) show +bl +128 480 m +128 496 l +144 496 l +144 480 l +128 480 l +cs +bl +hf 8.0 sf +131.2 481.6 m (16) show +bl +144 480 m +144 496 l +160 496 l +160 480 l +144 480 l +cs +bl +hf 8.0 sf +147.2 481.6 m (16) show +bl +160 496 m +160 512 l +176 512 l +176 496 l +160 496 l +cs +bl +hf 8.0 sf +163.2 497.6 m (16) show +bl +176 496 m +176 512 l +192 512 l +192 496 l +176 496 l +cs +bl +hf 8.0 sf +179.2 497.6 m (16) show +bl +160 480 m +160 496 l +176 496 l +176 480 l +160 480 l +cs +bl +hf 8.0 sf +163.2 481.6 m (16) show +bl +176 480 m +176 496 l +192 496 l +192 480 l +176 480 l +cs +bl +hf 8.0 sf +179.2 481.6 m (16) show +128 448 m +128 480 l +160 480 l +160 448 l +128 448 l +fl +bl +128 448 m +128 480 l +160 480 l +160 448 l +128 448 l +cs +bl +160 464 m +160 480 l +176 480 l +176 464 l +160 464 l +cs +bl +hf 8.0 sf +163.2 465.6 m (16) show +bl +176 464 m +176 480 l +192 480 l +192 464 l +176 464 l +cs +bl +hf 8.0 sf +179.2 465.6 m (16) show +bl +160 448 m +160 464 l +176 464 l +176 448 l +160 448 l +cs +bl +hf 8.0 sf +163.2 449.6 m (16) show +bl +176 448 m +176 464 l +192 464 l +192 448 l +176 448 l +cs +bl +hf 8.0 sf +179.2 449.6 m (16) show +bl +192 496 m +192 512 l +208 512 l +208 496 l +192 496 l +cs +bl +hf 8.0 sf +195.2 497.6 m (16) show +208 496 m +208 512 l +224 512 l +224 496 l +208 496 l +fl +bl +208 496 m +208 512 l +224 512 l +224 496 l +208 496 l +cs +bl +192 480 m +192 496 l +208 496 l +208 480 l +192 480 l +cs +bl +hf 8.0 sf +195.2 481.6 m (16) show +bl +208 480 m +208 496 l +224 496 l +224 480 l +208 480 l +cs +bl +hf 8.0 sf +211.2 481.6 m (16) show +bl +224 496 m +224 512 l +240 512 l +240 496 l +224 496 l +cs +bl +hf 8.0 sf +227.2 497.6 m (16) show +bl +240 496 m +240 512 l +256 512 l +256 496 l +240 496 l +cs +bl +hf 8.0 sf +243.2 497.6 m (16) show +bl +224 480 m +224 496 l +240 496 l +240 480 l +224 480 l +cs +bl +hf 8.0 sf +227.2 481.6 m (16) show +bl +240 480 m +240 496 l +256 496 l +256 480 l +240 480 l +cs +bl +hf 8.0 sf +243.2 481.6 m (16) show +192 448 m +192 480 l +224 480 l +224 448 l +192 448 l +fl +bl +192 448 m +192 480 l +224 480 l +224 448 l +192 448 l +cs +bl +224 464 m +224 480 l +240 480 l +240 464 l +224 464 l +cs +bl +hf 8.0 sf +227.2 465.6 m (16) show +240 464 m +240 480 l +256 480 l +256 464 l +240 464 l +fl +bl +240 464 m +240 480 l +256 480 l +256 464 l +240 464 l +cs +bl +224 448 m +224 464 l +240 464 l +240 448 l +224 448 l +cs +bl +hf 8.0 sf +227.2 449.6 m (16) show +bl +240 448 m +240 464 l +256 464 l +256 448 l +240 448 l +cs +bl +hf 8.0 sf +243.2 449.6 m (16) show +bl +128 432 m +128 448 l +144 448 l +144 432 l +128 432 l +cs +bl +hf 8.0 sf +131.2 433.6 m (16) show +bl +144 432 m +144 448 l +160 448 l +160 432 l +144 432 l +cs +bl +hf 8.0 sf +147.2 433.6 m (16) show +128 416 m +128 432 l +144 432 l +144 416 l +128 416 l +fl +bl +128 416 m +128 432 l +144 432 l +144 416 l +128 416 l +cs +bl +144 416 m +144 432 l +160 432 l +160 416 l +144 416 l +cs +bl +hf 8.0 sf +147.2 417.6 m (16) show +bl +160 432 m +160 448 l +176 448 l +176 432 l +160 432 l +cs +bl +hf 8.0 sf +163.2 433.6 m (16) show +bl +176 432 m +176 448 l +192 448 l +192 432 l +176 432 l +cs +bl +hf 8.0 sf +179.2 433.6 m (16) show +bl +160 416 m +160 432 l +176 432 l +176 416 l +160 416 l +cs +bl +hf 8.0 sf +163.2 417.6 m (16) show +bl +176 416 m +176 432 l +192 432 l +192 416 l +176 416 l +cs +bl +hf 8.0 sf +179.2 417.6 m (16) show +128 384 m +128 416 l +160 416 l +160 384 l +128 384 l +fl +bl +128 384 m +128 416 l +160 416 l +160 384 l +128 384 l +cs +bl +160 400 m +160 416 l +176 416 l +176 400 l +160 400 l +cs +bl +hf 8.0 sf +163.2 401.6 m (16) show +bl +176 400 m +176 416 l +192 416 l +192 400 l +176 400 l +cs +bl +hf 8.0 sf +179.2 401.6 m (16) show +160 384 m +160 400 l +176 400 l +176 384 l +160 384 l +fl +bl +160 384 m +160 400 l +176 400 l +176 384 l +160 384 l +cs +bl +176 384 m +176 400 l +192 400 l +192 384 l +176 384 l +cs +bl +hf 8.0 sf +179.2 385.6 m (16) show +bl +192 432 m +192 448 l +208 448 l +208 432 l +192 432 l +cs +bl +hf 8.0 sf +195.2 433.6 m (16) show +bl +208 432 m +208 448 l +224 448 l +224 432 l +208 432 l +cs +bl +hf 8.0 sf +211.2 433.6 m (16) show +bl +192 416 m +192 432 l +208 432 l +208 416 l +192 416 l +cs +bl +hf 8.0 sf +195.2 417.6 m (16) show +bl +208 416 m +208 432 l +224 432 l +224 416 l +208 416 l +cs +bl +hf 8.0 sf +211.2 417.6 m (16) show +bl +224 432 m +224 448 l +240 448 l +240 432 l +224 432 l +cs +bl +hf 8.0 sf +227.2 433.6 m (16) show +bl +240 432 m +240 448 l +256 448 l +256 432 l +240 432 l +cs +bl +hf 8.0 sf +243.2 433.6 m (16) show +bl +224 416 m +224 432 l +240 432 l +240 416 l +224 416 l +cs +bl +hf 8.0 sf +227.2 417.6 m (16) show +bl +240 416 m +240 432 l +256 432 l +256 416 l +240 416 l +cs +bl +hf 8.0 sf +243.2 417.6 m (16) show +192 384 m +192 416 l +224 416 l +224 384 l +192 384 l +fl +bl +192 384 m +192 416 l +224 416 l +224 384 l +192 384 l +cs +bl +224 400 m +224 416 l +240 416 l +240 400 l +224 400 l +cs +bl +hf 8.0 sf +227.2 401.6 m (16) show +bl +240 400 m +240 416 l +256 416 l +256 400 l +240 400 l +cs +bl +hf 8.0 sf +243.2 401.6 m (16) show +bl +224 384 m +224 400 l +240 400 l +240 384 l +224 384 l +cs +bl +hf 8.0 sf +227.2 385.6 m (16) show +bl +240 384 m +240 400 l +256 400 l +256 384 l +240 384 l +cs +bl +hf 8.0 sf +243.2 385.6 m (16) show +0 320 m +0 384 l +128 384 l +128 320 l +0 320 l +fl +bl +0 320 m +0 384 l +128 384 l +128 320 l +0 320 l +cs +128 352 m +128 384 l +160 384 l +160 352 l +128 352 l +fl +bl +128 352 m +128 384 l +160 384 l +160 352 l +128 352 l +cs +160 352 m +160 384 l +192 384 l +192 352 l +160 352 l +fl +bl +160 352 m +160 384 l +192 384 l +192 352 l +160 352 l +cs +128 336 m +128 352 l +160 352 l +160 336 l +128 336 l +fl +bl +128 336 m +128 352 l +160 352 l +160 336 l +128 336 l +cs +160 336 m +160 352 l +192 352 l +192 336 l +160 336 l +fl +bl +160 336 m +160 352 l +192 352 l +192 336 l +160 336 l +cs +192 352 m +192 384 l +224 384 l +224 352 l +192 352 l +fl +bl +192 352 m +192 384 l +224 384 l +224 352 l +192 352 l +cs +224 352 m +224 384 l +256 384 l +256 352 l +224 352 l +fl +bl +224 352 m +224 384 l +256 384 l +256 352 l +224 352 l +cs +192 336 m +192 352 l +224 352 l +224 336 l +192 336 l +fl +bl +192 336 m +192 352 l +224 352 l +224 336 l +192 336 l +cs +224 336 m +224 352 l +256 352 l +256 336 l +224 336 l +fl +bl +224 336 m +224 352 l +256 352 l +256 336 l +224 336 l +cs +128 320 m +128 336 l +192 336 l +192 320 l +128 320 l +fl +bl +128 320 m +128 336 l +192 336 l +192 320 l +128 320 l +cs +192 320 m +192 336 l +256 336 l +256 320 l +192 320 l +fl +bl +192 320 m +192 336 l +256 336 l +256 320 l +192 320 l +cs +256 480 m +256 512 l +288 512 l +288 480 l +256 480 l +fl +bl +256 480 m +256 512 l +288 512 l +288 480 l +256 480 l +cs +288 480 m +288 512 l +320 512 l +320 480 l +288 480 l +fl +bl +288 480 m +288 512 l +320 512 l +320 480 l +288 480 l +cs +256 448 m +256 480 l +288 480 l +288 448 l +256 448 l +fl +bl +256 448 m +256 480 l +288 480 l +288 448 l +256 448 l +cs +288 448 m +288 480 l +320 480 l +320 448 l +288 448 l +fl +bl +288 448 m +288 480 l +320 480 l +320 448 l +288 448 l +cs +320 448 m +320 512 l +384 512 l +384 448 l +320 448 l +fl +bl +320 448 m +320 512 l +384 512 l +384 448 l +320 448 l +cs +256 416 m +256 448 l +288 448 l +288 416 l +256 416 l +fl +bl +256 416 m +256 448 l +288 448 l +288 416 l +256 416 l +cs +288 416 m +288 448 l +320 448 l +320 416 l +288 416 l +fl +bl +288 416 m +288 448 l +320 448 l +320 416 l +288 416 l +cs +256 384 m +256 416 l +288 416 l +288 384 l +256 384 l +fl +bl +256 384 m +256 416 l +288 416 l +288 384 l +256 384 l +cs +288 384 m +288 416 l +320 416 l +320 384 l +288 384 l +fl +bl +288 384 m +288 416 l +320 416 l +320 384 l +288 384 l +cs +320 416 m +320 448 l +352 448 l +352 416 l +320 416 l +fl +bl +320 416 m +320 448 l +352 448 l +352 416 l +320 416 l +cs +352 416 m +352 448 l +384 448 l +384 416 l +352 416 l +fl +bl +352 416 m +352 448 l +384 448 l +384 416 l +352 416 l +cs +320 384 m +320 416 l +352 416 l +352 384 l +320 384 l +fl +bl +320 384 m +320 416 l +352 416 l +352 384 l +320 384 l +cs +352 384 m +352 416 l +384 416 l +384 384 l +352 384 l +fl +bl +352 384 m +352 416 l +384 416 l +384 384 l +352 384 l +cs +384 496 m +384 512 l +400 512 l +400 496 l +384 496 l +fl +bl +384 496 m +384 512 l +400 512 l +400 496 l +384 496 l +cs +400 496 m +400 512 l +416 512 l +416 496 l +400 496 l +fl +bl +400 496 m +400 512 l +416 512 l +416 496 l +400 496 l +cs +384 480 m +384 496 l +400 496 l +400 480 l +384 480 l +fl +bl +384 480 m +384 496 l +400 496 l +400 480 l +384 480 l +cs +400 480 m +400 496 l +416 496 l +416 480 l +400 480 l +fl +bl +400 480 m +400 496 l +416 496 l +416 480 l +400 480 l +cs +416 496 m +416 512 l +432 512 l +432 496 l +416 496 l +fl +bl +416 496 m +416 512 l +432 512 l +432 496 l +416 496 l +cs +432 496 m +432 512 l +448 512 l +448 496 l +432 496 l +fl +bl +432 496 m +432 512 l +448 512 l +448 496 l +432 496 l +cs +bl +416 480 m +416 496 l +432 496 l +432 480 l +416 480 l +cs +bl +hf 8.0 sf +419.2 481.6 m (16) show +432 480 m +432 496 l +448 496 l +448 480 l +432 480 l +fl +bl +432 480 m +432 496 l +448 496 l +448 480 l +432 480 l +cs +384 448 m +384 480 l +416 480 l +416 448 l +384 448 l +fl +bl +384 448 m +384 480 l +416 480 l +416 448 l +384 448 l +cs +416 464 m +416 480 l +432 480 l +432 464 l +416 464 l +fl +bl +416 464 m +416 480 l +432 480 l +432 464 l +416 464 l +cs +432 464 m +432 480 l +448 480 l +448 464 l +432 464 l +fl +bl +432 464 m +432 480 l +448 480 l +448 464 l +432 464 l +cs +416 448 m +416 464 l +432 464 l +432 448 l +416 448 l +fl +bl +416 448 m +416 464 l +432 464 l +432 448 l +416 448 l +cs +432 448 m +432 464 l +448 464 l +448 448 l +432 448 l +fl +bl +432 448 m +432 464 l +448 464 l +448 448 l +432 448 l +cs +448 480 m +448 512 l +480 512 l +480 480 l +448 480 l +fl +bl +448 480 m +448 512 l +480 512 l +480 480 l +448 480 l +cs +480 480 m +480 512 l +512 512 l +512 480 l +480 480 l +fl +bl +480 480 m +480 512 l +512 512 l +512 480 l +480 480 l +cs +448 448 m +448 480 l +480 480 l +480 448 l +448 448 l +fl +bl +448 448 m +448 480 l +480 480 l +480 448 l +448 448 l +cs +480 448 m +480 480 l +512 480 l +512 448 l +480 448 l +fl +bl +480 448 m +480 480 l +512 480 l +512 448 l +480 448 l +cs +bl +384 432 m +384 448 l +400 448 l +400 432 l +384 432 l +cs +bl +hf 8.0 sf +387.2 433.6 m (16) show +400 432 m +400 448 l +416 448 l +416 432 l +400 432 l +fl +bl +400 432 m +400 448 l +416 448 l +416 432 l +400 432 l +cs +bl +384 416 m +384 432 l +400 432 l +400 416 l +384 416 l +cs +bl +hf 8.0 sf +387.2 417.6 m (16) show +bl +400 416 m +400 432 l +416 432 l +416 416 l +400 416 l +cs +bl +hf 8.0 sf +403.2 417.6 m (16) show +bl +416 432 m +416 448 l +432 448 l +432 432 l +416 432 l +cs +bl +hf 8.0 sf +419.2 433.6 m (16) show +bl +432 432 m +432 448 l +448 448 l +448 432 l +432 432 l +cs +bl +hf 8.0 sf +435.2 433.6 m (16) show +bl +416 416 m +416 432 l +432 432 l +432 416 l +416 416 l +cs +bl +hf 8.0 sf +419.2 417.6 m (16) show +bl +432 416 m +432 432 l +448 432 l +448 416 l +432 416 l +cs +bl +hf 8.0 sf +435.2 417.6 m (16) show +384 384 m +384 416 l +416 416 l +416 384 l +384 384 l +fl +bl +384 384 m +384 416 l +416 416 l +416 384 l +384 384 l +cs +bl +416 400 m +416 416 l +432 416 l +432 400 l +416 400 l +cs +bl +hf 8.0 sf +419.2 401.6 m (16) show +432 400 m +432 416 l +448 416 l +448 400 l +432 400 l +fl +bl +432 400 m +432 416 l +448 416 l +448 400 l +432 400 l +cs +bl +416 384 m +416 400 l +432 400 l +432 384 l +416 384 l +cs +bl +hf 8.0 sf +419.2 385.6 m (16) show +bl +432 384 m +432 400 l +448 400 l +448 384 l +432 384 l +cs +bl +hf 8.0 sf +435.2 385.6 m (16) show +448 432 m +448 448 l +464 448 l +464 432 l +448 432 l +fl +bl +448 432 m +448 448 l +464 448 l +464 432 l +448 432 l +cs +464 432 m +464 448 l +480 448 l +480 432 l +464 432 l +fl +bl +464 432 m +464 448 l +480 448 l +480 432 l +464 432 l +cs +448 416 m +448 432 l +464 432 l +464 416 l +448 416 l +fl +bl +448 416 m +448 432 l +464 432 l +464 416 l +448 416 l +cs +464 416 m +464 432 l +480 432 l +480 416 l +464 416 l +fl +bl +464 416 m +464 432 l +480 432 l +480 416 l +464 416 l +cs +480 432 m +480 448 l +496 448 l +496 432 l +480 432 l +fl +bl +480 432 m +480 448 l +496 448 l +496 432 l +480 432 l +cs +496 432 m +496 448 l +512 448 l +512 432 l +496 432 l +fl +bl +496 432 m +496 448 l +512 448 l +512 432 l +496 432 l +cs +bl +480 416 m +480 432 l +496 432 l +496 416 l +480 416 l +cs +bl +hf 8.0 sf +483.2 417.6 m (16) show +496 416 m +496 432 l +512 432 l +512 416 l +496 416 l +fl +bl +496 416 m +496 432 l +512 432 l +512 416 l +496 416 l +cs +448 384 m +448 416 l +480 416 l +480 384 l +448 384 l +fl +bl +448 384 m +448 416 l +480 416 l +480 384 l +448 384 l +cs +480 400 m +480 416 l +496 416 l +496 400 l +480 400 l +fl +bl +480 400 m +480 416 l +496 416 l +496 400 l +480 400 l +cs +496 400 m +496 416 l +512 416 l +512 400 l +496 400 l +fl +bl +496 400 m +496 416 l +512 416 l +512 400 l +496 400 l +cs +480 384 m +480 400 l +496 400 l +496 384 l +480 384 l +fl +bl +480 384 m +480 400 l +496 400 l +496 384 l +480 384 l +cs +496 384 m +496 400 l +512 400 l +512 384 l +496 384 l +fl +bl +496 384 m +496 400 l +512 400 l +512 384 l +496 384 l +cs +256 320 m +256 384 l +384 384 l +384 320 l +256 320 l +fl +bl +256 320 m +256 384 l +384 384 l +384 320 l +256 320 l +cs +384 352 m +384 384 l +416 384 l +416 352 l +384 352 l +fl +bl +384 352 m +384 384 l +416 384 l +416 352 l +384 352 l +cs +416 352 m +416 384 l +448 384 l +448 352 l +416 352 l +fl +bl +416 352 m +416 384 l +448 384 l +448 352 l +416 352 l +cs +384 336 m +384 352 l +416 352 l +416 336 l +384 336 l +fl +bl +384 336 m +384 352 l +416 352 l +416 336 l +384 336 l +cs +416 336 m +416 352 l +448 352 l +448 336 l +416 336 l +fl +bl +416 336 m +416 352 l +448 352 l +448 336 l +416 336 l +cs +448 336 m +448 384 l +512 384 l +512 336 l +448 336 l +fl +bl +448 336 m +448 384 l +512 384 l +512 336 l +448 336 l +cs +384 320 m +384 336 l +448 336 l +448 320 l +384 320 l +fl +bl +384 320 m +384 336 l +448 336 l +448 320 l +384 320 l +cs +448 320 m +448 336 l +512 336 l +512 320 l +448 320 l +fl +bl +448 320 m +448 336 l +512 336 l +512 320 l +448 320 l +cs +0 288 m +0 320 l +64 320 l +64 288 l +0 288 l +fl +bl +0 288 m +0 320 l +64 320 l +64 288 l +0 288 l +cs +64 288 m +64 320 l +128 320 l +128 288 l +64 288 l +fl +bl +64 288 m +64 320 l +128 320 l +128 288 l +64 288 l +cs +0 272 m +0 288 l +64 288 l +64 272 l +0 272 l +fl +bl +0 272 m +0 288 l +64 288 l +64 272 l +0 272 l +cs +64 272 m +64 288 l +128 288 l +128 272 l +64 272 l +fl +bl +64 272 m +64 288 l +128 288 l +128 272 l +64 272 l +cs +128 304 m +128 320 l +160 320 l +160 304 l +128 304 l +fl +bl +128 304 m +128 320 l +160 320 l +160 304 l +128 304 l +cs +bl +160 304 m +160 320 l +192 320 l +192 304 l +160 304 l +cs +bl +hf 8.0 sf +166.4 305.6 m (16) show +128 288 m +128 304 l +160 304 l +160 288 l +128 288 l +fl +bl +128 288 m +128 304 l +160 304 l +160 288 l +128 288 l +cs +160 288 m +160 304 l +192 304 l +192 288 l +160 288 l +fl +bl +160 288 m +160 304 l +192 304 l +192 288 l +160 288 l +cs +bl +192 304 m +192 320 l +224 320 l +224 304 l +192 304 l +cs +bl +hf 8.0 sf +198.4 305.6 m (16) show +bl +224 304 m +224 320 l +256 320 l +256 304 l +224 304 l +cs +bl +hf 8.0 sf +230.4 305.6 m (16) show +bl +192 288 m +192 304 l +224 304 l +224 288 l +192 288 l +cs +bl +hf 8.0 sf +198.4 289.6 m (16) show +bl +224 288 m +224 304 l +256 304 l +256 288 l +224 288 l +cs +bl +hf 8.0 sf +230.4 289.6 m (16) show +bl +128 272 m +128 288 l +192 288 l +192 272 l +128 272 l +cs +bl +hf 8.0 sf +140.8 273.6 m (16) show +bl +192 272 m +192 288 l +256 288 l +256 272 l +192 272 l +cs +bl +hf 8.0 sf +204.8 273.6 m (16) show +0 256 m +0 272 l +128 272 l +128 256 l +0 256 l +fl +bl +0 256 m +0 272 l +128 272 l +128 256 l +0 256 l +cs +bl +128 256 m +128 272 l +256 272 l +256 256 l +128 256 l +cs +bl +hf 8.0 sf +153.6 257.6 m (16) show +256 288 m +256 320 l +320 320 l +320 288 l +256 288 l +fl +bl +256 288 m +256 320 l +320 320 l +320 288 l +256 288 l +cs +320 288 m +320 320 l +384 320 l +384 288 l +320 288 l +fl +bl +320 288 m +320 320 l +384 320 l +384 288 l +320 288 l +cs +256 272 m +256 288 l +320 288 l +320 272 l +256 272 l +fl +bl +256 272 m +256 288 l +320 288 l +320 272 l +256 272 l +cs +320 272 m +320 288 l +384 288 l +384 272 l +320 272 l +fl +bl +320 272 m +320 288 l +384 288 l +384 272 l +320 272 l +cs +bl +384 304 m +384 320 l +416 320 l +416 304 l +384 304 l +cs +bl +hf 8.0 sf +390.4 305.6 m (16) show +bl +416 304 m +416 320 l +448 320 l +448 304 l +416 304 l +cs +bl +hf 8.0 sf +422.4 305.6 m (16) show +bl +384 288 m +384 304 l +416 304 l +416 288 l +384 288 l +cs +bl +hf 8.0 sf +390.4 289.6 m (16) show +bl +416 288 m +416 304 l +448 304 l +448 288 l +416 288 l +cs +bl +hf 8.0 sf +422.4 289.6 m (16) show +bl +448 304 m +448 320 l +480 320 l +480 304 l +448 304 l +cs +bl +hf 8.0 sf +454.4 305.6 m (16) show +bl +480 304 m +480 320 l +512 320 l +512 304 l +480 304 l +cs +bl +hf 8.0 sf +486.4 305.6 m (16) show +bl +448 288 m +448 304 l +480 304 l +480 288 l +448 288 l +cs +bl +hf 8.0 sf +454.4 289.6 m (16) show +bl +480 288 m +480 304 l +512 304 l +512 288 l +480 288 l +cs +bl +hf 8.0 sf +486.4 289.6 m (16) show +bl +384 272 m +384 288 l +448 288 l +448 272 l +384 272 l +cs +bl +hf 8.0 sf +396.8 273.6 m (16) show +bl +448 272 m +448 288 l +512 288 l +512 272 l +448 272 l +cs +bl +hf 8.0 sf +460.8 273.6 m (16) show +256 256 m +256 272 l +384 272 l +384 256 l +256 256 l +fl +bl +256 256 m +256 272 l +384 272 l +384 256 l +256 256 l +cs +bl +384 256 m +384 272 l +512 272 l +512 256 l +384 256 l +cs +bl +hf 8.0 sf +409.6 257.6 m (16) show +bl +512 496 m +512 512 l +528 512 l +528 496 l +512 496 l +cs +bl +hf 8.0 sf +515.2 497.6 m (16) show +bl +528 496 m +528 512 l +544 512 l +544 496 l +528 496 l +cs +bl +hf 8.0 sf +531.2 497.6 m (16) show +bl +512 480 m +512 496 l +528 496 l +528 480 l +512 480 l +cs +bl +hf 8.0 sf +515.2 481.6 m (16) show +bl +528 480 m +528 496 l +544 496 l +544 480 l +528 480 l +cs +bl +hf 8.0 sf +531.2 481.6 m (16) show +bl +544 496 m +544 512 l +560 512 l +560 496 l +544 496 l +cs +bl +hf 8.0 sf +547.2 497.6 m (16) show +bl +560 496 m +560 512 l +576 512 l +576 496 l +560 496 l +cs +bl +hf 8.0 sf +563.2 497.6 m (16) show +bl +544 480 m +544 496 l +560 496 l +560 480 l +544 480 l +cs +bl +hf 8.0 sf +547.2 481.6 m (16) show +bl +560 480 m +560 496 l +576 496 l +576 480 l +560 480 l +cs +bl +hf 8.0 sf +563.2 481.6 m (16) show +bl +512 464 m +512 480 l +528 480 l +528 464 l +512 464 l +cs +bl +hf 8.0 sf +515.2 465.6 m (16) show +bl +528 464 m +528 480 l +544 480 l +544 464 l +528 464 l +cs +bl +hf 8.0 sf +531.2 465.6 m (16) show +bl +512 448 m +512 464 l +528 464 l +528 448 l +512 448 l +cs +bl +hf 8.0 sf +515.2 449.6 m (16) show +bl +528 448 m +528 464 l +544 464 l +544 448 l +528 448 l +cs +bl +hf 8.0 sf +531.2 449.6 m (16) show +bl +544 464 m +544 480 l +560 480 l +560 464 l +544 464 l +cs +bl +hf 8.0 sf +547.2 465.6 m (16) show +bl +560 464 m +560 480 l +576 480 l +576 464 l +560 464 l +cs +bl +hf 8.0 sf +563.2 465.6 m (16) show +bl +544 448 m +544 464 l +560 464 l +560 448 l +544 448 l +cs +bl +hf 8.0 sf +547.2 449.6 m (16) show +bl +560 448 m +560 464 l +576 464 l +576 448 l +560 448 l +cs +bl +hf 8.0 sf +563.2 449.6 m (16) show +bl +576 496 m +576 512 l +592 512 l +592 496 l +576 496 l +cs +bl +hf 8.0 sf +579.2 497.6 m (16) show +bl +592 496 m +592 512 l +608 512 l +608 496 l +592 496 l +cs +bl +hf 8.0 sf +595.2 497.6 m (16) show +bl +576 480 m +576 496 l +592 496 l +592 480 l +576 480 l +cs +bl +hf 8.0 sf +579.2 481.6 m (16) show +bl +592 480 m +592 496 l +608 496 l +608 480 l +592 480 l +cs +bl +hf 8.0 sf +595.2 481.6 m (16) show +bl +608 496 m +608 512 l +624 512 l +624 496 l +608 496 l +cs +bl +hf 8.0 sf +611.2 497.6 m (16) show +bl +624 496 m +624 512 l +640 512 l +640 496 l +624 496 l +cs +bl +hf 8.0 sf +627.2 497.6 m (16) show +bl +608 480 m +608 496 l +624 496 l +624 480 l +608 480 l +cs +bl +hf 8.0 sf +611.2 481.6 m (16) show +bl +624 480 m +624 496 l +640 496 l +640 480 l +624 480 l +cs +bl +hf 8.0 sf +627.2 481.6 m (16) show +bl +576 464 m +576 480 l +592 480 l +592 464 l +576 464 l +cs +bl +hf 8.0 sf +579.2 465.6 m (16) show +bl +592 464 m +592 480 l +608 480 l +608 464 l +592 464 l +cs +bl +hf 8.0 sf +595.2 465.6 m (16) show +bl +576 448 m +576 464 l +592 464 l +592 448 l +576 448 l +cs +bl +hf 8.0 sf +579.2 449.6 m (16) show +bl +592 448 m +592 464 l +608 464 l +608 448 l +592 448 l +cs +bl +hf 8.0 sf +595.2 449.6 m (16) show +bl +608 464 m +608 480 l +624 480 l +624 464 l +608 464 l +cs +bl +hf 8.0 sf +611.2 465.6 m (16) show +bl +624 464 m +624 480 l +640 480 l +640 464 l +624 464 l +cs +bl +hf 8.0 sf +627.2 465.6 m (16) show +bl +608 448 m +608 464 l +624 464 l +624 448 l +608 448 l +cs +bl +hf 8.0 sf +611.2 449.6 m (16) show +bl +624 448 m +624 464 l +640 464 l +640 448 l +624 448 l +cs +bl +hf 8.0 sf +627.2 449.6 m (16) show +bl +512 432 m +512 448 l +528 448 l +528 432 l +512 432 l +cs +bl +hf 8.0 sf +515.2 433.6 m (16) show +bl +528 432 m +528 448 l +544 448 l +544 432 l +528 432 l +cs +bl +hf 8.0 sf +531.2 433.6 m (16) show +bl +512 416 m +512 432 l +528 432 l +528 416 l +512 416 l +cs +bl +hf 8.0 sf +515.2 417.6 m (16) show +bl +528 416 m +528 432 l +544 432 l +544 416 l +528 416 l +cs +bl +hf 8.0 sf +531.2 417.6 m (16) show +bl +544 432 m +544 448 l +560 448 l +560 432 l +544 432 l +cs +bl +hf 8.0 sf +547.2 433.6 m (16) show +bl +560 432 m +560 448 l +576 448 l +576 432 l +560 432 l +cs +bl +hf 8.0 sf +563.2 433.6 m (16) show +bl +544 416 m +544 432 l +560 432 l +560 416 l +544 416 l +cs +bl +hf 8.0 sf +547.2 417.6 m (16) show +bl +560 416 m +560 432 l +576 432 l +576 416 l +560 416 l +cs +bl +hf 8.0 sf +563.2 417.6 m (16) show +bl +512 400 m +512 416 l +528 416 l +528 400 l +512 400 l +cs +bl +hf 8.0 sf +515.2 401.6 m (16) show +bl +528 400 m +528 416 l +544 416 l +544 400 l +528 400 l +cs +bl +hf 8.0 sf +531.2 401.6 m (16) show +bl +512 384 m +512 400 l +528 400 l +528 384 l +512 384 l +cs +bl +hf 8.0 sf +515.2 385.6 m (16) show +bl +528 384 m +528 400 l +544 400 l +544 384 l +528 384 l +cs +bl +hf 8.0 sf +531.2 385.6 m (16) show +bl +544 400 m +544 416 l +560 416 l +560 400 l +544 400 l +cs +bl +hf 8.0 sf +547.2 401.6 m (16) show +bl +560 400 m +560 416 l +576 416 l +576 400 l +560 400 l +cs +bl +hf 8.0 sf +563.2 401.6 m (16) show +bl +544 384 m +544 400 l +560 400 l +560 384 l +544 384 l +cs +bl +hf 8.0 sf +547.2 385.6 m (16) show +bl +560 384 m +560 400 l +576 400 l +576 384 l +560 384 l +cs +bl +hf 8.0 sf +563.2 385.6 m (16) show +bl +576 432 m +576 448 l +592 448 l +592 432 l +576 432 l +cs +bl +hf 8.0 sf +579.2 433.6 m (16) show +bl +592 432 m +592 448 l +608 448 l +608 432 l +592 432 l +cs +bl +hf 8.0 sf +595.2 433.6 m (16) show +bl +576 416 m +576 432 l +592 432 l +592 416 l +576 416 l +cs +bl +hf 8.0 sf +579.2 417.6 m (16) show +bl +592 416 m +592 432 l +608 432 l +608 416 l +592 416 l +cs +bl +hf 8.0 sf +595.2 417.6 m (16) show +bl +608 432 m +608 448 l +624 448 l +624 432 l +608 432 l +cs +bl +hf 8.0 sf +611.2 433.6 m (16) show +bl +624 432 m +624 448 l +640 448 l +640 432 l +624 432 l +cs +bl +hf 8.0 sf +627.2 433.6 m (16) show +bl +608 416 m +608 432 l +624 432 l +624 416 l +608 416 l +cs +bl +hf 8.0 sf +611.2 417.6 m (16) show +bl +624 416 m +624 432 l +640 432 l +640 416 l +624 416 l +cs +bl +hf 8.0 sf +627.2 417.6 m (16) show +bl +576 400 m +576 416 l +592 416 l +592 400 l +576 400 l +cs +bl +hf 8.0 sf +579.2 401.6 m (16) show +bl +592 400 m +592 416 l +608 416 l +608 400 l +592 400 l +cs +bl +hf 8.0 sf +595.2 401.6 m (16) show +bl +576 384 m +576 400 l +592 400 l +592 384 l +576 384 l +cs +bl +hf 8.0 sf +579.2 385.6 m (16) show +bl +592 384 m +592 400 l +608 400 l +608 384 l +592 384 l +cs +bl +hf 8.0 sf +595.2 385.6 m (16) show +bl +608 400 m +608 416 l +624 416 l +624 400 l +608 400 l +cs +bl +hf 8.0 sf +611.2 401.6 m (16) show +bl +624 400 m +624 416 l +640 416 l +640 400 l +624 400 l +cs +bl +hf 8.0 sf +627.2 401.6 m (16) show +bl +608 384 m +608 400 l +624 400 l +624 384 l +608 384 l +cs +bl +hf 8.0 sf +611.2 385.6 m (16) show +bl +624 384 m +624 400 l +640 400 l +640 384 l +624 384 l +cs +bl +hf 8.0 sf +627.2 385.6 m (16) show +bl +640 496 m +640 512 l +656 512 l +656 496 l +640 496 l +cs +bl +hf 8.0 sf +643.2 497.6 m (16) show +bl +656 496 m +656 512 l +672 512 l +672 496 l +656 496 l +cs +bl +hf 8.0 sf +659.2 497.6 m (16) show +bl +640 480 m +640 496 l +656 496 l +656 480 l +640 480 l +cs +bl +hf 8.0 sf +643.2 481.6 m (16) show +bl +656 480 m +656 496 l +672 496 l +672 480 l +656 480 l +cs +bl +hf 8.0 sf +659.2 481.6 m (16) show +672 480 m +672 512 l +688 512 l +688 480 l +672 480 l +fl +bl +672 480 m +672 512 l +688 512 l +688 480 l +672 480 l +cs +bl +640 464 m +640 480 l +656 480 l +656 464 l +640 464 l +cs +bl +hf 8.0 sf +643.2 465.6 m (16) show +bl +656 464 m +656 480 l +672 480 l +672 464 l +656 464 l +cs +bl +hf 8.0 sf +659.2 465.6 m (16) show +bl +640 448 m +640 464 l +656 464 l +656 448 l +640 448 l +cs +bl +hf 8.0 sf +643.2 449.6 m (16) show +bl +656 448 m +656 464 l +672 464 l +672 448 l +656 448 l +cs +bl +hf 8.0 sf +659.2 449.6 m (16) show +bl +672 448 m +672 480 l +688 480 l +688 448 l +672 448 l +cs +bl +hf 8.0 sf +675.2 451.2 m (16) show +bl +688 448 m +688 512 l +704 512 l +704 448 l +688 448 l +cs +bl +hf 8.0 sf +691.2 454.4 m (16) show +bl +640 432 m +640 448 l +656 448 l +656 432 l +640 432 l +cs +bl +hf 8.0 sf +643.2 433.6 m (16) show +bl +656 432 m +656 448 l +672 448 l +672 432 l +656 432 l +cs +bl +hf 8.0 sf +659.2 433.6 m (16) show +640 416 m +640 432 l +656 432 l +656 416 l +640 416 l +fl +bl +640 416 m +640 432 l +656 432 l +656 416 l +640 416 l +cs +bl +656 416 m +656 432 l +672 432 l +672 416 l +656 416 l +cs +bl +hf 8.0 sf +659.2 417.6 m (16) show +672 416 m +672 448 l +688 448 l +688 416 l +672 416 l +fl +bl +672 416 m +672 448 l +688 448 l +688 416 l +672 416 l +cs +bl +640 400 m +640 416 l +656 416 l +656 400 l +640 400 l +cs +bl +hf 8.0 sf +643.2 401.6 m (16) show +bl +656 400 m +656 416 l +672 416 l +672 400 l +656 400 l +cs +bl +hf 8.0 sf +659.2 401.6 m (16) show +bl +640 384 m +640 400 l +656 400 l +656 384 l +640 384 l +cs +bl +hf 8.0 sf +643.2 385.6 m (16) show +bl +656 384 m +656 400 l +672 400 l +672 384 l +656 384 l +cs +bl +hf 8.0 sf +659.2 385.6 m (16) show +bl +672 384 m +672 416 l +688 416 l +688 384 l +672 384 l +cs +bl +hf 8.0 sf +675.2 387.2 m (16) show +bl +688 384 m +688 448 l +704 448 l +704 384 l +688 384 l +cs +bl +hf 8.0 sf +691.2 390.4 m (16) show +bl +512 368 m +512 384 l +528 384 l +528 368 l +512 368 l +cs +bl +hf 8.0 sf +515.2 369.6 m (16) show +bl +528 368 m +528 384 l +544 384 l +544 368 l +528 368 l +cs +bl +hf 8.0 sf +531.2 369.6 m (16) show +bl +512 352 m +512 368 l +528 368 l +528 352 l +512 352 l +cs +bl +hf 8.0 sf +515.2 353.6 m (16) show +bl +528 352 m +528 368 l +544 368 l +544 352 l +528 352 l +cs +bl +hf 8.0 sf +531.2 353.6 m (16) show +bl +544 368 m +544 384 l +560 384 l +560 368 l +544 368 l +cs +bl +hf 8.0 sf +547.2 369.6 m (16) show +bl +560 368 m +560 384 l +576 384 l +576 368 l +560 368 l +cs +bl +hf 8.0 sf +563.2 369.6 m (16) show +bl +544 352 m +544 368 l +560 368 l +560 352 l +544 352 l +cs +bl +hf 8.0 sf +547.2 353.6 m (16) show +bl +560 352 m +560 368 l +576 368 l +576 352 l +560 352 l +cs +bl +hf 8.0 sf +563.2 353.6 m (16) show +512 336 m +512 352 l +544 352 l +544 336 l +512 336 l +fl +bl +512 336 m +512 352 l +544 352 l +544 336 l +512 336 l +cs +bl +544 336 m +544 352 l +576 352 l +576 336 l +544 336 l +cs +bl +hf 8.0 sf +550.4 337.6 m (16) show +bl +576 368 m +576 384 l +592 384 l +592 368 l +576 368 l +cs +bl +hf 8.0 sf +579.2 369.6 m (16) show +592 368 m +592 384 l +608 384 l +608 368 l +592 368 l +fl +bl +592 368 m +592 384 l +608 384 l +608 368 l +592 368 l +cs +bl +576 352 m +576 368 l +592 368 l +592 352 l +576 352 l +cs +bl +hf 8.0 sf +579.2 353.6 m (16) show +bl +592 352 m +592 368 l +608 368 l +608 352 l +592 352 l +cs +bl +hf 8.0 sf +595.2 353.6 m (16) show +bl +608 368 m +608 384 l +624 384 l +624 368 l +608 368 l +cs +bl +hf 8.0 sf +611.2 369.6 m (16) show +bl +624 368 m +624 384 l +640 384 l +640 368 l +624 368 l +cs +bl +hf 8.0 sf +627.2 369.6 m (16) show +bl +608 352 m +608 368 l +624 368 l +624 352 l +608 352 l +cs +bl +hf 8.0 sf +611.2 353.6 m (16) show +bl +624 352 m +624 368 l +640 368 l +640 352 l +624 352 l +cs +bl +hf 8.0 sf +627.2 353.6 m (16) show +576 336 m +576 352 l +608 352 l +608 336 l +576 336 l +fl +bl +576 336 m +576 352 l +608 352 l +608 336 l +576 336 l +cs +bl +608 336 m +608 352 l +640 352 l +640 336 l +608 336 l +cs +bl +hf 8.0 sf +614.4 337.6 m (16) show +bl +512 320 m +512 336 l +576 336 l +576 320 l +512 320 l +cs +bl +hf 8.0 sf +524.8 321.6 m (16) show +bl +576 320 m +576 336 l +640 336 l +640 320 l +576 320 l +cs +bl +hf 8.0 sf +588.8 321.6 m (16) show +bl +640 368 m +640 384 l +656 384 l +656 368 l +640 368 l +cs +bl +hf 8.0 sf +643.2 369.6 m (16) show +bl +656 368 m +656 384 l +672 384 l +672 368 l +656 368 l +cs +bl +hf 8.0 sf +659.2 369.6 m (16) show +bl +640 352 m +640 368 l +656 368 l +656 352 l +640 352 l +cs +bl +hf 8.0 sf +643.2 353.6 m (16) show +bl +656 352 m +656 368 l +672 368 l +672 352 l +656 352 l +cs +bl +hf 8.0 sf +659.2 353.6 m (16) show +bl +672 352 m +672 384 l +688 384 l +688 352 l +672 352 l +cs +bl +hf 8.0 sf +675.2 355.2 m (16) show +bl +640 336 m +640 352 l +672 352 l +672 336 l +640 336 l +cs +bl +hf 8.0 sf +646.4 337.6 m (16) show +bl +672 336 m +672 352 l +688 352 l +688 336 l +672 336 l +cs +bl +hf 8.0 sf +675.2 337.6 m (16) show +bl +688 336 m +688 384 l +704 384 l +704 336 l +688 336 l +cs +bl +hf 8.0 sf +691.2 340.8 m (16) show +bl +640 320 m +640 336 l +688 336 l +688 320 l +640 320 l +cs +bl +hf 8.0 sf +649.6 321.6 m (16) show +bl +688 320 m +688 336 l +704 336 l +704 320 l +688 320 l +cs +bl +hf 8.0 sf +691.2 321.6 m (16) show +bl +704 480 m +704 512 l +720 512 l +720 480 l +704 480 l +cs +bl +hf 8.0 sf +707.2 483.2 m (16) show +720 480 m +720 512 l +736 512 l +736 480 l +720 480 l +fl +bl +720 480 m +720 512 l +736 512 l +736 480 l +720 480 l +cs +bl +704 448 m +704 480 l +720 480 l +720 448 l +704 448 l +cs +bl +hf 8.0 sf +707.2 451.2 m (16) show +720 448 m +720 480 l +736 480 l +736 448 l +720 448 l +fl +bl +720 448 m +720 480 l +736 480 l +736 448 l +720 448 l +cs +bl +736 448 m +736 512 l +752 512 l +752 448 l +736 448 l +cs +bl +hf 8.0 sf +739.2 454.4 m (16) show +bl +704 416 m +704 448 l +720 448 l +720 416 l +704 416 l +cs +bl +hf 8.0 sf +707.2 419.2 m (16) show +bl +720 416 m +720 448 l +736 448 l +736 416 l +720 416 l +cs +bl +hf 8.0 sf +723.2 419.2 m (16) show +bl +704 384 m +704 416 l +720 416 l +720 384 l +704 384 l +cs +bl +hf 8.0 sf +707.2 387.2 m (16) show +bl +720 384 m +720 416 l +736 416 l +736 384 l +720 384 l +cs +bl +hf 8.0 sf +723.2 387.2 m (16) show +bl +736 384 m +736 448 l +752 448 l +752 384 l +736 384 l +cs +bl +hf 8.0 sf +739.2 390.4 m (16) show +bl +752 384 m +752 512 l +768 512 l +768 384 l +752 384 l +cs +bl +hf 8.0 sf +755.2 396.8 m (16) show +704 352 m +704 384 l +720 384 l +720 352 l +704 352 l +fl +bl +704 352 m +704 384 l +720 384 l +720 352 l +704 352 l +cs +720 352 m +720 384 l +736 384 l +736 352 l +720 352 l +fl +bl +720 352 m +720 384 l +736 384 l +736 352 l +720 352 l +cs +704 336 m +704 352 l +720 352 l +720 336 l +704 336 l +fl +bl +704 336 m +704 352 l +720 352 l +720 336 l +704 336 l +cs +720 336 m +720 352 l +736 352 l +736 336 l +720 336 l +fl +bl +720 336 m +720 352 l +736 352 l +736 336 l +720 336 l +cs +bl +736 336 m +736 384 l +752 384 l +752 336 l +736 336 l +cs +bl +hf 8.0 sf +739.2 340.8 m (16) show +bl +704 320 m +704 336 l +736 336 l +736 320 l +704 320 l +cs +bl +hf 8.0 sf +710.4 321.6 m (16) show +bl +736 320 m +736 336 l +752 336 l +752 320 l +736 320 l +cs +bl +hf 8.0 sf +739.2 321.6 m (16) show +bl +752 320 m +752 384 l +768 384 l +768 320 l +752 320 l +cs +bl +hf 8.0 sf +755.2 326.4 m (16) show +bl +512 304 m +512 320 l +544 320 l +544 304 l +512 304 l +cs +bl +hf 8.0 sf +518.4 305.6 m (16) show +bl +544 304 m +544 320 l +576 320 l +576 304 l +544 304 l +cs +bl +hf 8.0 sf +550.4 305.6 m (16) show +512 288 m +512 304 l +544 304 l +544 288 l +512 288 l +fl +bl +512 288 m +512 304 l +544 304 l +544 288 l +512 288 l +cs +544 288 m +544 304 l +576 304 l +576 288 l +544 288 l +fl +bl +544 288 m +544 304 l +576 304 l +576 288 l +544 288 l +cs +bl +576 304 m +576 320 l +608 320 l +608 304 l +576 304 l +cs +bl +hf 8.0 sf +582.4 305.6 m (16) show +bl +608 304 m +608 320 l +640 320 l +640 304 l +608 304 l +cs +bl +hf 8.0 sf +614.4 305.6 m (16) show +bl +576 288 m +576 304 l +608 304 l +608 288 l +576 288 l +cs +bl +hf 8.0 sf +582.4 289.6 m (16) show +bl +608 288 m +608 304 l +640 304 l +640 288 l +608 288 l +cs +bl +hf 8.0 sf +614.4 289.6 m (16) show +bl +512 272 m +512 288 l +576 288 l +576 272 l +512 272 l +cs +bl +hf 8.0 sf +524.8 273.6 m (16) show +bl +576 272 m +576 288 l +640 288 l +640 272 l +576 272 l +cs +bl +hf 8.0 sf +588.8 273.6 m (16) show +640 304 m +640 320 l +672 320 l +672 304 l +640 304 l +fl +bl +640 304 m +640 320 l +672 320 l +672 304 l +640 304 l +cs +672 304 m +672 320 l +688 320 l +688 304 l +672 304 l +fl +bl +672 304 m +672 320 l +688 320 l +688 304 l +672 304 l +cs +640 288 m +640 304 l +672 304 l +672 288 l +640 288 l +fl +bl +640 288 m +640 304 l +672 304 l +672 288 l +640 288 l +cs +672 288 m +672 304 l +688 304 l +688 288 l +672 288 l +fl +bl +672 288 m +672 304 l +688 304 l +688 288 l +672 288 l +cs +bl +688 288 m +688 320 l +704 320 l +704 288 l +688 288 l +cs +bl +hf 8.0 sf +691.2 291.2 m (16) show +bl +640 272 m +640 288 l +688 288 l +688 272 l +640 272 l +cs +bl +hf 8.0 sf +649.6 273.6 m (16) show +bl +688 272 m +688 288 l +704 288 l +704 272 l +688 272 l +cs +bl +hf 8.0 sf +691.2 273.6 m (16) show +bl +512 256 m +512 272 l +640 272 l +640 256 l +512 256 l +cs +bl +hf 8.0 sf +537.6 257.6 m (16) show +bl +640 256 m +640 272 l +704 272 l +704 256 l +640 256 l +cs +bl +hf 8.0 sf +652.8 257.6 m (16) show +bl +704 304 m +704 320 l +720 320 l +720 304 l +704 304 l +cs +bl +hf 8.0 sf +707.2 305.6 m (16) show +bl +720 304 m +720 320 l +736 320 l +736 304 l +720 304 l +cs +bl +hf 8.0 sf +723.2 305.6 m (16) show +bl +704 288 m +704 304 l +720 304 l +720 288 l +704 288 l +cs +bl +hf 8.0 sf +707.2 289.6 m (16) show +bl +720 288 m +720 304 l +736 304 l +736 288 l +720 288 l +cs +bl +hf 8.0 sf +723.2 289.6 m (16) show +bl +736 288 m +736 320 l +752 320 l +752 288 l +736 288 l +cs +bl +hf 8.0 sf +739.2 291.2 m (16) show +bl +704 272 m +704 288 l +736 288 l +736 272 l +704 272 l +cs +bl +hf 8.0 sf +710.4 273.6 m (16) show +bl +736 272 m +736 288 l +752 288 l +752 272 l +736 272 l +cs +bl +hf 8.0 sf +739.2 273.6 m (16) show +bl +752 272 m +752 320 l +768 320 l +768 272 l +752 272 l +cs +bl +hf 8.0 sf +755.2 276.8 m (16) show +bl +704 256 m +704 272 l +752 272 l +752 256 l +704 256 l +cs +bl +hf 8.0 sf +713.6 257.6 m (16) show +bl +752 256 m +752 272 l +768 272 l +768 256 l +752 256 l +cs +bl +hf 8.0 sf +755.2 257.6 m (16) show +768 960 m +768 1024 l +800 1024 l +800 960 l +768 960 l +fl +bl +768 960 m +768 1024 l +800 1024 l +800 960 l +768 960 l +cs +800 960 m +800 1024 l +832 1024 l +832 960 l +800 960 l +fl +bl +800 960 m +800 1024 l +832 1024 l +832 960 l +800 960 l +cs +768 896 m +768 960 l +800 960 l +800 896 l +768 896 l +fl +bl +768 896 m +768 960 l +800 960 l +800 896 l +768 896 l +cs +800 896 m +800 960 l +832 960 l +832 896 l +800 896 l +fl +bl +800 896 m +800 960 l +832 960 l +832 896 l +800 896 l +cs +832 896 m +832 1024 l +896 1024 l +896 896 l +832 896 l +fl +bl +832 896 m +832 1024 l +896 1024 l +896 896 l +832 896 l +cs +768 832 m +768 896 l +800 896 l +800 832 l +768 832 l +fl +bl +768 832 m +768 896 l +800 896 l +800 832 l +768 832 l +cs +800 832 m +800 896 l +832 896 l +832 832 l +800 832 l +fl +bl +800 832 m +800 896 l +832 896 l +832 832 l +800 832 l +cs +768 768 m +768 832 l +800 832 l +800 768 l +768 768 l +fl +bl +768 768 m +768 832 l +800 832 l +800 768 l +768 768 l +cs +800 768 m +800 832 l +832 832 l +832 768 l +800 768 l +fl +bl +800 768 m +800 832 l +832 832 l +832 768 l +800 768 l +cs +832 768 m +832 896 l +896 896 l +896 768 l +832 768 l +fl +bl +832 768 m +832 896 l +896 896 l +896 768 l +832 768 l +cs +896 960 m +896 1024 l +928 1024 l +928 960 l +896 960 l +fl +bl +896 960 m +896 1024 l +928 1024 l +928 960 l +896 960 l +cs +928 960 m +928 1024 l +944 1024 l +944 960 l +928 960 l +fl +bl +928 960 m +928 1024 l +944 1024 l +944 960 l +928 960 l +cs +896 896 m +896 960 l +928 960 l +928 896 l +896 896 l +fl +bl +896 896 m +896 960 l +928 960 l +928 896 l +896 896 l +cs +928 896 m +928 960 l +944 960 l +944 896 l +928 896 l +fl +bl +928 896 m +928 960 l +944 960 l +944 896 l +928 896 l +cs +944 896 m +944 1024 l +960 1024 l +960 896 l +944 896 l +fl +bl +944 896 m +944 1024 l +960 1024 l +960 896 l +944 896 l +cs +896 832 m +896 896 l +928 896 l +928 832 l +896 832 l +fl +bl +896 832 m +896 896 l +928 896 l +928 832 l +896 832 l +cs +928 832 m +928 896 l +944 896 l +944 832 l +928 832 l +fl +bl +928 832 m +928 896 l +944 896 l +944 832 l +928 832 l +cs +896 768 m +896 832 l +928 832 l +928 768 l +896 768 l +fl +bl +896 768 m +896 832 l +928 832 l +928 768 l +896 768 l +cs +928 768 m +928 832 l +944 832 l +944 768 l +928 768 l +fl +bl +928 768 m +928 832 l +944 832 l +944 768 l +928 768 l +cs +944 768 m +944 896 l +960 896 l +960 768 l +944 768 l +fl +bl +944 768 m +944 896 l +960 896 l +960 768 l +944 768 l +cs +bl +768 736 m +768 768 l +784 768 l +784 736 l +768 736 l +cs +bl +hf 8.0 sf +771.2 739.2 m (16) show +784 736 m +784 768 l +800 768 l +800 736 l +784 736 l +fl +bl +784 736 m +784 768 l +800 768 l +800 736 l +784 736 l +cs +bl +768 704 m +768 736 l +784 736 l +784 704 l +768 704 l +cs +bl +hf 8.0 sf +771.2 707.2 m (16) show +784 704 m +784 736 l +800 736 l +800 704 l +784 704 l +fl +bl +784 704 m +784 736 l +800 736 l +800 704 l +784 704 l +cs +bl +800 736 m +800 768 l +816 768 l +816 736 l +800 736 l +cs +bl +hf 8.0 sf +803.2 739.2 m (16) show +816 736 m +816 768 l +832 768 l +832 736 l +816 736 l +fl +bl +816 736 m +816 768 l +832 768 l +832 736 l +816 736 l +cs +bl +800 704 m +800 736 l +816 736 l +816 704 l +800 704 l +cs +bl +hf 8.0 sf +803.2 707.2 m (16) show +816 704 m +816 736 l +832 736 l +832 704 l +816 704 l +fl +bl +816 704 m +816 736 l +832 736 l +832 704 l +816 704 l +cs +bl +768 672 m +768 704 l +784 704 l +784 672 l +768 672 l +cs +bl +hf 8.0 sf +771.2 675.2 m (16) show +bl +784 672 m +784 704 l +800 704 l +800 672 l +784 672 l +cs +bl +hf 8.0 sf +787.2 675.2 m (16) show +bl +768 640 m +768 672 l +784 672 l +784 640 l +768 640 l +cs +bl +hf 8.0 sf +771.2 643.2 m (16) show +bl +784 640 m +784 672 l +800 672 l +800 640 l +784 640 l +cs +bl +hf 8.0 sf +787.2 643.2 m (16) show +bl +800 672 m +800 704 l +816 704 l +816 672 l +800 672 l +cs +bl +hf 8.0 sf +803.2 675.2 m (16) show +bl +816 672 m +816 704 l +832 704 l +832 672 l +816 672 l +cs +bl +hf 8.0 sf +819.2 675.2 m (16) show +bl +800 640 m +800 672 l +816 672 l +816 640 l +800 640 l +cs +bl +hf 8.0 sf +803.2 643.2 m (16) show +bl +816 640 m +816 672 l +832 672 l +832 640 l +816 640 l +cs +bl +hf 8.0 sf +819.2 643.2 m (16) show +832 704 m +832 768 l +864 768 l +864 704 l +832 704 l +fl +bl +832 704 m +832 768 l +864 768 l +864 704 l +832 704 l +cs +864 704 m +864 768 l +896 768 l +896 704 l +864 704 l +fl +bl +864 704 m +864 768 l +896 768 l +896 704 l +864 704 l +cs +bl +832 672 m +832 704 l +848 704 l +848 672 l +832 672 l +cs +bl +hf 8.0 sf +835.2 675.2 m (16) show +848 672 m +848 704 l +864 704 l +864 672 l +848 672 l +fl +bl +848 672 m +848 704 l +864 704 l +864 672 l +848 672 l +cs +bl +832 640 m +832 672 l +848 672 l +848 640 l +832 640 l +cs +bl +hf 8.0 sf +835.2 643.2 m (16) show +848 640 m +848 672 l +864 672 l +864 640 l +848 640 l +fl +bl +848 640 m +848 672 l +864 672 l +864 640 l +848 640 l +cs +bl +864 672 m +864 704 l +880 704 l +880 672 l +864 672 l +cs +bl +hf 8.0 sf +867.2 675.2 m (16) show +880 672 m +880 704 l +896 704 l +896 672 l +880 672 l +fl +bl +880 672 m +880 704 l +896 704 l +896 672 l +880 672 l +cs +bl +864 640 m +864 672 l +880 672 l +880 640 l +864 640 l +cs +bl +hf 8.0 sf +867.2 643.2 m (16) show +880 640 m +880 672 l +896 672 l +896 640 l +880 640 l +fl +bl +880 640 m +880 672 l +896 672 l +896 640 l +880 640 l +cs +768 608 m +768 640 l +784 640 l +784 608 l +768 608 l +fl +bl +768 608 m +768 640 l +784 640 l +784 608 l +768 608 l +cs +784 608 m +784 640 l +800 640 l +800 608 l +784 608 l +fl +bl +784 608 m +784 640 l +800 640 l +800 608 l +784 608 l +cs +768 576 m +768 608 l +784 608 l +784 576 l +768 576 l +fl +bl +768 576 m +768 608 l +784 608 l +784 576 l +768 576 l +cs +784 576 m +784 608 l +800 608 l +800 576 l +784 576 l +fl +bl +784 576 m +784 608 l +800 608 l +800 576 l +784 576 l +cs +bl +800 608 m +800 640 l +816 640 l +816 608 l +800 608 l +cs +bl +hf 8.0 sf +803.2 611.2 m (16) show +816 608 m +816 640 l +832 640 l +832 608 l +816 608 l +fl +bl +816 608 m +816 640 l +832 640 l +832 608 l +816 608 l +cs +800 576 m +800 608 l +816 608 l +816 576 l +800 576 l +fl +bl +800 576 m +800 608 l +816 608 l +816 576 l +800 576 l +cs +816 576 m +816 608 l +832 608 l +832 576 l +816 576 l +fl +bl +816 576 m +816 608 l +832 608 l +832 576 l +816 576 l +cs +bl +768 544 m +768 576 l +784 576 l +784 544 l +768 544 l +cs +bl +hf 8.0 sf +771.2 547.2 m (16) show +bl +784 544 m +784 576 l +800 576 l +800 544 l +784 544 l +cs +bl +hf 8.0 sf +787.2 547.2 m (16) show +768 512 m +768 544 l +784 544 l +784 512 l +768 512 l +fl +bl +768 512 m +768 544 l +784 544 l +784 512 l +768 512 l +cs +784 512 m +784 544 l +800 544 l +800 512 l +784 512 l +fl +bl +784 512 m +784 544 l +800 544 l +800 512 l +784 512 l +cs +bl +800 544 m +800 576 l +816 576 l +816 544 l +800 544 l +cs +bl +hf 8.0 sf +803.2 547.2 m (16) show +bl +816 544 m +816 576 l +832 576 l +832 544 l +816 544 l +cs +bl +hf 8.0 sf +819.2 547.2 m (16) show +bl +800 512 m +800 544 l +816 544 l +816 512 l +800 512 l +cs +bl +hf 8.0 sf +803.2 515.2 m (16) show +bl +816 512 m +816 544 l +832 544 l +832 512 l +816 512 l +cs +bl +hf 8.0 sf +819.2 515.2 m (16) show +832 576 m +832 640 l +864 640 l +864 576 l +832 576 l +fl +bl +832 576 m +832 640 l +864 640 l +864 576 l +832 576 l +cs +864 576 m +864 640 l +896 640 l +896 576 l +864 576 l +fl +bl +864 576 m +864 640 l +896 640 l +896 576 l +864 576 l +cs +832 544 m +832 576 l +848 576 l +848 544 l +832 544 l +fl +bl +832 544 m +832 576 l +848 576 l +848 544 l +832 544 l +cs +848 544 m +848 576 l +864 576 l +864 544 l +848 544 l +fl +bl +848 544 m +848 576 l +864 576 l +864 544 l +848 544 l +cs +832 512 m +832 544 l +848 544 l +848 512 l +832 512 l +fl +bl +832 512 m +832 544 l +848 544 l +848 512 l +832 512 l +cs +848 512 m +848 544 l +864 544 l +864 512 l +848 512 l +fl +bl +848 512 m +848 544 l +864 544 l +864 512 l +848 512 l +cs +bl +864 544 m +864 576 l +880 576 l +880 544 l +864 544 l +cs +bl +hf 8.0 sf +867.2 547.2 m (16) show +880 544 m +880 576 l +896 576 l +896 544 l +880 544 l +fl +bl +880 544 m +880 576 l +896 576 l +896 544 l +880 544 l +cs +864 512 m +864 544 l +880 544 l +880 512 l +864 512 l +fl +bl +864 512 m +864 544 l +880 544 l +880 512 l +864 512 l +cs +880 512 m +880 544 l +896 544 l +896 512 l +880 512 l +fl +bl +880 512 m +880 544 l +896 544 l +896 512 l +880 512 l +cs +896 736 m +896 768 l +912 768 l +912 736 l +896 736 l +fl +bl +896 736 m +896 768 l +912 768 l +912 736 l +896 736 l +cs +912 736 m +912 768 l +928 768 l +928 736 l +912 736 l +fl +bl +912 736 m +912 768 l +928 768 l +928 736 l +912 736 l +cs +bl +896 704 m +896 736 l +912 736 l +912 704 l +896 704 l +cs +bl +hf 8.0 sf +899.2 707.2 m (16) show +912 704 m +912 736 l +928 736 l +928 704 l +912 704 l +fl +bl +912 704 m +912 736 l +928 736 l +928 704 l +912 704 l +cs +bl +928 704 m +928 768 l +944 768 l +944 704 l +928 704 l +cs +bl +hf 8.0 sf +931.2 710.4 m (16) show +bl +896 672 m +896 704 l +912 704 l +912 672 l +896 672 l +cs +bl +hf 8.0 sf +899.2 675.2 m (16) show +bl +912 672 m +912 704 l +928 704 l +928 672 l +912 672 l +cs +bl +hf 8.0 sf +915.2 675.2 m (16) show +bl +896 640 m +896 672 l +912 672 l +912 640 l +896 640 l +cs +bl +hf 8.0 sf +899.2 643.2 m (16) show +bl +912 640 m +912 672 l +928 672 l +928 640 l +912 640 l +cs +bl +hf 8.0 sf +915.2 643.2 m (16) show +bl +928 640 m +928 704 l +944 704 l +944 640 l +928 640 l +cs +bl +hf 8.0 sf +931.2 646.4 m (16) show +bl +944 640 m +944 768 l +960 768 l +960 640 l +944 640 l +cs +bl +hf 8.0 sf +947.2 652.8 m (16) show +bl +896 608 m +896 640 l +912 640 l +912 608 l +896 608 l +cs +bl +hf 8.0 sf +899.2 611.2 m (16) show +912 608 m +912 640 l +928 640 l +928 608 l +912 608 l +fl +bl +912 608 m +912 640 l +928 640 l +928 608 l +912 608 l +cs +bl +896 576 m +896 608 l +912 608 l +912 576 l +896 576 l +cs +bl +hf 8.0 sf +899.2 579.2 m (16) show +912 576 m +912 608 l +928 608 l +928 576 l +912 576 l +fl +bl +912 576 m +912 608 l +928 608 l +928 576 l +912 576 l +cs +bl +928 576 m +928 640 l +944 640 l +944 576 l +928 576 l +cs +bl +hf 8.0 sf +931.2 582.4 m (16) show +bl +896 544 m +896 576 l +912 576 l +912 544 l +896 544 l +cs +bl +hf 8.0 sf +899.2 547.2 m (16) show +bl +912 544 m +912 576 l +928 576 l +928 544 l +912 544 l +cs +bl +hf 8.0 sf +915.2 547.2 m (16) show +bl +896 512 m +896 544 l +912 544 l +912 512 l +896 512 l +cs +bl +hf 8.0 sf +899.2 515.2 m (16) show +bl +912 512 m +912 544 l +928 544 l +928 512 l +912 512 l +cs +bl +hf 8.0 sf +915.2 515.2 m (16) show +bl +928 512 m +928 576 l +944 576 l +944 512 l +928 512 l +cs +bl +hf 8.0 sf +931.2 518.4 m (16) show +bl +944 512 m +944 640 l +960 640 l +960 512 l +944 512 l +cs +bl +hf 8.0 sf +947.2 524.8 m (16) show +960 768 m +960 1024 l +1008 1024 l +1008 768 l +960 768 l +fl +bl +960 768 m +960 1024 l +1008 1024 l +1008 768 l +960 768 l +cs +1008 768 m +1008 1024 l +1024 1024 l +1024 768 l +1008 768 l +fl +bl +1008 768 m +1008 1024 l +1024 1024 l +1024 768 l +1008 768 l +cs +960 640 m +960 768 l +992 768 l +992 640 l +960 640 l +fl +bl +960 640 m +960 768 l +992 768 l +992 640 l +960 640 l +cs +992 640 m +992 768 l +1008 768 l +1008 640 l +992 640 l +fl +bl +992 640 m +992 768 l +1008 768 l +1008 640 l +992 640 l +cs +960 512 m +960 640 l +992 640 l +992 512 l +960 512 l +fl +bl +960 512 m +960 640 l +992 640 l +992 512 l +960 512 l +cs +992 512 m +992 640 l +1008 640 l +1008 512 l +992 512 l +fl +bl +992 512 m +992 640 l +1008 640 l +1008 512 l +992 512 l +cs +1008 512 m +1008 768 l +1024 768 l +1024 512 l +1008 512 l +fl +bl +1008 512 m +1008 768 l +1024 768 l +1024 512 l +1008 512 l +cs +768 384 m +768 512 l +832 512 l +832 384 l +768 384 l +fl +bl +768 384 m +768 512 l +832 512 l +832 384 l +768 384 l +cs +832 384 m +832 512 l +896 512 l +896 384 l +832 384 l +fl +bl +832 384 m +832 512 l +896 512 l +896 384 l +832 384 l +cs +768 320 m +768 384 l +832 384 l +832 320 l +768 320 l +fl +bl +768 320 m +768 384 l +832 384 l +832 320 l +768 320 l +cs +832 320 m +832 384 l +896 384 l +896 320 l +832 320 l +fl +bl +832 320 m +832 384 l +896 384 l +896 320 l +832 320 l +cs +896 448 m +896 512 l +928 512 l +928 448 l +896 448 l +fl +bl +896 448 m +896 512 l +928 512 l +928 448 l +896 448 l +cs +928 448 m +928 512 l +944 512 l +944 448 l +928 448 l +fl +bl +928 448 m +928 512 l +944 512 l +944 448 l +928 448 l +cs +896 384 m +896 448 l +928 448 l +928 384 l +896 384 l +fl +bl +896 384 m +896 448 l +928 448 l +928 384 l +896 384 l +cs +928 384 m +928 448 l +944 448 l +944 384 l +928 384 l +fl +bl +928 384 m +928 448 l +944 448 l +944 384 l +928 384 l +cs +944 384 m +944 512 l +960 512 l +960 384 l +944 384 l +fl +bl +944 384 m +944 512 l +960 512 l +960 384 l +944 384 l +cs +896 320 m +896 384 l +944 384 l +944 320 l +896 320 l +fl +bl +896 320 m +896 384 l +944 384 l +944 320 l +896 320 l +cs +944 320 m +944 384 l +960 384 l +960 320 l +944 320 l +fl +bl +944 320 m +944 384 l +960 384 l +960 320 l +944 320 l +cs +768 288 m +768 320 l +800 320 l +800 288 l +768 288 l +fl +bl +768 288 m +768 320 l +800 320 l +800 288 l +768 288 l +cs +800 288 m +800 320 l +832 320 l +832 288 l +800 288 l +fl +bl +800 288 m +800 320 l +832 320 l +832 288 l +800 288 l +cs +768 272 m +768 288 l +800 288 l +800 272 l +768 272 l +fl +bl +768 272 m +768 288 l +800 288 l +800 272 l +768 272 l +cs +800 272 m +800 288 l +832 288 l +832 272 l +800 272 l +fl +bl +800 272 m +800 288 l +832 288 l +832 272 l +800 272 l +cs +832 272 m +832 320 l +896 320 l +896 272 l +832 272 l +fl +bl +832 272 m +832 320 l +896 320 l +896 272 l +832 272 l +cs +768 256 m +768 272 l +832 272 l +832 256 l +768 256 l +fl +bl +768 256 m +768 272 l +832 272 l +832 256 l +768 256 l +cs +832 256 m +832 272 l +896 272 l +896 256 l +832 256 l +fl +bl +832 256 m +832 272 l +896 272 l +896 256 l +832 256 l +cs +896 304 m +896 320 l +912 320 l +912 304 l +896 304 l +fl +bl +896 304 m +896 320 l +912 320 l +912 304 l +896 304 l +cs +912 304 m +912 320 l +928 320 l +928 304 l +912 304 l +fl +bl +912 304 m +912 320 l +928 320 l +928 304 l +912 304 l +cs +896 288 m +896 304 l +912 304 l +912 288 l +896 288 l +fl +bl +896 288 m +896 304 l +912 304 l +912 288 l +896 288 l +cs +912 288 m +912 304 l +928 304 l +928 288 l +912 288 l +fl +bl +912 288 m +912 304 l +928 304 l +928 288 l +912 288 l +cs +bl +928 288 m +928 320 l +944 320 l +944 288 l +928 288 l +cs +bl +hf 8.0 sf +931.2 291.2 m (16) show +896 272 m +896 288 l +928 288 l +928 272 l +896 272 l +fl +bl +896 272 m +896 288 l +928 288 l +928 272 l +896 272 l +cs +bl +928 272 m +928 288 l +944 288 l +944 272 l +928 272 l +cs +bl +hf 8.0 sf +931.2 273.6 m (16) show +944 272 m +944 320 l +960 320 l +960 272 l +944 272 l +fl +bl +944 272 m +944 320 l +960 320 l +960 272 l +944 272 l +cs +bl +896 256 m +896 272 l +944 272 l +944 256 l +896 256 l +cs +bl +hf 8.0 sf +905.6 257.6 m (16) show +bl +944 256 m +944 272 l +960 272 l +960 256 l +944 256 l +cs +bl +hf 8.0 sf +947.2 257.6 m (16) show +960 320 m +960 512 l +1008 512 l +1008 320 l +960 320 l +fl +bl +960 320 m +960 512 l +1008 512 l +1008 320 l +960 320 l +cs +1008 320 m +1008 512 l +1024 512 l +1024 320 l +1008 320 l +fl +bl +1008 320 m +1008 512 l +1024 512 l +1024 320 l +1008 320 l +cs +960 256 m +960 320 l +1008 320 l +1008 256 l +960 256 l +fl +bl +960 256 m +960 320 l +1008 320 l +1008 256 l +960 256 l +cs +1008 256 m +1008 320 l +1024 320 l +1024 256 l +1008 256 l +fl +bl +1008 256 m +1008 320 l +1024 320 l +1024 256 l +1008 256 l +cs +0 224 m +0 256 l +64 256 l +64 224 l +0 224 l +fl +bl +0 224 m +0 256 l +64 256 l +64 224 l +0 224 l +cs +64 224 m +64 256 l +128 256 l +128 224 l +64 224 l +fl +bl +64 224 m +64 256 l +128 256 l +128 224 l +64 224 l +cs +0 192 m +0 224 l +64 224 l +64 192 l +0 192 l +fl +bl +0 192 m +0 224 l +64 224 l +64 192 l +0 192 l +cs +64 192 m +64 224 l +128 224 l +128 192 l +64 192 l +fl +bl +64 192 m +64 224 l +128 224 l +128 192 l +64 192 l +cs +128 224 m +128 256 l +192 256 l +192 224 l +128 224 l +fl +bl +128 224 m +128 256 l +192 256 l +192 224 l +128 224 l +cs +192 224 m +192 256 l +256 256 l +256 224 l +192 224 l +fl +bl +192 224 m +192 256 l +256 256 l +256 224 l +192 224 l +cs +128 192 m +128 224 l +192 224 l +192 192 l +128 192 l +fl +bl +128 192 m +128 224 l +192 224 l +192 192 l +128 192 l +cs +192 192 m +192 224 l +256 224 l +256 192 l +192 192 l +fl +bl +192 192 m +192 224 l +256 224 l +256 192 l +192 192 l +cs +0 128 m +0 192 l +128 192 l +128 128 l +0 128 l +fl +bl +0 128 m +0 192 l +128 192 l +128 128 l +0 128 l +cs +128 128 m +128 192 l +256 192 l +256 128 l +128 128 l +fl +bl +128 128 m +128 192 l +256 192 l +256 128 l +128 128 l +cs +bl +256 240 m +256 256 l +288 256 l +288 240 l +256 240 l +cs +bl +hf 8.0 sf +262.4 241.6 m (16) show +bl +288 240 m +288 256 l +320 256 l +320 240 l +288 240 l +cs +bl +hf 8.0 sf +294.4 241.6 m (16) show +256 224 m +256 240 l +288 240 l +288 224 l +256 224 l +fl +bl +256 224 m +256 240 l +288 240 l +288 224 l +256 224 l +cs +288 224 m +288 240 l +320 240 l +320 224 l +288 224 l +fl +bl +288 224 m +288 240 l +320 240 l +320 224 l +288 224 l +cs +bl +320 240 m +320 256 l +352 256 l +352 240 l +320 240 l +cs +bl +hf 8.0 sf +326.4 241.6 m (16) show +bl +352 240 m +352 256 l +384 256 l +384 240 l +352 240 l +cs +bl +hf 8.0 sf +358.4 241.6 m (16) show +bl +320 224 m +320 240 l +352 240 l +352 224 l +320 224 l +cs +bl +hf 8.0 sf +326.4 225.6 m (16) show +bl +352 224 m +352 240 l +384 240 l +384 224 l +352 224 l +cs +bl +hf 8.0 sf +358.4 225.6 m (16) show +bl +256 208 m +256 224 l +288 224 l +288 208 l +256 208 l +cs +bl +hf 8.0 sf +262.4 209.6 m (16) show +bl +288 208 m +288 224 l +320 224 l +320 208 l +288 208 l +cs +bl +hf 8.0 sf +294.4 209.6 m (16) show +256 192 m +256 208 l +288 208 l +288 192 l +256 192 l +fl +bl +256 192 m +256 208 l +288 208 l +288 192 l +256 192 l +cs +288 192 m +288 208 l +320 208 l +320 192 l +288 192 l +fl +bl +288 192 m +288 208 l +320 208 l +320 192 l +288 192 l +cs +bl +320 208 m +320 224 l +352 224 l +352 208 l +320 208 l +cs +bl +hf 8.0 sf +326.4 209.6 m (16) show +bl +352 208 m +352 224 l +384 224 l +384 208 l +352 208 l +cs +bl +hf 8.0 sf +358.4 209.6 m (16) show +bl +320 192 m +320 208 l +352 208 l +352 192 l +320 192 l +cs +bl +hf 8.0 sf +326.4 193.6 m (16) show +bl +352 192 m +352 208 l +384 208 l +384 192 l +352 192 l +cs +bl +hf 8.0 sf +358.4 193.6 m (16) show +384 240 m +384 256 l +416 256 l +416 240 l +384 240 l +fl +bl +384 240 m +384 256 l +416 256 l +416 240 l +384 240 l +cs +416 240 m +416 256 l +448 256 l +448 240 l +416 240 l +fl +bl +416 240 m +416 256 l +448 256 l +448 240 l +416 240 l +cs +384 224 m +384 240 l +416 240 l +416 224 l +384 224 l +fl +bl +384 224 m +384 240 l +416 240 l +416 224 l +384 224 l +cs +416 224 m +416 240 l +448 240 l +448 224 l +416 224 l +fl +bl +416 224 m +416 240 l +448 240 l +448 224 l +416 224 l +cs +bl +448 240 m +448 256 l +480 256 l +480 240 l +448 240 l +cs +bl +hf 8.0 sf +454.4 241.6 m (16) show +480 240 m +480 256 l +512 256 l +512 240 l +480 240 l +fl +bl +480 240 m +480 256 l +512 256 l +512 240 l +480 240 l +cs +bl +448 224 m +448 240 l +480 240 l +480 224 l +448 224 l +cs +bl +hf 8.0 sf +454.4 225.6 m (16) show +480 224 m +480 240 l +512 240 l +512 224 l +480 224 l +fl +bl +480 224 m +480 240 l +512 240 l +512 224 l +480 224 l +cs +bl +384 208 m +384 224 l +416 224 l +416 208 l +384 208 l +cs +bl +hf 8.0 sf +390.4 209.6 m (16) show +416 208 m +416 224 l +448 224 l +448 208 l +416 208 l +fl +bl +416 208 m +416 224 l +448 224 l +448 208 l +416 208 l +cs +384 192 m +384 208 l +416 208 l +416 192 l +384 192 l +fl +bl +384 192 m +384 208 l +416 208 l +416 192 l +384 192 l +cs +416 192 m +416 208 l +448 208 l +448 192 l +416 192 l +fl +bl +416 192 m +416 208 l +448 208 l +448 192 l +416 192 l +cs +bl +448 208 m +448 224 l +480 224 l +480 208 l +448 208 l +cs +bl +hf 8.0 sf +454.4 209.6 m (16) show +bl +480 208 m +480 224 l +512 224 l +512 208 l +480 208 l +cs +bl +hf 8.0 sf +486.4 209.6 m (16) show +bl +448 192 m +448 208 l +480 208 l +480 192 l +448 192 l +cs +bl +hf 8.0 sf +454.4 193.6 m (16) show +bl +480 192 m +480 208 l +512 208 l +512 192 l +480 192 l +cs +bl +hf 8.0 sf +486.4 193.6 m (16) show +256 160 m +256 192 l +320 192 l +320 160 l +256 160 l +fl +bl +256 160 m +256 192 l +320 192 l +320 160 l +256 160 l +cs +bl +320 176 m +320 192 l +352 192 l +352 176 l +320 176 l +cs +bl +hf 8.0 sf +326.4 177.6 m (16) show +bl +352 176 m +352 192 l +384 192 l +384 176 l +352 176 l +cs +bl +hf 8.0 sf +358.4 177.6 m (16) show +320 160 m +320 176 l +352 176 l +352 160 l +320 160 l +fl +bl +320 160 m +320 176 l +352 176 l +352 160 l +320 160 l +cs +352 160 m +352 176 l +384 176 l +384 160 l +352 160 l +fl +bl +352 160 m +352 176 l +384 176 l +384 160 l +352 160 l +cs +256 128 m +256 160 l +320 160 l +320 128 l +256 128 l +fl +bl +256 128 m +256 160 l +320 160 l +320 128 l +256 128 l +cs +bl +320 144 m +320 160 l +352 160 l +352 144 l +320 144 l +cs +bl +hf 8.0 sf +326.4 145.6 m (16) show +bl +352 144 m +352 160 l +384 160 l +384 144 l +352 144 l +cs +bl +hf 8.0 sf +358.4 145.6 m (16) show +320 128 m +320 144 l +352 144 l +352 128 l +320 128 l +fl +bl +320 128 m +320 144 l +352 144 l +352 128 l +320 128 l +cs +352 128 m +352 144 l +384 144 l +384 128 l +352 128 l +fl +bl +352 128 m +352 144 l +384 144 l +384 128 l +352 128 l +cs +384 160 m +384 192 l +448 192 l +448 160 l +384 160 l +fl +bl +384 160 m +384 192 l +448 192 l +448 160 l +384 160 l +cs +448 176 m +448 192 l +480 192 l +480 176 l +448 176 l +fl +bl +448 176 m +448 192 l +480 192 l +480 176 l +448 176 l +cs +480 176 m +480 192 l +512 192 l +512 176 l +480 176 l +fl +bl +480 176 m +480 192 l +512 192 l +512 176 l +480 176 l +cs +448 160 m +448 176 l +480 176 l +480 160 l +448 160 l +fl +bl +448 160 m +448 176 l +480 176 l +480 160 l +448 160 l +cs +480 160 m +480 176 l +512 176 l +512 160 l +480 160 l +fl +bl +480 160 m +480 176 l +512 176 l +512 160 l +480 160 l +cs +384 128 m +384 160 l +448 160 l +448 128 l +384 128 l +fl +bl +384 128 m +384 160 l +448 160 l +448 128 l +384 128 l +cs +bl +448 144 m +448 160 l +480 160 l +480 144 l +448 144 l +cs +bl +hf 8.0 sf +454.4 145.6 m (16) show +480 144 m +480 160 l +512 160 l +512 144 l +480 144 l +fl +bl +480 144 m +480 160 l +512 160 l +512 144 l +480 144 l +cs +448 128 m +448 144 l +480 144 l +480 128 l +448 128 l +fl +bl +448 128 m +448 144 l +480 144 l +480 128 l +448 128 l +cs +480 128 m +480 144 l +512 144 l +512 128 l +480 128 l +fl +bl +480 128 m +480 144 l +512 144 l +512 128 l +480 128 l +cs +0 96 m +0 128 l +64 128 l +64 96 l +0 96 l +fl +bl +0 96 m +0 128 l +64 128 l +64 96 l +0 96 l +cs +64 96 m +64 128 l +128 128 l +128 96 l +64 96 l +fl +bl +64 96 m +64 128 l +128 128 l +128 96 l +64 96 l +cs +0 80 m +0 96 l +64 96 l +64 80 l +0 80 l +fl +bl +0 80 m +0 96 l +64 96 l +64 80 l +0 80 l +cs +64 80 m +64 96 l +128 96 l +128 80 l +64 80 l +fl +bl +64 80 m +64 96 l +128 96 l +128 80 l +64 80 l +cs +128 96 m +128 128 l +192 128 l +192 96 l +128 96 l +fl +bl +128 96 m +128 128 l +192 128 l +192 96 l +128 96 l +cs +192 96 m +192 128 l +256 128 l +256 96 l +192 96 l +fl +bl +192 96 m +192 128 l +256 128 l +256 96 l +192 96 l +cs +128 80 m +128 96 l +192 96 l +192 80 l +128 80 l +fl +bl +128 80 m +128 96 l +192 96 l +192 80 l +128 80 l +cs +192 80 m +192 96 l +256 96 l +256 80 l +192 80 l +fl +bl +192 80 m +192 96 l +256 96 l +256 80 l +192 80 l +cs +0 64 m +0 80 l +128 80 l +128 64 l +0 64 l +fl +bl +0 64 m +0 80 l +128 80 l +128 64 l +0 64 l +cs +128 64 m +128 80 l +256 80 l +256 64 l +128 64 l +fl +bl +128 64 m +128 80 l +256 80 l +256 64 l +128 64 l +cs +256 112 m +256 128 l +288 128 l +288 112 l +256 112 l +fl +bl +256 112 m +256 128 l +288 128 l +288 112 l +256 112 l +cs +bl +288 112 m +288 128 l +320 128 l +320 112 l +288 112 l +cs +bl +hf 8.0 sf +294.4 113.6 m (16) show +256 96 m +256 112 l +288 112 l +288 96 l +256 96 l +fl +bl +256 96 m +256 112 l +288 112 l +288 96 l +256 96 l +cs +288 96 m +288 112 l +320 112 l +320 96 l +288 96 l +fl +bl +288 96 m +288 112 l +320 112 l +320 96 l +288 96 l +cs +bl +320 112 m +320 128 l +352 128 l +352 112 l +320 112 l +cs +bl +hf 8.0 sf +326.4 113.6 m (16) show +bl +352 112 m +352 128 l +384 128 l +384 112 l +352 112 l +cs +bl +hf 8.0 sf +358.4 113.6 m (16) show +bl +320 96 m +320 112 l +352 112 l +352 96 l +320 96 l +cs +bl +hf 8.0 sf +326.4 97.6 m (16) show +bl +352 96 m +352 112 l +384 112 l +384 96 l +352 96 l +cs +bl +hf 8.0 sf +358.4 97.6 m (16) show +bl +256 80 m +256 96 l +320 96 l +320 80 l +256 80 l +cs +bl +hf 8.0 sf +268.8 81.6 m (16) show +bl +320 80 m +320 96 l +384 96 l +384 80 l +320 80 l +cs +bl +hf 8.0 sf +332.8 81.6 m (16) show +bl +384 112 m +384 128 l +416 128 l +416 112 l +384 112 l +cs +bl +hf 8.0 sf +390.4 113.6 m (16) show +bl +416 112 m +416 128 l +448 128 l +448 112 l +416 112 l +cs +bl +hf 8.0 sf +422.4 113.6 m (16) show +384 96 m +384 112 l +416 112 l +416 96 l +384 96 l +fl +bl +384 96 m +384 112 l +416 112 l +416 96 l +384 96 l +cs +416 96 m +416 112 l +448 112 l +448 96 l +416 96 l +fl +bl +416 96 m +416 112 l +448 112 l +448 96 l +416 96 l +cs +bl +448 112 m +448 128 l +480 128 l +480 112 l +448 112 l +cs +bl +hf 8.0 sf +454.4 113.6 m (16) show +bl +480 112 m +480 128 l +512 128 l +512 112 l +480 112 l +cs +bl +hf 8.0 sf +486.4 113.6 m (16) show +bl +448 96 m +448 112 l +480 112 l +480 96 l +448 96 l +cs +bl +hf 8.0 sf +454.4 97.6 m (16) show +bl +480 96 m +480 112 l +512 112 l +512 96 l +480 96 l +cs +bl +hf 8.0 sf +486.4 97.6 m (16) show +bl +384 80 m +384 96 l +448 96 l +448 80 l +384 80 l +cs +bl +hf 8.0 sf +396.8 81.6 m (16) show +bl +448 80 m +448 96 l +512 96 l +512 80 l +448 80 l +cs +bl +hf 8.0 sf +460.8 81.6 m (16) show +bl +256 64 m +256 80 l +384 80 l +384 64 l +256 64 l +cs +bl +hf 8.0 sf +281.6 65.6 m (16) show +bl +384 64 m +384 80 l +512 80 l +512 64 l +384 64 l +cs +bl +hf 8.0 sf +409.6 65.6 m (16) show +512 192 m +512 256 l +640 256 l +640 192 l +512 192 l +fl +bl +512 192 m +512 256 l +640 256 l +640 192 l +512 192 l +cs +640 192 m +640 256 l +704 256 l +704 192 l +640 192 l +fl +bl +640 192 m +640 256 l +704 256 l +704 192 l +640 192 l +cs +512 128 m +512 192 l +640 192 l +640 128 l +512 128 l +fl +bl +512 128 m +512 192 l +640 192 l +640 128 l +512 128 l +cs +640 128 m +640 192 l +704 192 l +704 128 l +640 128 l +fl +bl +640 128 m +640 192 l +704 192 l +704 128 l +640 128 l +cs +704 224 m +704 256 l +736 256 l +736 224 l +704 224 l +fl +bl +704 224 m +704 256 l +736 256 l +736 224 l +704 224 l +cs +736 224 m +736 256 l +752 256 l +752 224 l +736 224 l +fl +bl +736 224 m +736 256 l +752 256 l +752 224 l +736 224 l +cs +704 192 m +704 224 l +736 224 l +736 192 l +704 192 l +fl +bl +704 192 m +704 224 l +736 224 l +736 192 l +704 192 l +cs +736 192 m +736 224 l +752 224 l +752 192 l +736 192 l +fl +bl +736 192 m +736 224 l +752 224 l +752 192 l +736 192 l +cs +752 192 m +752 256 l +768 256 l +768 192 l +752 192 l +fl +bl +752 192 m +752 256 l +768 256 l +768 192 l +752 192 l +cs +704 128 m +704 192 l +752 192 l +752 128 l +704 128 l +fl +bl +704 128 m +704 192 l +752 192 l +752 128 l +704 128 l +cs +752 128 m +752 192 l +768 192 l +768 128 l +752 128 l +fl +bl +752 128 m +752 192 l +768 192 l +768 128 l +752 128 l +cs +512 96 m +512 128 l +576 128 l +576 96 l +512 96 l +fl +bl +512 96 m +512 128 l +576 128 l +576 96 l +512 96 l +cs +576 96 m +576 128 l +640 128 l +640 96 l +576 96 l +fl +bl +576 96 m +576 128 l +640 128 l +640 96 l +576 96 l +cs +512 80 m +512 96 l +576 96 l +576 80 l +512 80 l +fl +bl +512 80 m +512 96 l +576 96 l +576 80 l +512 80 l +cs +576 80 m +576 96 l +640 96 l +640 80 l +576 80 l +fl +bl +576 80 m +576 96 l +640 96 l +640 80 l +576 80 l +cs +640 80 m +640 128 l +704 128 l +704 80 l +640 80 l +fl +bl +640 80 m +640 128 l +704 128 l +704 80 l +640 80 l +cs +512 64 m +512 80 l +640 80 l +640 64 l +512 64 l +fl +bl +512 64 m +512 80 l +640 80 l +640 64 l +512 64 l +cs +640 64 m +640 80 l +704 80 l +704 64 l +640 64 l +fl +bl +640 64 m +640 80 l +704 80 l +704 64 l +640 64 l +cs +704 112 m +704 128 l +720 128 l +720 112 l +704 112 l +fl +bl +704 112 m +704 128 l +720 128 l +720 112 l +704 112 l +cs +720 112 m +720 128 l +736 128 l +736 112 l +720 112 l +fl +bl +720 112 m +720 128 l +736 128 l +736 112 l +720 112 l +cs +704 96 m +704 112 l +720 112 l +720 96 l +704 96 l +fl +bl +704 96 m +704 112 l +720 112 l +720 96 l +704 96 l +cs +720 96 m +720 112 l +736 112 l +736 96 l +720 96 l +fl +bl +720 96 m +720 112 l +736 112 l +736 96 l +720 96 l +cs +736 96 m +736 128 l +752 128 l +752 96 l +736 96 l +fl +bl +736 96 m +736 128 l +752 128 l +752 96 l +736 96 l +cs +bl +704 80 m +704 96 l +736 96 l +736 80 l +704 80 l +cs +bl +hf 8.0 sf +710.4 81.6 m (16) show +bl +736 80 m +736 96 l +752 96 l +752 80 l +736 80 l +cs +bl +hf 8.0 sf +739.2 81.6 m (16) show +bl +752 80 m +752 128 l +768 128 l +768 80 l +752 80 l +cs +bl +hf 8.0 sf +755.2 84.8 m (16) show +704 64 m +704 80 l +752 80 l +752 64 l +704 64 l +fl +bl +704 64 m +704 80 l +752 80 l +752 64 l +704 64 l +cs +bl +752 64 m +752 80 l +768 80 l +768 64 l +752 64 l +cs +bl +hf 8.0 sf +755.2 65.6 m (16) show +0 16 m +0 64 l +256 64 l +256 16 l +0 16 l +fl +bl +0 16 m +0 64 l +256 64 l +256 16 l +0 16 l +cs +256 32 m +256 64 l +384 64 l +384 32 l +256 32 l +fl +bl +256 32 m +256 64 l +384 64 l +384 32 l +256 32 l +cs +384 32 m +384 64 l +512 64 l +512 32 l +384 32 l +fl +bl +384 32 m +384 64 l +512 64 l +512 32 l +384 32 l +cs +256 16 m +256 32 l +384 32 l +384 16 l +256 16 l +fl +bl +256 16 m +256 32 l +384 32 l +384 16 l +256 16 l +cs +384 16 m +384 32 l +512 32 l +512 16 l +384 16 l +fl +bl +384 16 m +384 32 l +512 32 l +512 16 l +384 16 l +cs +0 0 m +0 16 l +256 16 l +256 0 l +0 0 l +fl +bl +0 0 m +0 16 l +256 16 l +256 0 l +0 0 l +cs +256 0 m +256 16 l +512 16 l +512 0 l +256 0 l +fl +bl +256 0 m +256 16 l +512 16 l +512 0 l +256 0 l +cs +512 16 m +512 64 l +704 64 l +704 16 l +512 16 l +fl +bl +512 16 m +512 64 l +704 64 l +704 16 l +512 16 l +cs +704 16 m +704 64 l +768 64 l +768 16 l +704 16 l +fl +bl +704 16 m +704 64 l +768 64 l +768 16 l +704 16 l +cs +512 0 m +512 16 l +704 16 l +704 0 l +512 0 l +fl +bl +512 0 m +512 16 l +704 16 l +704 0 l +512 0 l +cs +704 0 m +704 16 l +768 16 l +768 0 l +704 0 l +fl +bl +704 0 m +704 16 l +768 16 l +768 0 l +704 0 l +cs +bl +768 240 m +768 256 l +784 256 l +784 240 l +768 240 l +cs +bl +hf 8.0 sf +771.2 241.6 m (16) show +bl +784 240 m +784 256 l +800 256 l +800 240 l +784 240 l +cs +bl +hf 8.0 sf +787.2 241.6 m (16) show +bl +768 224 m +768 240 l +784 240 l +784 224 l +768 224 l +cs +bl +hf 8.0 sf +771.2 225.6 m (16) show +bl +784 224 m +784 240 l +800 240 l +800 224 l +784 224 l +cs +bl +hf 8.0 sf +787.2 225.6 m (16) show +bl +800 240 m +800 256 l +816 256 l +816 240 l +800 240 l +cs +bl +hf 8.0 sf +803.2 241.6 m (16) show +bl +816 240 m +816 256 l +832 256 l +832 240 l +816 240 l +cs +bl +hf 8.0 sf +819.2 241.6 m (16) show +bl +800 224 m +800 240 l +816 240 l +816 224 l +800 224 l +cs +bl +hf 8.0 sf +803.2 225.6 m (16) show +bl +816 224 m +816 240 l +832 240 l +832 224 l +816 224 l +cs +bl +hf 8.0 sf +819.2 225.6 m (16) show +bl +768 208 m +768 224 l +784 224 l +784 208 l +768 208 l +cs +bl +hf 8.0 sf +771.2 209.6 m (16) show +bl +784 208 m +784 224 l +800 224 l +800 208 l +784 208 l +cs +bl +hf 8.0 sf +787.2 209.6 m (16) show +bl +768 192 m +768 208 l +784 208 l +784 192 l +768 192 l +cs +bl +hf 8.0 sf +771.2 193.6 m (16) show +bl +784 192 m +784 208 l +800 208 l +800 192 l +784 192 l +cs +bl +hf 8.0 sf +787.2 193.6 m (16) show +bl +800 208 m +800 224 l +816 224 l +816 208 l +800 208 l +cs +bl +hf 8.0 sf +803.2 209.6 m (16) show +bl +816 208 m +816 224 l +832 224 l +832 208 l +816 208 l +cs +bl +hf 8.0 sf +819.2 209.6 m (16) show +bl +800 192 m +800 208 l +816 208 l +816 192 l +800 192 l +cs +bl +hf 8.0 sf +803.2 193.6 m (16) show +bl +816 192 m +816 208 l +832 208 l +832 192 l +816 192 l +cs +bl +hf 8.0 sf +819.2 193.6 m (16) show +bl +832 240 m +832 256 l +848 256 l +848 240 l +832 240 l +cs +bl +hf 8.0 sf +835.2 241.6 m (16) show +bl +848 240 m +848 256 l +864 256 l +864 240 l +848 240 l +cs +bl +hf 8.0 sf +851.2 241.6 m (16) show +bl +832 224 m +832 240 l +848 240 l +848 224 l +832 224 l +cs +bl +hf 8.0 sf +835.2 225.6 m (16) show +bl +848 224 m +848 240 l +864 240 l +864 224 l +848 224 l +cs +bl +hf 8.0 sf +851.2 225.6 m (16) show +bl +864 240 m +864 256 l +880 256 l +880 240 l +864 240 l +cs +bl +hf 8.0 sf +867.2 241.6 m (16) show +bl +880 240 m +880 256 l +896 256 l +896 240 l +880 240 l +cs +bl +hf 8.0 sf +883.2 241.6 m (16) show +bl +864 224 m +864 240 l +880 240 l +880 224 l +864 224 l +cs +bl +hf 8.0 sf +867.2 225.6 m (16) show +bl +880 224 m +880 240 l +896 240 l +896 224 l +880 224 l +cs +bl +hf 8.0 sf +883.2 225.6 m (16) show +bl +832 208 m +832 224 l +848 224 l +848 208 l +832 208 l +cs +bl +hf 8.0 sf +835.2 209.6 m (16) show +bl +848 208 m +848 224 l +864 224 l +864 208 l +848 208 l +cs +bl +hf 8.0 sf +851.2 209.6 m (16) show +bl +832 192 m +832 208 l +848 208 l +848 192 l +832 192 l +cs +bl +hf 8.0 sf +835.2 193.6 m (16) show +bl +848 192 m +848 208 l +864 208 l +864 192 l +848 192 l +cs +bl +hf 8.0 sf +851.2 193.6 m (16) show +bl +864 208 m +864 224 l +880 224 l +880 208 l +864 208 l +cs +bl +hf 8.0 sf +867.2 209.6 m (16) show +bl +880 208 m +880 224 l +896 224 l +896 208 l +880 208 l +cs +bl +hf 8.0 sf +883.2 209.6 m (16) show +bl +864 192 m +864 208 l +880 208 l +880 192 l +864 192 l +cs +bl +hf 8.0 sf +867.2 193.6 m (16) show +bl +880 192 m +880 208 l +896 208 l +896 192 l +880 192 l +cs +bl +hf 8.0 sf +883.2 193.6 m (16) show +bl +768 176 m +768 192 l +784 192 l +784 176 l +768 176 l +cs +bl +hf 8.0 sf +771.2 177.6 m (16) show +bl +784 176 m +784 192 l +800 192 l +800 176 l +784 176 l +cs +bl +hf 8.0 sf +787.2 177.6 m (16) show +bl +768 160 m +768 176 l +784 176 l +784 160 l +768 160 l +cs +bl +hf 8.0 sf +771.2 161.6 m (16) show +bl +784 160 m +784 176 l +800 176 l +800 160 l +784 160 l +cs +bl +hf 8.0 sf +787.2 161.6 m (16) show +bl +800 176 m +800 192 l +816 192 l +816 176 l +800 176 l +cs +bl +hf 8.0 sf +803.2 177.6 m (16) show +bl +816 176 m +816 192 l +832 192 l +832 176 l +816 176 l +cs +bl +hf 8.0 sf +819.2 177.6 m (16) show +bl +800 160 m +800 176 l +816 176 l +816 160 l +800 160 l +cs +bl +hf 8.0 sf +803.2 161.6 m (16) show +bl +816 160 m +816 176 l +832 176 l +832 160 l +816 160 l +cs +bl +hf 8.0 sf +819.2 161.6 m (16) show +bl +768 144 m +768 160 l +784 160 l +784 144 l +768 144 l +cs +bl +hf 8.0 sf +771.2 145.6 m (16) show +bl +784 144 m +784 160 l +800 160 l +800 144 l +784 144 l +cs +bl +hf 8.0 sf +787.2 145.6 m (16) show +bl +768 128 m +768 144 l +784 144 l +784 128 l +768 128 l +cs +bl +hf 8.0 sf +771.2 129.6 m (16) show +bl +784 128 m +784 144 l +800 144 l +800 128 l +784 128 l +cs +bl +hf 8.0 sf +787.2 129.6 m (16) show +bl +800 144 m +800 160 l +816 160 l +816 144 l +800 144 l +cs +bl +hf 8.0 sf +803.2 145.6 m (16) show +bl +816 144 m +816 160 l +832 160 l +832 144 l +816 144 l +cs +bl +hf 8.0 sf +819.2 145.6 m (16) show +bl +800 128 m +800 144 l +816 144 l +816 128 l +800 128 l +cs +bl +hf 8.0 sf +803.2 129.6 m (16) show +bl +816 128 m +816 144 l +832 144 l +832 128 l +816 128 l +cs +bl +hf 8.0 sf +819.2 129.6 m (16) show +bl +832 176 m +832 192 l +848 192 l +848 176 l +832 176 l +cs +bl +hf 8.0 sf +835.2 177.6 m (16) show +bl +848 176 m +848 192 l +864 192 l +864 176 l +848 176 l +cs +bl +hf 8.0 sf +851.2 177.6 m (16) show +bl +832 160 m +832 176 l +848 176 l +848 160 l +832 160 l +cs +bl +hf 8.0 sf +835.2 161.6 m (16) show +bl +848 160 m +848 176 l +864 176 l +864 160 l +848 160 l +cs +bl +hf 8.0 sf +851.2 161.6 m (16) show +bl +864 176 m +864 192 l +880 192 l +880 176 l +864 176 l +cs +bl +hf 8.0 sf +867.2 177.6 m (16) show +bl +880 176 m +880 192 l +896 192 l +896 176 l +880 176 l +cs +bl +hf 8.0 sf +883.2 177.6 m (16) show +bl +864 160 m +864 176 l +880 176 l +880 160 l +864 160 l +cs +bl +hf 8.0 sf +867.2 161.6 m (16) show +bl +880 160 m +880 176 l +896 176 l +896 160 l +880 160 l +cs +bl +hf 8.0 sf +883.2 161.6 m (16) show +bl +832 144 m +832 160 l +848 160 l +848 144 l +832 144 l +cs +bl +hf 8.0 sf +835.2 145.6 m (16) show +bl +848 144 m +848 160 l +864 160 l +864 144 l +848 144 l +cs +bl +hf 8.0 sf +851.2 145.6 m (16) show +bl +832 128 m +832 144 l +848 144 l +848 128 l +832 128 l +cs +bl +hf 8.0 sf +835.2 129.6 m (16) show +bl +848 128 m +848 144 l +864 144 l +864 128 l +848 128 l +cs +bl +hf 8.0 sf +851.2 129.6 m (16) show +bl +864 144 m +864 160 l +880 160 l +880 144 l +864 144 l +cs +bl +hf 8.0 sf +867.2 145.6 m (16) show +bl +880 144 m +880 160 l +896 160 l +896 144 l +880 144 l +cs +bl +hf 8.0 sf +883.2 145.6 m (16) show +bl +864 128 m +864 144 l +880 144 l +880 128 l +864 128 l +cs +bl +hf 8.0 sf +867.2 129.6 m (16) show +bl +880 128 m +880 144 l +896 144 l +896 128 l +880 128 l +cs +bl +hf 8.0 sf +883.2 129.6 m (16) show +bl +896 240 m +896 256 l +912 256 l +912 240 l +896 240 l +cs +bl +hf 8.0 sf +899.2 241.6 m (16) show +bl +912 240 m +912 256 l +928 256 l +928 240 l +912 240 l +cs +bl +hf 8.0 sf +915.2 241.6 m (16) show +bl +896 224 m +896 240 l +912 240 l +912 224 l +896 224 l +cs +bl +hf 8.0 sf +899.2 225.6 m (16) show +bl +912 224 m +912 240 l +928 240 l +928 224 l +912 224 l +cs +bl +hf 8.0 sf +915.2 225.6 m (16) show +928 224 m +928 256 l +944 256 l +944 224 l +928 224 l +fl +bl +928 224 m +928 256 l +944 256 l +944 224 l +928 224 l +cs +bl +896 208 m +896 224 l +912 224 l +912 208 l +896 208 l +cs +bl +hf 8.0 sf +899.2 209.6 m (16) show +bl +912 208 m +912 224 l +928 224 l +928 208 l +912 208 l +cs +bl +hf 8.0 sf +915.2 209.6 m (16) show +bl +896 192 m +896 208 l +912 208 l +912 192 l +896 192 l +cs +bl +hf 8.0 sf +899.2 193.6 m (16) show +bl +912 192 m +912 208 l +928 208 l +928 192 l +912 192 l +cs +bl +hf 8.0 sf +915.2 193.6 m (16) show +bl +928 192 m +928 224 l +944 224 l +944 192 l +928 192 l +cs +bl +hf 8.0 sf +931.2 195.2 m (16) show +bl +944 192 m +944 256 l +960 256 l +960 192 l +944 192 l +cs +bl +hf 8.0 sf +947.2 198.4 m (16) show +bl +896 176 m +896 192 l +912 192 l +912 176 l +896 176 l +cs +bl +hf 8.0 sf +899.2 177.6 m (16) show +bl +912 176 m +912 192 l +928 192 l +928 176 l +912 176 l +cs +bl +hf 8.0 sf +915.2 177.6 m (16) show +896 160 m +896 176 l +912 176 l +912 160 l +896 160 l +fl +bl +896 160 m +896 176 l +912 176 l +912 160 l +896 160 l +cs +bl +912 160 m +912 176 l +928 176 l +928 160 l +912 160 l +cs +bl +hf 8.0 sf +915.2 161.6 m (16) show +928 160 m +928 192 l +944 192 l +944 160 l +928 160 l +fl +bl +928 160 m +928 192 l +944 192 l +944 160 l +928 160 l +cs +bl +896 144 m +896 160 l +912 160 l +912 144 l +896 144 l +cs +bl +hf 8.0 sf +899.2 145.6 m (16) show +bl +912 144 m +912 160 l +928 160 l +928 144 l +912 144 l +cs +bl +hf 8.0 sf +915.2 145.6 m (16) show +bl +896 128 m +896 144 l +912 144 l +912 128 l +896 128 l +cs +bl +hf 8.0 sf +899.2 129.6 m (16) show +bl +912 128 m +912 144 l +928 144 l +928 128 l +912 128 l +cs +bl +hf 8.0 sf +915.2 129.6 m (16) show +bl +928 128 m +928 160 l +944 160 l +944 128 l +928 128 l +cs +bl +hf 8.0 sf +931.2 131.2 m (16) show +bl +944 128 m +944 192 l +960 192 l +960 128 l +944 128 l +cs +bl +hf 8.0 sf +947.2 134.4 m (16) show +bl +768 112 m +768 128 l +784 128 l +784 112 l +768 112 l +cs +bl +hf 8.0 sf +771.2 113.6 m (16) show +bl +784 112 m +784 128 l +800 128 l +800 112 l +784 112 l +cs +bl +hf 8.0 sf +787.2 113.6 m (16) show +bl +768 96 m +768 112 l +784 112 l +784 96 l +768 96 l +cs +bl +hf 8.0 sf +771.2 97.6 m (16) show +bl +784 96 m +784 112 l +800 112 l +800 96 l +784 96 l +cs +bl +hf 8.0 sf +787.2 97.6 m (16) show +bl +800 112 m +800 128 l +816 128 l +816 112 l +800 112 l +cs +bl +hf 8.0 sf +803.2 113.6 m (16) show +bl +816 112 m +816 128 l +832 128 l +832 112 l +816 112 l +cs +bl +hf 8.0 sf +819.2 113.6 m (16) show +bl +800 96 m +800 112 l +816 112 l +816 96 l +800 96 l +cs +bl +hf 8.0 sf +803.2 97.6 m (16) show +bl +816 96 m +816 112 l +832 112 l +832 96 l +816 96 l +cs +bl +hf 8.0 sf +819.2 97.6 m (16) show +768 80 m +768 96 l +800 96 l +800 80 l +768 80 l +fl +bl +768 80 m +768 96 l +800 96 l +800 80 l +768 80 l +cs +bl +800 80 m +800 96 l +832 96 l +832 80 l +800 80 l +cs +bl +hf 8.0 sf +806.4 81.6 m (16) show +bl +832 112 m +832 128 l +848 128 l +848 112 l +832 112 l +cs +bl +hf 8.0 sf +835.2 113.6 m (16) show +848 112 m +848 128 l +864 128 l +864 112 l +848 112 l +fl +bl +848 112 m +848 128 l +864 128 l +864 112 l +848 112 l +cs +bl +832 96 m +832 112 l +848 112 l +848 96 l +832 96 l +cs +bl +hf 8.0 sf +835.2 97.6 m (16) show +bl +848 96 m +848 112 l +864 112 l +864 96 l +848 96 l +cs +bl +hf 8.0 sf +851.2 97.6 m (16) show +bl +864 112 m +864 128 l +880 128 l +880 112 l +864 112 l +cs +bl +hf 8.0 sf +867.2 113.6 m (16) show +bl +880 112 m +880 128 l +896 128 l +896 112 l +880 112 l +cs +bl +hf 8.0 sf +883.2 113.6 m (16) show +bl +864 96 m +864 112 l +880 112 l +880 96 l +864 96 l +cs +bl +hf 8.0 sf +867.2 97.6 m (16) show +bl +880 96 m +880 112 l +896 112 l +896 96 l +880 96 l +cs +bl +hf 8.0 sf +883.2 97.6 m (16) show +832 80 m +832 96 l +864 96 l +864 80 l +832 80 l +fl +bl +832 80 m +832 96 l +864 96 l +864 80 l +832 80 l +cs +bl +864 80 m +864 96 l +896 96 l +896 80 l +864 80 l +cs +bl +hf 8.0 sf +870.4 81.6 m (16) show +bl +768 64 m +768 80 l +832 80 l +832 64 l +768 64 l +cs +bl +hf 8.0 sf +780.8 65.6 m (16) show +bl +832 64 m +832 80 l +896 80 l +896 64 l +832 64 l +cs +bl +hf 8.0 sf +844.8 65.6 m (16) show +bl +896 112 m +896 128 l +912 128 l +912 112 l +896 112 l +cs +bl +hf 8.0 sf +899.2 113.6 m (16) show +bl +912 112 m +912 128 l +928 128 l +928 112 l +912 112 l +cs +bl +hf 8.0 sf +915.2 113.6 m (16) show +bl +896 96 m +896 112 l +912 112 l +912 96 l +896 96 l +cs +bl +hf 8.0 sf +899.2 97.6 m (16) show +bl +912 96 m +912 112 l +928 112 l +928 96 l +912 96 l +cs +bl +hf 8.0 sf +915.2 97.6 m (16) show +bl +928 96 m +928 128 l +944 128 l +944 96 l +928 96 l +cs +bl +hf 8.0 sf +931.2 99.2 m (16) show +bl +896 80 m +896 96 l +928 96 l +928 80 l +896 80 l +cs +bl +hf 8.0 sf +902.4 81.6 m (16) show +bl +928 80 m +928 96 l +944 96 l +944 80 l +928 80 l +cs +bl +hf 8.0 sf +931.2 81.6 m (16) show +bl +944 80 m +944 128 l +960 128 l +960 80 l +944 80 l +cs +bl +hf 8.0 sf +947.2 84.8 m (16) show +bl +896 64 m +896 80 l +944 80 l +944 64 l +896 64 l +cs +bl +hf 8.0 sf +905.6 65.6 m (16) show +bl +944 64 m +944 80 l +960 80 l +960 64 l +944 64 l +cs +bl +hf 8.0 sf +947.2 65.6 m (16) show +bl +960 224 m +960 256 l +976 256 l +976 224 l +960 224 l +cs +bl +hf 8.0 sf +963.2 227.2 m (16) show +976 224 m +976 256 l +992 256 l +992 224 l +976 224 l +fl +bl +976 224 m +976 256 l +992 256 l +992 224 l +976 224 l +cs +bl +960 192 m +960 224 l +976 224 l +976 192 l +960 192 l +cs +bl +hf 8.0 sf +963.2 195.2 m (16) show +976 192 m +976 224 l +992 224 l +992 192 l +976 192 l +fl +bl +976 192 m +976 224 l +992 224 l +992 192 l +976 192 l +cs +bl +992 192 m +992 256 l +1008 256 l +1008 192 l +992 192 l +cs +bl +hf 8.0 sf +995.2 198.4 m (16) show +bl +960 160 m +960 192 l +976 192 l +976 160 l +960 160 l +cs +bl +hf 8.0 sf +963.2 163.2 m (16) show +bl +976 160 m +976 192 l +992 192 l +992 160 l +976 160 l +cs +bl +hf 8.0 sf +979.2 163.2 m (16) show +bl +960 128 m +960 160 l +976 160 l +976 128 l +960 128 l +cs +bl +hf 8.0 sf +963.2 131.2 m (16) show +bl +976 128 m +976 160 l +992 160 l +992 128 l +976 128 l +cs +bl +hf 8.0 sf +979.2 131.2 m (16) show +bl +992 128 m +992 192 l +1008 192 l +1008 128 l +992 128 l +cs +bl +hf 8.0 sf +995.2 134.4 m (16) show +bl +1008 128 m +1008 256 l +1024 256 l +1024 128 l +1008 128 l +cs +bl +hf 8.0 sf +1011.2 140.8 m (16) show +960 96 m +960 128 l +976 128 l +976 96 l +960 96 l +fl +bl +960 96 m +960 128 l +976 128 l +976 96 l +960 96 l +cs +976 96 m +976 128 l +992 128 l +992 96 l +976 96 l +fl +bl +976 96 m +976 128 l +992 128 l +992 96 l +976 96 l +cs +960 80 m +960 96 l +976 96 l +976 80 l +960 80 l +fl +bl +960 80 m +960 96 l +976 96 l +976 80 l +960 80 l +cs +976 80 m +976 96 l +992 96 l +992 80 l +976 80 l +fl +bl +976 80 m +976 96 l +992 96 l +992 80 l +976 80 l +cs +bl +992 80 m +992 128 l +1008 128 l +1008 80 l +992 80 l +cs +bl +hf 8.0 sf +995.2 84.8 m (16) show +bl +960 64 m +960 80 l +992 80 l +992 64 l +960 64 l +cs +bl +hf 8.0 sf +966.4 65.6 m (16) show +bl +992 64 m +992 80 l +1008 80 l +1008 64 l +992 64 l +cs +bl +hf 8.0 sf +995.2 65.6 m (16) show +bl +1008 64 m +1008 128 l +1024 128 l +1024 64 l +1008 64 l +cs +bl +hf 8.0 sf +1011.2 70.4 m (16) show +bl +768 48 m +768 64 l +800 64 l +800 48 l +768 48 l +cs +bl +hf 8.0 sf +774.4 49.6 m (16) show +bl +800 48 m +800 64 l +832 64 l +832 48 l +800 48 l +cs +bl +hf 8.0 sf +806.4 49.6 m (16) show +768 32 m +768 48 l +800 48 l +800 32 l +768 32 l +fl +bl +768 32 m +768 48 l +800 48 l +800 32 l +768 32 l +cs +800 32 m +800 48 l +832 48 l +832 32 l +800 32 l +fl +bl +800 32 m +800 48 l +832 48 l +832 32 l +800 32 l +cs +bl +832 48 m +832 64 l +864 64 l +864 48 l +832 48 l +cs +bl +hf 8.0 sf +838.4 49.6 m (16) show +bl +864 48 m +864 64 l +896 64 l +896 48 l +864 48 l +cs +bl +hf 8.0 sf +870.4 49.6 m (16) show +bl +832 32 m +832 48 l +864 48 l +864 32 l +832 32 l +cs +bl +hf 8.0 sf +838.4 33.6 m (16) show +bl +864 32 m +864 48 l +896 48 l +896 32 l +864 32 l +cs +bl +hf 8.0 sf +870.4 33.6 m (16) show +bl +768 16 m +768 32 l +832 32 l +832 16 l +768 16 l +cs +bl +hf 8.0 sf +780.8 17.6 m (16) show +bl +832 16 m +832 32 l +896 32 l +896 16 l +832 16 l +cs +bl +hf 8.0 sf +844.8 17.6 m (16) show +896 48 m +896 64 l +928 64 l +928 48 l +896 48 l +fl +bl +896 48 m +896 64 l +928 64 l +928 48 l +896 48 l +cs +928 48 m +928 64 l +944 64 l +944 48 l +928 48 l +fl +bl +928 48 m +928 64 l +944 64 l +944 48 l +928 48 l +cs +896 32 m +896 48 l +928 48 l +928 32 l +896 32 l +fl +bl +896 32 m +896 48 l +928 48 l +928 32 l +896 32 l +cs +928 32 m +928 48 l +944 48 l +944 32 l +928 32 l +fl +bl +928 32 m +928 48 l +944 48 l +944 32 l +928 32 l +cs +bl +944 32 m +944 64 l +960 64 l +960 32 l +944 32 l +cs +bl +hf 8.0 sf +947.2 35.2 m (16) show +bl +896 16 m +896 32 l +944 32 l +944 16 l +896 16 l +cs +bl +hf 8.0 sf +905.6 17.6 m (16) show +bl +944 16 m +944 32 l +960 32 l +960 16 l +944 16 l +cs +bl +hf 8.0 sf +947.2 17.6 m (16) show +bl +768 0 m +768 16 l +896 16 l +896 0 l +768 0 l +cs +bl +hf 8.0 sf +793.6 1.6 m (16) show +bl +896 0 m +896 16 l +960 16 l +960 0 l +896 0 l +cs +bl +hf 8.0 sf +908.8 1.6 m (16) show +bl +960 48 m +960 64 l +976 64 l +976 48 l +960 48 l +cs +bl +hf 8.0 sf +963.2 49.6 m (16) show +bl +976 48 m +976 64 l +992 64 l +992 48 l +976 48 l +cs +bl +hf 8.0 sf +979.2 49.6 m (16) show +bl +960 32 m +960 48 l +976 48 l +976 32 l +960 32 l +cs +bl +hf 8.0 sf +963.2 33.6 m (16) show +bl +976 32 m +976 48 l +992 48 l +992 32 l +976 32 l +cs +bl +hf 8.0 sf +979.2 33.6 m (16) show +bl +992 32 m +992 64 l +1008 64 l +1008 32 l +992 32 l +cs +bl +hf 8.0 sf +995.2 35.2 m (16) show +bl +960 16 m +960 32 l +992 32 l +992 16 l +960 16 l +cs +bl +hf 8.0 sf +966.4 17.6 m (16) show +bl +992 16 m +992 32 l +1008 32 l +1008 16 l +992 16 l +cs +bl +hf 8.0 sf +995.2 17.6 m (16) show +bl +1008 16 m +1008 64 l +1024 64 l +1024 16 l +1008 16 l +cs +bl +hf 8.0 sf +1011.2 20.8 m (16) show +bl +960 0 m +960 16 l +1008 16 l +1008 0 l +960 0 l +cs +bl +hf 8.0 sf +969.6 1.6 m (16) show +bl +1008 0 m +1008 16 l +1024 16 l +1024 0 l +1008 0 l +cs +bl +hf 8.0 sf +1011.2 1.6 m (16) show +showpage diff --git a/src/bem3d/src/laplace/clustertree.ps b/src/bem3d/src/laplace/clustertree.ps new file mode 100644 index 0000000..a11445b --- /dev/null +++ b/src/bem3d/src/laplace/clustertree.ps @@ -0,0 +1,521 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%BoundingBox: 0 0 500 146 +0 dup translate +0.488281 dup scale +0.009766 setlinewidth +/Helvetica findfont 24.576000 scalefont setfont +0 setgray +/cs{closepath stroke} def +/m{moveto} def +/l{lineto} def +/hf{/Helvetica findfont} def +/sf{scalefont setfont} def +0 -5 m 0 5 l + 0 0 m 1024 0 l + 1024 -5 m 1024 5 l stroke + hf 15.000000 sf 1 3 m (0) show +0 25 m 0 35 l + 0 30 m 768 30 l + 768 25 m 768 35 l stroke + hf 15.000000 sf 1 33 m (1) show +0 55 m 0 65 l + 0 60 m 512 60 l + 512 55 m 512 65 l stroke + hf 15.000000 sf 1 63 m (2) show +0 85 m 0 95 l + 0 90 m 256 90 l + 256 85 m 256 95 l stroke + hf 15.000000 sf 1 93 m (3) show +0 115 m 0 125 l + 0 120 m 128 120 l + 128 115 m 128 125 l stroke + hf 15.000000 sf 1 123 m (4) show +0 145 m 0 155 l + 0 150 m 64 150 l + 64 145 m 64 155 l stroke + hf 15.000000 sf 1 153 m (5) show +0 175 m 0 185 l + 0 180 m 32 180 l + 32 175 m 32 185 l stroke + hf 15.000000 sf 1 183 m (6) show +0 205 m 0 215 l + 0 210 m 16 210 l + 16 205 m 16 215 l stroke + hf 8.000000 sf 1 213 m (7) show +16 205 m 16 215 l + 16 210 m 32 210 l + 32 205 m 32 215 l stroke + hf 8.000000 sf 17 213 m (8) show +32 175 m 32 185 l + 32 180 m 64 180 l + 64 175 m 64 185 l stroke + hf 15.000000 sf 33 183 m (9) show +32 205 m 32 215 l + 32 210 m 48 210 l + 48 205 m 48 215 l stroke + hf 8.000000 sf 33 213 m (10) show +48 205 m 48 215 l + 48 210 m 64 210 l + 64 205 m 64 215 l stroke + hf 8.000000 sf 49 213 m (11) show +64 145 m 64 155 l + 64 150 m 128 150 l + 128 145 m 128 155 l stroke + hf 15.000000 sf 65 153 m (12) show +64 175 m 64 185 l + 64 180 m 96 180 l + 96 175 m 96 185 l stroke + hf 15.000000 sf 65 183 m (13) show +64 205 m 64 215 l + 64 210 m 80 210 l + 80 205 m 80 215 l stroke + hf 8.000000 sf 65 213 m (14) show +80 205 m 80 215 l + 80 210 m 96 210 l + 96 205 m 96 215 l stroke + hf 8.000000 sf 81 213 m (15) show +96 175 m 96 185 l + 96 180 m 128 180 l + 128 175 m 128 185 l stroke + hf 15.000000 sf 97 183 m (16) show +96 205 m 96 215 l + 96 210 m 112 210 l + 112 205 m 112 215 l stroke + hf 8.000000 sf 97 213 m (17) show +112 205 m 112 215 l + 112 210 m 128 210 l + 128 205 m 128 215 l stroke + hf 8.000000 sf 113 213 m (18) show +128 115 m 128 125 l + 128 120 m 256 120 l + 256 115 m 256 125 l stroke + hf 15.000000 sf 129 123 m (19) show +128 145 m 128 155 l + 128 150 m 192 150 l + 192 145 m 192 155 l stroke + hf 15.000000 sf 129 153 m (20) show +128 175 m 128 185 l + 128 180 m 160 180 l + 160 175 m 160 185 l stroke + hf 15.000000 sf 129 183 m (21) show +128 205 m 128 215 l + 128 210 m 144 210 l + 144 205 m 144 215 l stroke + hf 8.000000 sf 129 213 m (22) show +144 205 m 144 215 l + 144 210 m 160 210 l + 160 205 m 160 215 l stroke + hf 8.000000 sf 145 213 m (23) show +160 175 m 160 185 l + 160 180 m 192 180 l + 192 175 m 192 185 l stroke + hf 15.000000 sf 161 183 m (24) show +160 205 m 160 215 l + 160 210 m 176 210 l + 176 205 m 176 215 l stroke + hf 8.000000 sf 161 213 m (25) show +176 205 m 176 215 l + 176 210 m 192 210 l + 192 205 m 192 215 l stroke + hf 8.000000 sf 177 213 m (26) show +192 145 m 192 155 l + 192 150 m 256 150 l + 256 145 m 256 155 l stroke + hf 15.000000 sf 193 153 m (27) show +192 175 m 192 185 l + 192 180 m 224 180 l + 224 175 m 224 185 l stroke + hf 15.000000 sf 193 183 m (28) show +192 205 m 192 215 l + 192 210 m 208 210 l + 208 205 m 208 215 l stroke + hf 8.000000 sf 193 213 m (29) show +208 205 m 208 215 l + 208 210 m 224 210 l + 224 205 m 224 215 l stroke + hf 8.000000 sf 209 213 m (30) show +224 175 m 224 185 l + 224 180 m 256 180 l + 256 175 m 256 185 l stroke + hf 15.000000 sf 225 183 m (31) show +224 205 m 224 215 l + 224 210 m 240 210 l + 240 205 m 240 215 l stroke + hf 8.000000 sf 225 213 m (32) show +240 205 m 240 215 l + 240 210 m 256 210 l + 256 205 m 256 215 l stroke + hf 8.000000 sf 241 213 m (33) show +256 85 m 256 95 l + 256 90 m 512 90 l + 512 85 m 512 95 l stroke + hf 15.000000 sf 257 93 m (34) show +256 115 m 256 125 l + 256 120 m 384 120 l + 384 115 m 384 125 l stroke + hf 15.000000 sf 257 123 m (35) show +256 145 m 256 155 l + 256 150 m 320 150 l + 320 145 m 320 155 l stroke + hf 15.000000 sf 257 153 m (36) show +256 175 m 256 185 l + 256 180 m 288 180 l + 288 175 m 288 185 l stroke + hf 15.000000 sf 257 183 m (37) show +256 205 m 256 215 l + 256 210 m 272 210 l + 272 205 m 272 215 l stroke + hf 8.000000 sf 257 213 m (38) show +272 205 m 272 215 l + 272 210 m 288 210 l + 288 205 m 288 215 l stroke + hf 8.000000 sf 273 213 m (39) show +288 175 m 288 185 l + 288 180 m 320 180 l + 320 175 m 320 185 l stroke + hf 15.000000 sf 289 183 m (40) show +288 205 m 288 215 l + 288 210 m 304 210 l + 304 205 m 304 215 l stroke + hf 8.000000 sf 289 213 m (41) show +304 205 m 304 215 l + 304 210 m 320 210 l + 320 205 m 320 215 l stroke + hf 8.000000 sf 305 213 m (42) show +320 145 m 320 155 l + 320 150 m 384 150 l + 384 145 m 384 155 l stroke + hf 15.000000 sf 321 153 m (43) show +320 175 m 320 185 l + 320 180 m 352 180 l + 352 175 m 352 185 l stroke + hf 15.000000 sf 321 183 m (44) show +320 205 m 320 215 l + 320 210 m 336 210 l + 336 205 m 336 215 l stroke + hf 8.000000 sf 321 213 m (45) show +336 205 m 336 215 l + 336 210 m 352 210 l + 352 205 m 352 215 l stroke + hf 8.000000 sf 337 213 m (46) show +352 175 m 352 185 l + 352 180 m 384 180 l + 384 175 m 384 185 l stroke + hf 15.000000 sf 353 183 m (47) show +352 205 m 352 215 l + 352 210 m 368 210 l + 368 205 m 368 215 l stroke + hf 8.000000 sf 353 213 m (48) show +368 205 m 368 215 l + 368 210 m 384 210 l + 384 205 m 384 215 l stroke + hf 8.000000 sf 369 213 m (49) show +384 115 m 384 125 l + 384 120 m 512 120 l + 512 115 m 512 125 l stroke + hf 15.000000 sf 385 123 m (50) show +384 145 m 384 155 l + 384 150 m 448 150 l + 448 145 m 448 155 l stroke + hf 15.000000 sf 385 153 m (51) show +384 175 m 384 185 l + 384 180 m 416 180 l + 416 175 m 416 185 l stroke + hf 15.000000 sf 385 183 m (52) show +384 205 m 384 215 l + 384 210 m 400 210 l + 400 205 m 400 215 l stroke + hf 8.000000 sf 385 213 m (53) show +400 205 m 400 215 l + 400 210 m 416 210 l + 416 205 m 416 215 l stroke + hf 8.000000 sf 401 213 m (54) show +416 175 m 416 185 l + 416 180 m 448 180 l + 448 175 m 448 185 l stroke + hf 15.000000 sf 417 183 m (55) show +416 205 m 416 215 l + 416 210 m 432 210 l + 432 205 m 432 215 l stroke + hf 8.000000 sf 417 213 m (56) show +432 205 m 432 215 l + 432 210 m 448 210 l + 448 205 m 448 215 l stroke + hf 8.000000 sf 433 213 m (57) show +448 145 m 448 155 l + 448 150 m 512 150 l + 512 145 m 512 155 l stroke + hf 15.000000 sf 449 153 m (58) show +448 175 m 448 185 l + 448 180 m 480 180 l + 480 175 m 480 185 l stroke + hf 15.000000 sf 449 183 m (59) show +448 205 m 448 215 l + 448 210 m 464 210 l + 464 205 m 464 215 l stroke + hf 8.000000 sf 449 213 m (60) show +464 205 m 464 215 l + 464 210 m 480 210 l + 480 205 m 480 215 l stroke + hf 8.000000 sf 465 213 m (61) show +480 175 m 480 185 l + 480 180 m 512 180 l + 512 175 m 512 185 l stroke + hf 15.000000 sf 481 183 m (62) show +480 205 m 480 215 l + 480 210 m 496 210 l + 496 205 m 496 215 l stroke + hf 8.000000 sf 481 213 m (63) show +496 205 m 496 215 l + 496 210 m 512 210 l + 512 205 m 512 215 l stroke + hf 8.000000 sf 497 213 m (64) show +512 55 m 512 65 l + 512 60 m 768 60 l + 768 55 m 768 65 l stroke + hf 15.000000 sf 513 63 m (65) show +512 85 m 512 95 l + 512 90 m 704 90 l + 704 85 m 704 95 l stroke + hf 15.000000 sf 513 93 m (66) show +512 115 m 512 125 l + 512 120 m 640 120 l + 640 115 m 640 125 l stroke + hf 15.000000 sf 513 123 m (67) show +512 145 m 512 155 l + 512 150 m 576 150 l + 576 145 m 576 155 l stroke + hf 15.000000 sf 513 153 m (68) show +512 175 m 512 185 l + 512 180 m 544 180 l + 544 175 m 544 185 l stroke + hf 15.000000 sf 513 183 m (69) show +512 205 m 512 215 l + 512 210 m 528 210 l + 528 205 m 528 215 l stroke + hf 8.000000 sf 513 213 m (70) show +528 205 m 528 215 l + 528 210 m 544 210 l + 544 205 m 544 215 l stroke + hf 8.000000 sf 529 213 m (71) show +544 175 m 544 185 l + 544 180 m 576 180 l + 576 175 m 576 185 l stroke + hf 15.000000 sf 545 183 m (72) show +544 205 m 544 215 l + 544 210 m 560 210 l + 560 205 m 560 215 l stroke + hf 8.000000 sf 545 213 m (73) show +560 205 m 560 215 l + 560 210 m 576 210 l + 576 205 m 576 215 l stroke + hf 8.000000 sf 561 213 m (74) show +576 145 m 576 155 l + 576 150 m 640 150 l + 640 145 m 640 155 l stroke + hf 15.000000 sf 577 153 m (75) show +576 175 m 576 185 l + 576 180 m 608 180 l + 608 175 m 608 185 l stroke + hf 15.000000 sf 577 183 m (76) show +576 205 m 576 215 l + 576 210 m 592 210 l + 592 205 m 592 215 l stroke + hf 8.000000 sf 577 213 m (77) show +592 205 m 592 215 l + 592 210 m 608 210 l + 608 205 m 608 215 l stroke + hf 8.000000 sf 593 213 m (78) show +608 175 m 608 185 l + 608 180 m 640 180 l + 640 175 m 640 185 l stroke + hf 15.000000 sf 609 183 m (79) show +608 205 m 608 215 l + 608 210 m 624 210 l + 624 205 m 624 215 l stroke + hf 8.000000 sf 609 213 m (80) show +624 205 m 624 215 l + 624 210 m 640 210 l + 640 205 m 640 215 l stroke + hf 8.000000 sf 625 213 m (81) show +640 115 m 640 125 l + 640 120 m 704 120 l + 704 115 m 704 125 l stroke + hf 15.000000 sf 641 123 m (82) show +640 145 m 640 155 l + 640 150 m 688 150 l + 688 145 m 688 155 l stroke + hf 15.000000 sf 641 153 m (83) show +640 175 m 640 185 l + 640 180 m 672 180 l + 672 175 m 672 185 l stroke + hf 15.000000 sf 641 183 m (84) show +640 205 m 640 215 l + 640 210 m 656 210 l + 656 205 m 656 215 l stroke + hf 8.000000 sf 641 213 m (85) show +656 205 m 656 215 l + 656 210 m 672 210 l + 672 205 m 672 215 l stroke + hf 8.000000 sf 657 213 m (86) show +672 175 m 672 185 l + 672 180 m 688 180 l + 688 175 m 688 185 l stroke + hf 8.000000 sf 673 183 m (87) show +688 145 m 688 155 l + 688 150 m 704 150 l + 704 145 m 704 155 l stroke + hf 8.000000 sf 689 153 m (88) show +704 85 m 704 95 l + 704 90 m 768 90 l + 768 85 m 768 95 l stroke + hf 15.000000 sf 705 93 m (89) show +704 115 m 704 125 l + 704 120 m 752 120 l + 752 115 m 752 125 l stroke + hf 15.000000 sf 705 123 m (90) show +704 145 m 704 155 l + 704 150 m 736 150 l + 736 145 m 736 155 l stroke + hf 15.000000 sf 705 153 m (91) show +704 175 m 704 185 l + 704 180 m 720 180 l + 720 175 m 720 185 l stroke + hf 8.000000 sf 705 183 m (92) show +720 175 m 720 185 l + 720 180 m 736 180 l + 736 175 m 736 185 l stroke + hf 8.000000 sf 721 183 m (93) show +736 145 m 736 155 l + 736 150 m 752 150 l + 752 145 m 752 155 l stroke + hf 8.000000 sf 737 153 m (94) show +752 115 m 752 125 l + 752 120 m 768 120 l + 768 115 m 768 125 l stroke + hf 8.000000 sf 753 123 m (95) show +768 25 m 768 35 l + 768 30 m 1024 30 l + 1024 25 m 1024 35 l stroke + hf 15.000000 sf 769 33 m (96) show +768 55 m 768 65 l + 768 60 m 960 60 l + 960 55 m 960 65 l stroke + hf 15.000000 sf 769 63 m (97) show +768 85 m 768 95 l + 768 90 m 896 90 l + 896 85 m 896 95 l stroke + hf 15.000000 sf 769 93 m (98) show +768 115 m 768 125 l + 768 120 m 832 120 l + 832 115 m 832 125 l stroke + hf 15.000000 sf 769 123 m (99) show +768 145 m 768 155 l + 768 150 m 800 150 l + 800 145 m 800 155 l stroke + hf 15.000000 sf 769 153 m (100) show +768 175 m 768 185 l + 768 180 m 784 180 l + 784 175 m 784 185 l stroke + hf 8.000000 sf 769 183 m (101) show +784 175 m 784 185 l + 784 180 m 800 180 l + 800 175 m 800 185 l stroke + hf 8.000000 sf 785 183 m (102) show +800 145 m 800 155 l + 800 150 m 832 150 l + 832 145 m 832 155 l stroke + hf 15.000000 sf 801 153 m (103) show +800 175 m 800 185 l + 800 180 m 816 180 l + 816 175 m 816 185 l stroke + hf 8.000000 sf 801 183 m (104) show +816 175 m 816 185 l + 816 180 m 832 180 l + 832 175 m 832 185 l stroke + hf 8.000000 sf 817 183 m (105) show +832 115 m 832 125 l + 832 120 m 896 120 l + 896 115 m 896 125 l stroke + hf 15.000000 sf 833 123 m (106) show +832 145 m 832 155 l + 832 150 m 864 150 l + 864 145 m 864 155 l stroke + hf 15.000000 sf 833 153 m (107) show +832 175 m 832 185 l + 832 180 m 848 180 l + 848 175 m 848 185 l stroke + hf 8.000000 sf 833 183 m (108) show +848 175 m 848 185 l + 848 180 m 864 180 l + 864 175 m 864 185 l stroke + hf 8.000000 sf 849 183 m (109) show +864 145 m 864 155 l + 864 150 m 896 150 l + 896 145 m 896 155 l stroke + hf 15.000000 sf 865 153 m (110) show +864 175 m 864 185 l + 864 180 m 880 180 l + 880 175 m 880 185 l stroke + hf 8.000000 sf 865 183 m (111) show +880 175 m 880 185 l + 880 180 m 896 180 l + 896 175 m 896 185 l stroke + hf 8.000000 sf 881 183 m (112) show +896 85 m 896 95 l + 896 90 m 960 90 l + 960 85 m 960 95 l stroke + hf 15.000000 sf 897 93 m (113) show +896 115 m 896 125 l + 896 120 m 944 120 l + 944 115 m 944 125 l stroke + hf 15.000000 sf 897 123 m (114) show +896 145 m 896 155 l + 896 150 m 928 150 l + 928 145 m 928 155 l stroke + hf 15.000000 sf 897 153 m (115) show +896 175 m 896 185 l + 896 180 m 912 180 l + 912 175 m 912 185 l stroke + hf 8.000000 sf 897 183 m (116) show +912 175 m 912 185 l + 912 180 m 928 180 l + 928 175 m 928 185 l stroke + hf 8.000000 sf 913 183 m (117) show +928 145 m 928 155 l + 928 150 m 944 150 l + 944 145 m 944 155 l stroke + hf 8.000000 sf 929 153 m (118) show +944 115 m 944 125 l + 944 120 m 960 120 l + 960 115 m 960 125 l stroke + hf 8.000000 sf 945 123 m (119) show +960 55 m 960 65 l + 960 60 m 1024 60 l + 1024 55 m 1024 65 l stroke + hf 15.000000 sf 961 63 m (120) show +960 85 m 960 95 l + 960 90 m 1008 90 l + 1008 85 m 1008 95 l stroke + hf 15.000000 sf 961 93 m (121) show +960 115 m 960 125 l + 960 120 m 992 120 l + 992 115 m 992 125 l stroke + hf 15.000000 sf 961 123 m (122) show +960 145 m 960 155 l + 960 150 m 976 150 l + 976 145 m 976 155 l stroke + hf 8.000000 sf 961 153 m (123) show +976 145 m 976 155 l + 976 150 m 992 150 l + 992 145 m 992 155 l stroke + hf 8.000000 sf 977 153 m (124) show +992 115 m 992 125 l + 992 120 m 1008 120 l + 1008 115 m 1008 125 l stroke + hf 8.000000 sf 993 123 m (125) show +1008 85 m 1008 95 l + 1008 90 m 1024 90 l + 1024 85 m 1024 95 l stroke + hf 8.000000 sf 1009 93 m (126) show +showpage diff --git a/src/bem3d/src/laplace/clustertree.txt b/src/bem3d/src/laplace/clustertree.txt new file mode 100644 index 0000000..402b83b --- /dev/null +++ b/src/bem3d/src/laplace/clustertree.txt @@ -0,0 +1,1279 @@ +1024 1024 127 +0 +2 0 1024 +4 0 768 +6 0 512 +8 0 256 +10 0 128 +12 0 64 +14 0 32 +14 0 16 +14 16 16 +16 32 32 +16 32 16 +16 48 16 +18 64 64 +20 64 32 +20 64 16 +20 80 16 +22 96 32 +22 96 16 +22 112 16 +24 128 128 +26 128 64 +28 128 32 +28 128 16 +28 144 16 +30 160 32 +30 160 16 +30 176 16 +32 192 64 +34 192 32 +34 192 16 +34 208 16 +36 224 32 +36 224 16 +36 240 16 +38 256 256 +40 256 128 +42 256 64 +44 256 32 +44 256 16 +44 272 16 +46 288 32 +46 288 16 +46 304 16 +48 320 64 +50 320 32 +50 320 16 +50 336 16 +52 352 32 +52 352 16 +52 368 16 +54 384 128 +56 384 64 +58 384 32 +58 384 16 +58 400 16 +60 416 32 +60 416 16 +60 432 16 +62 448 64 +64 448 32 +64 448 16 +64 464 16 +66 480 32 +66 480 16 +66 496 16 +68 512 256 +70 512 192 +72 512 128 +74 512 64 +76 512 32 +76 512 16 +76 528 16 +78 544 32 +78 544 16 +78 560 16 +80 576 64 +82 576 32 +82 576 16 +82 592 16 +84 608 32 +84 608 16 +84 624 16 +86 640 64 +88 640 48 +90 640 32 +90 640 16 +90 656 16 +90 672 16 +90 688 16 +92 704 64 +94 704 48 +96 704 32 +96 704 16 +96 720 16 +96 736 16 +96 752 16 +98 768 256 +100 768 192 +102 768 128 +104 768 64 +106 768 32 +106 768 16 +106 784 16 +108 800 32 +108 800 16 +108 816 16 +110 832 64 +112 832 32 +112 832 16 +112 848 16 +114 864 32 +114 864 16 +114 880 16 +116 896 64 +118 896 48 +120 896 32 +120 896 16 +120 912 16 +120 928 16 +120 944 16 +122 960 64 +124 960 48 +126 960 32 +126 960 16 +126 976 16 +126 992 16 +126 1008 16 +1 +96 +2 +65 +3 +34 +4 +19 +5 +12 +6 +9 +7 +8 +10 +11 +13 +16 +14 +15 +17 +18 +20 +27 +21 +24 +22 +23 +25 +26 +28 +31 +29 +30 +32 +33 +35 +50 +36 +43 +37 +40 +38 +39 +41 +42 +44 +47 +45 +46 +48 +49 +51 +58 +52 +55 +53 +54 +56 +57 +59 +62 +60 +61 +63 +64 +66 +89 +67 +82 +68 +75 +69 +72 +70 +71 +73 +74 +76 +79 +77 +78 +80 +81 +83 +88 +84 +87 +85 +86 +90 +95 +91 +94 +92 +93 +97 +120 +98 +113 +99 +106 +100 +103 +101 +102 +104 +105 +107 +110 +108 +109 +111 +112 +114 +119 +115 +118 +116 +117 +121 +126 +122 +125 +123 +124 +1023 +1022 +1021 +1020 +1019 +1018 +1017 +1016 +1015 +1014 +1013 +1012 +992 +993 +994 +995 +1007 +1006 +1005 +1004 +1003 +1002 +1001 +1000 +999 +998 +997 +996 +1008 +1009 +1010 +1011 +991 +990 +989 +988 +987 +986 +985 +984 +983 +982 +981 +980 +899 +898 +897 +896 +976 +977 +978 +979 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +975 +974 +973 +972 +971 +970 +969 +968 +967 +966 +965 +964 +915 +914 +913 +912 +960 +961 +962 +963 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +947 +946 +945 +944 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +931 +930 +929 +928 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +895 +894 +893 +892 +891 +890 +889 +888 +887 +886 +885 +884 +864 +865 +866 +867 +879 +878 +877 +876 +875 +874 +873 +872 +871 +870 +869 +868 +880 +881 +882 +883 +863 +862 +861 +860 +859 +858 +857 +856 +855 +854 +853 +852 +512 +513 +514 +515 +527 +526 +525 +524 +523 +522 +521 +520 +519 +518 +517 +516 +848 +849 +850 +851 +531 +530 +529 +528 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +835 +834 +833 +832 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +563 +562 +561 +560 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +547 +546 +545 +544 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +831 +830 +829 +828 +827 +826 +825 +824 +823 +822 +821 +820 +800 +801 +802 +803 +815 +814 +813 +812 +811 +810 +809 +808 +807 +806 +805 +804 +816 +817 +818 +819 +799 +798 +797 +796 +795 +794 +793 +792 +791 +790 +789 +788 +576 +577 +578 +579 +591 +590 +589 +588 +587 +586 +585 +584 +583 +582 +581 +580 +784 +785 +786 +787 +595 +594 +593 +592 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +771 +770 +769 +768 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +627 +626 +625 +624 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +611 +610 +609 +608 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +703 +702 +701 +700 +699 +698 +697 +696 +695 +694 +693 +692 +672 +673 +674 +675 +687 +686 +685 +684 +683 +682 +681 +680 +679 +678 +677 +676 +688 +689 +690 +691 +671 +670 +669 +668 +667 +666 +665 +664 +663 +662 +661 +660 +707 +706 +705 +704 +656 +657 +658 +659 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +655 +654 +653 +652 +651 +650 +649 +648 +647 +646 +645 +644 +723 +722 +721 +720 +640 +641 +642 +643 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +755 +754 +753 +752 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +739 +738 +737 +736 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +511 +510 +509 +508 +507 +506 +505 +504 +503 +502 +501 +500 +480 +481 +482 +483 +495 +494 +493 +492 +491 +490 +489 +488 +487 +486 +485 +484 +496 +497 +498 +499 +479 +478 +477 +476 +475 +474 +473 +472 +471 +470 +469 +468 +387 +386 +385 +384 +464 +465 +466 +467 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +463 +462 +461 +460 +459 +458 +457 +456 +455 +454 +453 +452 +403 +402 +401 +400 +448 +449 +450 +451 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +435 +434 +433 +432 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +419 +418 +417 +416 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +383 +382 +381 +380 +379 +378 +377 +376 +375 +374 +373 +372 +352 +353 +354 +355 +367 +366 +365 +364 +363 +362 +361 +360 +359 +358 +357 +356 +368 +369 +370 +371 +351 +350 +349 +348 +347 +346 +345 +344 +343 +342 +341 +340 +339 +338 +337 +336 +335 +334 +333 +332 +331 +330 +329 +328 +327 +326 +325 +324 +323 +322 +321 +320 +319 +318 +317 +316 +315 +314 +313 +312 +311 +310 +309 +308 +288 +289 +290 +291 +303 +302 +301 +300 +299 +298 +297 +296 +295 +294 +293 +292 +304 +305 +306 +307 +287 +286 +285 +284 +283 +282 +281 +280 +279 +278 +277 +276 +275 +274 +273 +272 +271 +270 +269 +268 +267 +266 +265 +264 +263 +262 +261 +260 +259 +258 +257 +256 +255 +254 +253 +252 +251 +250 +249 +248 +247 +246 +245 +244 +224 +225 +226 +227 +239 +238 +237 +236 +235 +234 +233 +232 +231 +230 +229 +228 +240 +241 +242 +243 +223 +222 +221 +220 +219 +218 +217 +216 +215 +214 +213 +212 +131 +130 +129 +128 +208 +209 +210 +211 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +207 +206 +205 +204 +203 +202 +201 +200 +199 +198 +197 +196 +147 +146 +145 +144 +192 +193 +194 +195 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +179 +178 +177 +176 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +163 +162 +161 +160 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +127 +126 +125 +124 +123 +122 +121 +120 +119 +118 +117 +116 +96 +97 +98 +99 +111 +110 +109 +108 +107 +106 +105 +104 +103 +102 +101 +100 +112 +113 +114 +115 +95 +94 +93 +92 +91 +90 +89 +88 +87 +86 +85 +84 +83 +82 +81 +80 +79 +78 +77 +76 +75 +74 +73 +72 +71 +70 +69 +68 +67 +66 +65 +64 +63 +62 +61 +60 +59 +58 +57 +56 +55 +54 +53 +52 +32 +33 +34 +35 +47 +46 +45 +44 +43 +42 +41 +40 +39 +38 +37 +36 +48 +49 +50 +51 +31 +30 +29 +28 +27 +26 +25 +24 +23 +22 +21 +20 +19 +18 +17 +16 +15 +14 +13 +12 +11 +10 +9 +8 +7 +6 +5 +4 +3 +2 +1 +0 diff --git a/src/bem3d/src/laplace/t.cpp b/src/bem3d/src/laplace/t.cpp index 77ecc07..83510f2 100644 --- a/src/bem3d/src/laplace/t.cpp +++ b/src/bem3d/src/laplace/t.cpp @@ -1,30 +1,25 @@ -#include "../boundary_mesh/Mesh.hpp" -#include "../boundary_mesh/mixin/LoadingObj.hpp" -#include "../boundary_mesh/mixin/ExportingObj.hpp" -#include "../boundary_mesh/mixin/RefiningAdaptivly.hpp" -#include "../boundary_mesh/mixin/RefiningUniformly.hpp" -#include "../boundary_mesh/layer/Marker.hpp" +#include "../hilbert.hpp" +#include "../boundary_mesh/FlexibleMesh.hpp" #include "../spaces/P0Space.hpp" #include "SimpleLayerPotential.hpp" using namespace boundary_mesh; using namespace space; using namespace laplace; -typedef mixin::LoadingObj< - mixin::ExportingObj< - mixin::RefiningAdaptivly < - mixin::RefiningUniformly < - Mesh<> > > > > - ObjMesh; int main() { - const ObjMesh::LoadingObj m("test_small.obj"); + const BoundaryMesh m = BoundaryMesh::Alg::loadFromObj("test_small.obj"); std::cerr << "coarse mesh has " << m.getNumberOfFaces() << " faces" << std::endl; clock_t commence, complete; commence = clock(); - ObjMesh refined = m.refineUniform().refineUniform().refineUniform().refineUniform(); + const BoundaryMesh refined = + BoundaryMesh::Alg::refineUniformly( + BoundaryMesh::Alg::refineUniformly( + BoundaryMesh::Alg::refineUniformly( + BoundaryMesh::Alg::refineUniformly( + BoundaryMesh::Alg::refineUniformly( m ) ) ) )); complete = clock(); long lTime = (complete-commence); std::cerr << "fine mesh has " << refined.getNumberOfFaces() << " faces" << std::endl; @@ -38,13 +33,6 @@ int main() std::cerr << "Time for setting up space: " << lTime * 1000.0 / CLOCKS_PER_SEC << std::endl; -// commence = clock(); -// s.createClusterFactory(); -// complete = clock(); -// lTime = (complete-commence); -// std::cerr << "Time for setting up cluster factory: " -// << lTime * 1000.0 / CLOCKS_PER_SEC << std::endl; - commence = clock(); SimpleLayerPotential V(s); complete = clock(); @@ -52,14 +40,19 @@ int main() std::cerr << "Time for setting up Simple Layer Potential: " << lTime * 1000.0 / CLOCKS_PER_SEC << std::endl; - double rhs[s.getNumberOfElements()]; + std::vector< double >rhs( s.getNumberOfElements(), 0. ); for ( int i=0; i solution = V.solveGMRes(rhs); + complete = clock(); + lTime = (complete-commence); + std::cerr << "Time for solving: " + << lTime * 1000.0 / CLOCKS_PER_SEC << std::endl; return 0; } + diff --git a/src/bem3d/src/laplace/testLaplace b/src/bem3d/src/laplace/testLaplace new file mode 100755 index 0000000000000000000000000000000000000000..c421623242de593154d09df9709d2e7dc0692460 GIT binary patch literal 2470530 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

yNJF`-O-2|EOf-fFh! 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�KvBv>0bC! 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

=Q6MR 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 z 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