[cig-commits] commit: modified Accuracy Benchmarks for new BC's

Mercurial hg at geodynamics.org
Thu May 29 11:26:23 PDT 2008


changeset:   132:756984d5461b
user:        Marc Spiegelman <mspieg at ldeo.columbia.edu>
date:        Wed May 28 23:26:50 2008 -0400
files:       Benchmarks/Accuracy/commonOptions_FieldSplit.options Benchmarks/Accuracy/createBenchmarkInputs.m matlab/sincSolitaryWaves/writeSolitaryWave2DInputFile.m
description:
modified Accuracy Benchmarks for new BC's
M   Benchmarks/Accuracy/commonOptions_FieldSplit.options
	added zBCFlag 1 for non-periodic z boundary
M   Benchmarks/Accuracy/createBenchmarkInputs.m
	modified for zBCFlag 1
M   matlab/sincSolitaryWaves/writeSolitaryWave2DInputFile.m
	correctly sizes input files for different boundary conditions


diff -r 4bfb82142b33 -r 756984d5461b Benchmarks/Accuracy/commonOptions_FieldSplit.options
--- a/Benchmarks/Accuracy/commonOptions_FieldSplit.options	Mon Apr 21 19:59:48 2008 -0400
+++ b/Benchmarks/Accuracy/commonOptions_FieldSplit.options	Wed May 28 23:26:50 2008 -0400
@@ -1,3 +1,6 @@
+# Use dirichlet Boundary conditions
+-zBCFlag 1
+
 # set runtime and output time 
 -t_max 11
 -t_output 1
diff -r 4bfb82142b33 -r 756984d5461b Benchmarks/Accuracy/createBenchmarkInputs.m
--- a/Benchmarks/Accuracy/createBenchmarkInputs.m	Mon Apr 21 19:59:48 2008 -0400
+++ b/Benchmarks/Accuracy/createBenchmarkInputs.m	Wed May 28 23:26:50 2008 -0400
@@ -19,8 +19,12 @@ xzRange = [ width height ];
 xzRange = [ width height ];
 
 % multi-grid course grid parameters (with mglevels =4 yields a 64x64 mesh
-ni_coarse = 8;
-nj_coarse = 8;
+ni_coarse = 4;
+nj_coarse = 4;
+zBCFlag = true; % use dirichlet in Z
+if zBCFlag
+   nj_coarse = nj_coarse + 1;
+end
 nCoarse = [ ni_coarse nj_coarse ];
 
 % wave position parameters
@@ -35,7 +39,9 @@ waveSpeed = [ 5 7 10 ];
 waveSpeed = [ 5 7 10 ];
 
 % multigrid levels (controls finest grid resolution)
-mglevels = [ 4 5 6 7 ]; %64x64 to 512x512 
+mglevels = [ 5:8  ]; %64x64 to 512x512 
+
+bcFlags=[ 0 1 ];  % periodic x, dirichlet z
 
 gridPointsPerCompactionLength = ni_coarse*2.^(mglevels-1)/width;
 
@@ -51,7 +57,7 @@ for i = 1:length(waveSpeed)
       mkdir(dirName);
       cd(dirName);
       filename = sprintf('init_%s',dirName);
-      [phi, x, z] = writeSolitaryWave2DInputFile(filename,@(x,z) initPhi2DWave(x,z,c,xCenter),c,xzRange,mglevels(j),nCoarse);
+      [phi, x, z] = writeSolitaryWave2DInputFile(filename,@(x,z) initPhi2DWave(x,z,c,xCenter),c,xzRange,mglevels(j),nCoarse,bcFlags);
       cd ..
       if doVis
 	 figure;
diff -r 4bfb82142b33 -r 756984d5461b matlab/sincSolitaryWaves/writeSolitaryWave2DInputFile.m
--- a/matlab/sincSolitaryWaves/writeSolitaryWave2DInputFile.m	Mon Apr 21 19:59:48 2008 -0400
+++ b/matlab/sincSolitaryWaves/writeSolitaryWave2DInputFile.m	Wed May 28 23:26:50 2008 -0400
@@ -1,29 +1,37 @@ function [phi,x,y]=writeSolitaryWave2DIn
-function [phi,x,y]=writeSolitaryWave2DInputFile(filename,phiFunction,wavespeed,xyRange,mglevels,nCoarse)
+function [phi,x,y]=writeSolitaryWave2DInputFile(filename,phiFunction,wavespeed,xyRange,mglevels,nCoarse,bcFlags)
 %  WRITESolitaryWave2DInputFiles - calculates a 2-D initial porosity field from a general phiFunction(x,y)
 %  writes both a binary file and an options file for reading into 2-D Petsc Solitary wave codes
 %
-%    USAGE:  [ phi, x, y]=writeSolitaryWave2DInputFile(filename,phiFunction,wavespeed,xyRange,mglevels,nCoarse)
+%    USAGE:  [ phi, x, y]=writeSolitaryWave2DInputFile(filename,phiFunction,wavespeed,xyRange,mglevels,nCoarse,bcFlags)
 %
 %    filename: rootname for input  file
 %    phiFunction:  function pointer to a function that returns phi(x,y)
 %    xyRange;   vector containing  [ width height ] of domain
 %    mglevels: number of multi-grid ivels for grid generation
 %    nCoarse: vector containing [ ni_coarse nj_coarse]  size of coarse grid DA
-
+%    bcFlags: two vector with Boundary condition flags: 0 periodic, 1 dirichlet or reflection 
 %
 %    phi: output 2-D porosity field
 %    x,z: spatial coordinates
 
-% calculate fine grid sizes
+% calculate fine grid sizes (which will depend on boundary condition type)
    ni_coarse = nCoarse(1);
    nj_coarse = nCoarse(2);
-   ni=ni_coarse*2^(mglevels-1);
-   nj=nj_coarse*2^(mglevels-1);
+   ni = (ni_coarse-bcFlags(1))*2^(mglevels-1)+bcFlags(1);
+   nj = (nj_coarse-bcFlags(2))*2^(mglevels-1)+bcFlags(2);
    
    width = xyRange(1);
    height = xyRange(2);
-   x=linspace(0,width,ni);
-   y=linspace(0,height,nj);
+   x=linspace(0,width,ni+ ~bcFlags(1));
+   y=linspace(0,height,nj+ ~bcFlags(2));
+   
+   % correct coordinates for periodic BC's
+   if bcFlags(1)==0
+      x = x(1:end-1);
+   end
+   if bcFlags(2)==0
+      y = y(1:end-1);
+   end
    
 % calculate porosity IC
    phi=phiFunction(x,y);



More information about the cig-commits mailing list