From: Peter Schaefer Date: Wed, 10 Oct 2012 13:26:01 +0000 (+0200) Subject: [src] Dateibeschreibungen hinzugefügt X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=d37a481dd36ed1596e1eb397bbfdb6a4a33e43d1;p=bacc.git [src] Dateibeschreibungen hinzugefügt [doc] listings Languages Angepasst [src] gauss multiple include Bug behoben --- diff --git a/doc/doc.tex b/doc/doc.tex index e8cf7f3..628f763 100644 --- a/doc/doc.tex +++ b/doc/doc.tex @@ -21,26 +21,6 @@ \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} diff --git a/doc/lstings.sty b/doc/lstings.sty index b5eb7c6..507c089 100755 --- a/doc/lstings.sty +++ b/doc/lstings.sty @@ -56,3 +56,29 @@ 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++} diff --git a/src/compute.m b/src/compute.m index 3c66e88..cf35d7d 100644 --- a/src/compute.m +++ b/src/compute.m @@ -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') diff --git a/src/export_gauss.m b/src/export_gauss.m index 69028a0..681e452 100644 --- a/src/export_gauss.m +++ b/src/export_gauss.m @@ -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 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 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[] = { ']; diff --git a/src/gauss.hpp b/src/gauss.hpp index 729f603..b88c18c 100644 --- a/src/gauss.hpp +++ b/src/gauss.hpp @@ -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 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 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; diff --git a/src/mex_build_V.cpp b/src/mex_build_V.cpp index 8e6817a..d7a985e 100644 --- a/src/mex_build_V.cpp +++ b/src/mex_build_V.cpp @@ -1,26 +1,29 @@ -/* - * MEX FUNKTION mex_build_V(coo,ele,zeta,type) - * - * coo : Koordinaten Matrix - * ele : Element Matrix - * zeta : Steuerungsvariable der Zulaessigeitsbedingungen - * type : Bestimmt die Art der Berechnung - * - * TYPES---- - * 1 : Voll Analytisch - * zeta wird ignoriert - * - * 2 : Semianalytisch im Fernfeld Quadratur ueber beide Elemente - * Quadratur bei : max{dia(T1),dia(T2)} < zeta[0] * dist(T1,T2) - * - * 3 : Semianalytisch wie (2) und Quadratur ueber eine Achse - * Quadratur bei : min{x[1],y[1]} < zeta[0] * dist(x[1],y[1]) - * - * 4 : Semianalytisch wie (2) und Quadratur ueber ein Element - * Quadratur bei : min{dia(T1),dia(T2)} < zeta[0] * dist(T1,T2) - * - * Peter Schaefer - */ +/***************************************************************************/ +/* mex_build_v.cpp */ +/* */ +/* Definiert die MEX Funktion mex_build_V(coo,ele,zeta,type) */ +/* coo : Koordinaten Matrix */ +/* ele : Element Matrix */ +/* zeta : Steuerungsvariable der Zulaessigeitsbedingungen */ +/* type : Bestimmt die Art der Berechnung */ +/* */ +/* TYPES---- */ +/* 1 : Voll Analytisch */ +/* zeta wird ignoriert */ +/* */ +/* 2 : Semianalytisch im Fernfeld Quadratur ueber beide Elemente */ +/* Quadratur bei : max{dia(T1),dia(T2)} < zeta[0] * dist(T1,T2) */ +/* */ +/* 3 : Semianalytisch wie (2) und Quadratur ueber eine Achse */ +/* Quadratur bei : min{x[1],y[1]} < zeta[0] * dist(x[1],y[1]) */ +/* */ +/* 4 : Semianalytisch wie (2) und Quadratur ueber ein Element */ +/* Quadratur bei : min{dia(T1),dia(T2)} < zeta[0] * dist(T1,T2) */ +/* */ +/***************************************************************************/ +/* Author: Peter Schaefer schaeferpm@gmail.com */ +/* Version: 1.0 (2012) */ +/***************************************************************************/ #define DEBUG 1 #define PARALLEL diff --git a/src/slpRectangle.cpp b/src/slpRectangle.cpp index 18899e6..37db16d 100644 --- a/src/slpRectangle.cpp +++ b/src/slpRectangle.cpp @@ -1,3 +1,15 @@ +/***************************************************************************/ +/* slpRectangle.cpp */ +/* Beschreibung */ +/* */ +/* */ +/* */ +/* */ +/***************************************************************************/ +/* Author: Peter Schaefer schaeferpm@gmail.com */ +/* Version: 1.0 (2012) */ +/***************************************************************************/ + //#include #include //#include diff --git a/src/slpRectangle.hpp b/src/slpRectangle.hpp index 95e9376..45f22f3 100644 --- a/src/slpRectangle.hpp +++ b/src/slpRectangle.hpp @@ -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_