]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] Dateibeschreibungen hinzugefügt
authorPeter Schaefer <peter.schaefer@tuwien.ac.at>
Wed, 10 Oct 2012 13:26:01 +0000 (15:26 +0200)
committerPeter Schaefer <peter.schaefer@tuwien.ac.at>
Wed, 10 Oct 2012 13:26:01 +0000 (15:26 +0200)
[doc] listings Languages Angepasst
[src] gauss multiple include Bug behoben

doc/doc.tex
doc/lstings.sty
src/compute.m
src/export_gauss.m
src/gauss.hpp
src/mex_build_V.cpp
src/slpRectangle.cpp
src/slpRectangle.hpp

index e8cf7f3ed9ed7ba4fca24d68358c7b808a4e8f6f..628f763a8227fcc248ebb4d4cd489f937a6de0b6 100644 (file)
   
 \usepackage{lstings}   %Code Einbinden (Private)
   
-\lstdefinelanguage{oC++}[]{C++}{
-%   morekeywords=[1]{omp,parallel,schedule,critical,end},
-  morekeywords=[2]{pow,sqrt,fabs,log,asinh,atan,arsinh,cos,sin,omp_get_thread_num,omp_get_max_threads,
-                   mexFunction,mexErrMsgTxt,mxCreateDoubleMatrix,mxGetPr,mxGetM,mxGetN,mexPrintf},     %lib Functions
-  morekeywords=[3]{quad,gauss_nodes,gauss_size,HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_,GAUSS_NODES,DEBUG,PARALLEL,
-                   MINSIZE_PER_WORKER,MAX_WORKER},     %Globals
-  morekeywords=[4]{add,sub,set,dimOfThird,getSCorner,distT,dimOfVec,
-                   sign,max,min,switch_site,switch_dim,dist,dist2,dist_s2,dist_s,setQuad,
-                   f_A,g_QY,g_AY,G_QY1Y2,G_AY2X2,G_AY1Y2,Gs_AX2Y1Y2,
-                   F_par,F_ort,apply0Int4,apply0Int2,
-                   calcParIntA,calcParIntQX1X2,calcParIntQY1X1,calcParIntQY1,calcParIntQ,calcOrtIntA,calcOrtIntQX1X2,calcOrtIntQ,
-                   cParO1,cOrtO1,cParO2,cOrtO2,cParO3,cOrtO3,cParO4,cOrtO4},   %own Functions
-}
-\lstdefinelanguage{oM}[]{Matlab}{
-  morekeywords=[1]{assert,repmat,mod,regexprep},
-  morekeywords=[2]{},  %lib Functions
-  morekeywords=[3]{G_D,G_C,G_E,G_N,G_T,G_S},   %Globals
-  morekeywords=[4]{compute,plotShape,plotMark,export_exmpl,export_gauss,export_mesh,mark,gauss,refineQuad,areaQuad,mex_build_V,t2str}, %own Functions
-}
-
 \definecolor{gray}{gray}{.8}
 \definecolor{dred}{rgb}{.8,0,0}
 \definecolor{dgreen}{rgb}{0,.8,.4}
index b5eb7c625ab25762d2cde1c8e628f0ed18b50ad0..507c08904f5e9260345725e24da4f5e10cf8d80c 100755 (executable)
   extendedchars=true
 }
 
+\lstdefinelanguage[MY]{C++}[ISO]{C++}{
+%   morekeywords=[1]{omp,parallel,schedule,critical,end},
+  morekeywords=[2]{pow,sqrt,fabs,log,asinh,atan,arsinh,cos,sin,omp_get_thread_num,omp_get_max_threads,
+                   mexFunction,mexErrMsgTxt,mxCreateDoubleMatrix,mxGetPr,mxGetM,mxGetN,mexPrintf},     %lib Functions
+  morekeywords=[3]{GAUSS_SIZE,GAUSS_NODES,HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_,DEBUG,PARALLEL,
+                   MINSIZE_PER_WORKER,MAX_WORKER},     %Globals
+  morekeywords=[4]{int,double,void,_gauss,gauss},      %Typen
+  deletekeywords=[1]{int,double,void},
+  morekeywords=[5]{add,sub,set,dimOfThird,getSCorner,distT,dimOfVec,
+                   sign,max,min,switch_site,switch_dim,dist,dist2,dist_s2,dist_s,
+                   f_A,g_QY,g_AY,G_QY1Y2,G_AY2X2,G_AY1Y2,Gs_AX2Y1Y2,
+                   F_par,F_ort,apply0Int4,apply0Int2,
+                   calcParIntA,calcParIntQX1X2,calcParIntQY1X1,calcParIntQY1,calcParIntQ,calcOrtIntA,calcOrtIntQX1X2,calcOrtIntQ,
+                   cParO1,cOrtO1,cParO2,cOrtO2,cParO3,cOrtO3,cParO4,cOrtO4},   %own Functions
+}[keywords]
+
+\lstdefinelanguage{M}[]{Matlab}{
+  morecomment=[l]{...},
+  morekeywords=[1]{assert,repmat,mod,regexprep,...},
+  morekeywords=[2]{},  %lib Functions
+  morekeywords=[3]{G_D,G_C,G_E,G_N,G_T,G_S},   %Globals
+  morekeywords=[4]{},  %Typen
+  morekeywords=[5]{compute,plotShape,plotMark,export_exmpl,export_gauss,export_mesh,mark,gauss,refineQuad,areaQuad,mex_build_V,t2str}, %own Functions
+}
+
+\lstset{defaultdialect=[MY]C++}
index 3c66e88728d96552801364f0672d15e2aee5ffb2..cf35d7d69a57263aa17bf14347e98953ccb69ff1 100644 (file)
@@ -1,16 +1,20 @@
 function [data er fileo] = compute(file,times,zeta,typ,theta,nu,vcon)
-% [data er] = compute(file,times,zeta,type,theta,nu,vcon,out)
-% Fuehrt times Verfeinerungsschritte aus
-%
-% file - StartNetz
-% times - wie oft Verfeinert werden soll
-% zeta & typ - Bestimmen die Art der Matrix Berechnung
-% theta - adaptiv?
-% nu - isotrop?
-% vcon - Vorkonditionierung der Matrix? 1 oder 0
-% out - (optional) Dateizusatz um Netz, Loesung & co zu speichern
-%
-% P. Schaefer
+%***************************************************************************
+%* [data er fileo] = compute(file,times,zeta,typ,theta,nu,vcon)            *
+%*                                                                         *
+%*   Fuehrt times Verfeinerungsschritte mit gewaehlten Parametern aus.     *
+%*                                                                         *
+%*   file - StartNetz                                                      *
+%*   times - wie oft Verfeinert werden soll                                *
+%*   zeta & typ - Bestimmen die Art der Matrix Berechnung                  *
+%*   theta - adaptiv?                                                      *
+%*   nu - isotrop?                                                         *
+%*   vcon - Vorkonditionierung der Matrix? 1 oder 0                        *
+%*                                                                         *
+%***************************************************************************
+%* Author: Peter Schaefer                             schaeferpm@gmail.com *
+%* Version: 1.0  (2012)                                                    *
+%***************************************************************************
 
 % Datei laden
 load(file)
@@ -29,7 +33,8 @@ for j = 1:times
   end
   
   %uniformIsotrop Verfeinern
-  [coo_fine,ele_fine,neigh_fine,f2s,sit_fine]=refineQuad(coordinates,elements,neigh,sites,2);
+  [coo_fine,ele_fine,neigh_fine,f2s,sit_fine]...
+    =refineQuad(coordinates,elements,neigh,sites,2);
 
   %Flaecheninhalte Berechnen (rhs)
   b_fine = areaQuad(sit_fine);
@@ -73,7 +78,8 @@ for j = 1:times
     end
     
     % \tilde \mu ( \Pi h -h + L_2 )
-    tmu = hmin.* b .* sum((x_fine(f2s)'-repmat(sum(x_fine(f2s)',1)/4,4,1)).^2)' /4;
+    tmu = hmin.* b .* ...
+      sum((x_fine(f2s)'-repmat(sum(x_fine(f2s)',1)/4,4,1)).^2)' /4;
     
     %Fehlerschaetzer 2 aufbauen
     V = mex_build_V(coordinates,elements,zeta,typ(i));
@@ -158,9 +164,8 @@ for j = 1:times
 
     
     %\tilde \mu 2 = ( ||\Pi h|| - ||h||)
-    tmu2 = hmin.* b.* (...
-    sum((x_fine(f2s)').^2)'-sum(repmat(sum(x_fine(f2s)',1)/4,4,1).^2)'...
-    ) /4;
+    tmu2 = hmin.* b.* (sum((x_fine(f2s)').^2)'...
+      -sum(repmat(sum(x_fine(f2s)',1)/4,4,1).^2)') /4;
   
     % |||h/2 -h|||
 %     eta = xd_fine'*A_fine*xd_fine;    
@@ -206,7 +211,8 @@ for j = 1:times
 %   view(2)
 %   plotMark(find(marked>1),G_C,G_E);
   
-  assert(size(elements,1)==length(marked),'MarkierungsVektor ist fehlerhaft')
+  assert(size(elements,1)==length(marked),...
+    'MarkierungsVektor ist fehlerhaft')
   
   old_C = coordinates;
   old_E = elements;
@@ -216,7 +222,8 @@ for j = 1:times
 %   plotShape(coordinates,elements(:,:),'db');view(2);
     
   %Netz Verfeinern, wie durch marked bestimmt
-  [coordinates, elements, neigh, f, sites, er] = refineQuad(coordinates,elements,neigh,sites,marked);
+  [coordinates, elements, neigh, f, sites, er]...
+    = refineQuad(coordinates,elements,neigh,sites,marked);
   
 %   figure(2)
 %   plotShape(coordinates,elements(:,:),'db');view(2);
@@ -224,11 +231,13 @@ for j = 1:times
 %   f
   
   %Vater Sohn test
-  assert(sum(areaQuad(old_S))==sum(areaQuad(sites)),'Gesamtinhalt Fehlerhaft')
+  assert(sum(areaQuad(old_S))==sum(areaQuad(sites)),...
+    'Gesamtinhalt Fehlerhaft')
   
   e = 0;
   for k = 1:size(data,1)
-    e = e +  abs(areaQuad(old_S(k,:)) - sum(areaQuad(sites(unique(f(k,:)'),:))));
+    e = e +  abs(areaQuad(old_S(k,:))...
+      - sum(areaQuad(sites(unique(f(k,:)'),:))));
   end
   assert(e==0, 'Einzelne Inhalte Fehlerhaft')
   
@@ -269,7 +278,8 @@ for j = 1:times
 %      out = varargin{1};
 %    end
 %   typeN = int2str(type);
-%  save (['meshSave/fine_' out typeN(typeN~=' ') '_' int2str(size(data,1))],...
+%  save (['meshSave/fine_' out typeN(typeN~=' ')...
+%      '_' int2str(size(data,1))],...
 %      'coo_fine', 'ele_fine','neigh_fine','f2s','data',...
 %      'save_A','save_x','save_A_fine','save_x_fine','b','b_fine')
 
index 69028a076cbcabe1b87516e36f6bd1baaf60b46f..681e4522593fbad744686e22ab1d99e228b93e59 100644 (file)
@@ -1,32 +1,64 @@
 function str = export_gauss(start,stop,steps,file)
+%***************************************************************************
+%* str = export_gauss(start,stop,steps,file)                               *
+%*                                                                         *
+%*   Speichert Gauss Quadraturpunkte und Gewichte in einer c++ Datei.      *
+%*                                                                         *
+%*   start - Beginn des Intervalls fuer die GaussQuadratur                 *
+%*   stop - Ende des Intervalls [start stop]                               *
+%*   steps - Vektor mit den Anzahlen der Quadraturpunkte                   *
+%*   file - gibt den Namen fuer die Datei an in der Code gespeichert wird  *
+%*                                                                         *
+%*-------------------------------------------------------------------------*
+%*  Beispiel:                                                              *
+%*                                                                         *
+%*  > export_gauss(0, 1, [1 2 4], 'gauss.hpp')                             *
+%*                                                                         *
+%*  Erstellt die Datei 'gauss.hpp', in der sich der Code fuer die          *
+%*  Konstanten GAUSS_SIZE und GAUSS_NODES befindet. Dabei werden die       *
+%*  Gausspunkte und -gewichte des Intervalls [0,1] fuer 1,2 und 4          * 
+%*  Auswertungsstellen generiert.                                          *
+%*                                                                         *
+%***************************************************************************
+%* Author: Peter Schaefer                             schaeferpm@gmail.com *
+%* Version: 1.0  (2012)                                                    *
+%***************************************************************************
 
-str = ['#ifndef GAUSS_NODES' char(10) ...
-... '#define GAUSS_NODES' char(10) ...
-'/*' char(10) ...
-' * Gaus Auswertungspunkte auf dem Intervall'...
-  ' [' num2str(start) ' ' num2str(stop) ']' char(10) ...
-' *' char(10) ...
-' * 2^$NUM entspricht der Anzahl der Auswertungspunkte' char(10) ...
-' *' char(10) ...
-' * Anzahl der Punkte:    GAUSS_SIZE[$NUM]' char(10) ...
-' * Auswertungstellen:    GAUSS_NODES[$NUM][$I].n  ($I aktuelle Position)' char(10) ...
-' * Gewichte:             GAUSS_NODES[$NUM][$I].w  ($I aktuelle Position)' char(10) ...
-' *' char(10) ...
-' * Beispiel:' char(10) ...
-' *' char(10) ...
-' * > double sol;' char(10) ...
-' * > for(int i=0;i<GAUSS_SIZE[3];++i)' char(10) ...
-' * >    sol += sin(GAUSS_NODES[3][i].n) * GAUSS_NODES[3][i].w;' char(10) ...
-' *' char(10) ...
-' * Peter Schaefer (Automatisch generiert durch export_gauss.m )' char(10) ...
-' */' char(10)  char(10) ...
+str = ['/***************************************************************************/' char(10) ...
+'/* gauss.hpp                                                               */' char(10) ...
+'/*                                                                         */' char(10) ...
+'/*   Diese Datei definiert Konstanten fuer die GaussQuadratur              */' char(10) ...
+'/*                                                                         */' char(10) ...
+'/*   Gaus Auswertungspunkte auf dem Intervall ' ...
+             '[' num2str(start) ' ' num2str(stop) ']                        */' char(10) ...
+'/*                                                                         */' char(10) ...
+'/*   2^$NUM entspricht der Anzahl der Auswertungspunkte                    */' char(10) ...
+'/*                                                                         */' char(10) ...
+'/*   Anzahl der Punkte:    GAUSS_SIZE[$NUM]                                */' char(10) ...
+'/*   Auswertungstellen:    GAUSS_NODES[$NUM][$I].n  ($I aktuelle Position) */' char(10) ...
+'/*   Gewichte:             GAUSS_NODES[$NUM][$I].w  ($I aktuelle Position) */' char(10) ...
+'/*                                                                         */' char(10) ...
+'/*                                                                         */' char(10) ...
+'/*   Beispiel:                                                             */' char(10) ...
+'/*                                                                         */' char(10) ...
+'/*   > double sol;                                                         */' char(10) ...
+'/*   > for(int i=0;i<GAUSS_SIZE[3];++i)                                    */' char(10) ...
+'/*   >    sol += sin(GAUSS_NODES[3][i].n) * GAUSS_NODES[3][i].w;           */' char(10) ...
+'/*                                                                         */' char(10) ...
+'/***************************************************************************/' char(10) ...
+'/* Author: Peter Schaefer                             schaeferpm@gmail.com */' char(10) ...
+'/* Version: 1.0  (2012)                                                    */' char(10) ...
+'/***************************************************************************/' char(10) ...
+char(10) ...
+'#ifndef GAUSS_NODES_' char(10) ...
+'#define GAUSS_NODES_' char(10) ...
+char(10) ...
 'typedef struct _gauss {' char(10) ...
 '      double n;' char(10) ...
 '      double w;' char(10) ...
 '} gauss;' char(10) ...
 char(10)];
 
-
 preci = 21;
 str2 =['gauss const GAUSS_NODES[][' num2str(max(steps)) '] = {' char(10)];
 str1 =['double const GAUSS_SIZE[] = { '];
index 729f603b41651e05b7bcc89277892b2c2bfc5899..b88c18c9c4767bae75f23351958d708c54c9e244 100644 (file)
@@ -1,21 +1,30 @@
-#ifndef GAUSS_NODES
-/*
- * Gaus Auswertungspunkte auf dem Intervall [0 1]
- *
- * 2^$NUM entspricht der Anzahl der Auswertungspunkte
- *
- * Anzahl der Punkte:    GAUSS_SIZE[$NUM]
- * Auswertungstellen:    GAUSS_NODES[$NUM][$I].n  ($I aktuelle Position)
- * Gewichte:             GAUSS_NODES[$NUM][$I].w  ($I aktuelle Position)
- *
- * Beispiel:
- *
- * > double sol;
- * > for(int i=0;i<GAUSS_SIZE[3];++i)
- * >    sol += sin(GAUSS_NODES[3][i].n) * GAUSS_NODES[3][i].w;
- *
- * Peter Schaefer (Automatisch generiert durch export_gauss.m )
- */
+/***************************************************************************/
+/* gauss.hpp                                                               */
+/*                                                                         */
+/*   Diese Datei definiert Konstanten fuer die GaussQuadratur              */
+/*                                                                         */
+/*   Gaus Auswertungspunkte auf dem Intervall [0 1]                        */
+/*                                                                         */
+/*   2^$NUM entspricht der Anzahl der Auswertungspunkte                    */
+/*                                                                         */
+/*   Anzahl der Punkte:    GAUSS_SIZE[$NUM]                                */
+/*   Auswertungstellen:    GAUSS_NODES[$NUM][$I].n  ($I aktuelle Position) */
+/*   Gewichte:             GAUSS_NODES[$NUM][$I].w  ($I aktuelle Position) */
+/*                                                                         */
+/*                                                                         */
+/*   Beispiel:                                                             */
+/*                                                                         */
+/*   > double sol;                                                         */
+/*   > for(int i=0;i<GAUSS_SIZE[3];++i)                                    */
+/*   >    sol += sin(GAUSS_NODES[3][i].n) * GAUSS_NODES[3][i].w;           */
+/*                                                                         */
+/***************************************************************************/
+/* Author: Peter Schaefer                             schaeferpm@gmail.com */
+/* Version: 1.0  (2012)                                                    */
+/***************************************************************************/
+
+#ifndef GAUSS_NODES_
+#define GAUSS_NODES_
 
 typedef struct _gauss {
        double n;
index 8e6817aba46fe19ef61765797579cff94ee643b6..d7a985e55ef5076f7e98565fac7b7374dce046c6 100644 (file)
@@ -1,26 +1,29 @@
-/*\r
- * MEX FUNKTION mex_build_V(coo,ele,zeta,type)\r
- *\r
- * coo  : Koordinaten Matrix\r
- * ele  : Element Matrix\r
- * zeta : Steuerungsvariable der Zulaessigeitsbedingungen\r
- * type : Bestimmt die Art der Berechnung\r
- *\r
- * TYPES----\r
- * 1 : Voll Analytisch\r
- *             zeta wird ignoriert\r
- *\r
- * 2 : Semianalytisch im Fernfeld Quadratur ueber beide Elemente\r
- *             Quadratur bei : max{dia(T1),dia(T2)} < zeta[0] * dist(T1,T2)\r
- *\r
- * 3 : Semianalytisch wie (2) und Quadratur ueber eine Achse\r
- *             Quadratur bei : min{x[1],y[1]} < zeta[0] * dist(x[1],y[1])\r
- *\r
- * 4 : Semianalytisch wie (2) und Quadratur ueber ein Element\r
- *             Quadratur bei : min{dia(T1),dia(T2)} < zeta[0] * dist(T1,T2)\r
- *\r
- * Peter Schaefer\r
- */\r
+/***************************************************************************/\r
+/* mex_build_v.cpp                                                         */\r
+/*                                                                         */\r
+/*   Definiert die MEX Funktion mex_build_V(coo,ele,zeta,type)             */\r
+/*     coo  : Koordinaten Matrix                                           */\r
+/*     ele  : Element Matrix                                               */\r
+/*     zeta : Steuerungsvariable der Zulaessigeitsbedingungen              */\r
+/*     type : Bestimmt die Art der Berechnung                              */\r
+/*                                                                         */\r
+/*     TYPES----                                                           */\r
+/*     1 : Voll Analytisch                                                 */\r
+/*       zeta wird ignoriert                                               */\r
+/*                                                                         */\r
+/*     2 : Semianalytisch im Fernfeld Quadratur ueber beide Elemente       */\r
+/*       Quadratur bei : max{dia(T1),dia(T2)} < zeta[0] * dist(T1,T2)      */\r
+/*                                                                         */\r
+/*     3 : Semianalytisch wie (2) und Quadratur ueber eine Achse           */\r
+/*       Quadratur bei : min{x[1],y[1]} < zeta[0] * dist(x[1],y[1])        */\r
+/*                                                                         */\r
+/*     4 : Semianalytisch wie (2) und Quadratur ueber ein Element          */\r
+/*       Quadratur bei : min{dia(T1),dia(T2)} < zeta[0] * dist(T1,T2)      */\r
+/*                                                                         */\r
+/***************************************************************************/\r
+/* Author: Peter Schaefer                             schaeferpm@gmail.com */\r
+/* Version: 1.0  (2012)                                                    */\r
+/***************************************************************************/\r
 \r
 #define DEBUG 1\r
 #define PARALLEL\r
index 18899e684219ed6fb918e07f1a4b2ae0b579ce32..37db16db14b12871471a250a1b624ca1b7ac65bf 100644 (file)
@@ -1,3 +1,15 @@
+/***************************************************************************/\r
+/* slpRectangle.cpp                                                        */\r
+/*   Beschreibung                                                          */\r
+/*                                                                         */\r
+/*                                                                         */\r
+/*                                                                         */\r
+/*                                                                         */\r
+/***************************************************************************/\r
+/* Author: Peter Schaefer                             schaeferpm@gmail.com */\r
+/* Version: 1.0  (2012)                                                    */\r
+/***************************************************************************/\r
+\r
 //#include <iostream>\r
 #include <math.h>\r
 //#include <cassert>\r
index 95e937618b96f31dc08f5488a5d6607b57a63c72..45f22f377e5adf2933009387a0a97bc4e1050d12 100644 (file)
@@ -1,3 +1,15 @@
+/***************************************************************************/
+/* slpRectangle.hpp                                                        */
+/*   Beschreibung...                                                       */
+/*                                                                         */
+/*                                                                         */
+/*                                                                         */
+/*                                                                         */
+/***************************************************************************/
+/* Author: Peter Schaefer                             schaeferpm@gmail.com */
+/* Version: 1.0  (2012)                                                    */
+/***************************************************************************/
+
 #ifndef HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_
 #define HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_