[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