1 |
clear all |
% This is a matlab script that generates the input data |
2 |
nx=32;ny=nx;ntx=6; |
|
3 |
|
% $Header$ |
4 |
|
% $Name$ |
5 |
|
|
6 |
|
nx=32; ny=nx; nf=6; |
7 |
|
kwr=1; |
8 |
|
|
9 |
|
%- flat bottom bathy with rectangular island on face 2 |
10 |
|
dp=ones(nx,nf,ny); |
11 |
|
Htot=1366; |
12 |
|
dp=-Htot*dp; |
13 |
|
|
14 |
|
fc=2; |
15 |
|
i1=1; i2=nx; j1=ny/4 ; j2=1+3*ny/4; |
16 |
|
dp(:,fc,j1:j2)=0; |
17 |
|
dp(nx,1,j1:j2)=0; |
18 |
|
dp(j1:j2,4,1)=0; |
19 |
|
|
20 |
|
if kwr > 0, |
21 |
|
fid=fopen('bathy_f2.bin','w','b'); |
22 |
|
fwrite(fid,dp,'real*8'); |
23 |
|
fclose(fid); |
24 |
|
end |
25 |
|
|
26 |
|
%---------- |
27 |
|
|
28 |
|
h=zeros(nx,nf,ny); |
29 |
|
|
30 |
|
x=0.25*((0.5:nx)/nx-0.5); |
31 |
|
[X,Y]=ndgrid(x,x); |
32 |
|
R=sqrt(X.^2+Y.^2); |
33 |
|
|
34 |
|
|
35 |
|
tileno=1; |
36 |
|
|
|
% Generate initial surface pressure |
|
|
h=zeros(nx,ntx,ny); |
|
|
tileno=2; |
|
37 |
o=1; |
o=1; |
38 |
i=round(nx*1/2); |
i=round(nx*1/2); |
39 |
j=round(ny*1/2); |
j=round(ny*1/2); |
40 |
h(i:i+o,tileno,j:j+o)=1; |
h(i:i+o,tileno,j:j+o)=1; |
41 |
|
|
42 |
fid=fopen('square.bin','w','b'); |
h(:,1,:)=0.5+0.5*cos( pi*min(R,0*R+0.04)/0.04 ); |
43 |
fwrite(fid,h,'real*8'); |
|
44 |
fclose(fid); |
%- 10 m max SSH anomaly: |
45 |
|
h=h*10; |
46 |
% Read grid info and convert to model input files |
|
47 |
|
if kwr > 0, |
48 |
% DXC |
fid=fopen('ssh_eq.bin','w','b'); |
49 |
fid=fopen('DXC.tile','r','b');q=fread(fid,[nx nx],'real*8');fclose(fid); |
fwrite(fid,h,'real*8'); |
50 |
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
fclose(fid); |
51 |
fid=fopen('DXC.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
end |
52 |
% DYC |
|
53 |
q=q'; |
return |
54 |
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
%---------- |
55 |
fid=fopen('DYC.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
% plot to check : ---------- |
56 |
|
rDir='/home/jmc/grid_cs32/'; |
57 |
% DXG |
G=load_grid(rDir,10); |
58 |
fid=fopen('DXG.tile','r','b');q=fread(fid,[nx nx],'real*8');fclose(fid); |
nc=G.dims(2); %nr=G.dims(3); nPxy=G.dims(1)*G.dims(2); nPp2=nPxy+2; |
59 |
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
ccB=[0 0]; shift=-1; cbV=0; AxBx=[-180 180 -90 90]; kEnv=0; |
60 |
fid=fopen('DXG.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
61 |
% DYG |
figure(1);clf; |
62 |
q=q'; |
var=reshape(dp,[nx*nf ny]); |
63 |
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
grph_CS(var,G.xC,G.yC,G.xG,G.yG,ccB(1),ccB(2),shift,cbV,AxBx,kEnv); |
64 |
fid=fopen('DYG.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
65 |
|
figure(2);clf; |
66 |
% DXF |
var=reshape(h,[nx*nf ny]); |
67 |
fid=fopen('DXF.tile','r','b');q=fread(fid,[nx nx],'real*8');fclose(fid); |
grph_CS(var,G.xC,G.yC,G.xG,G.yG,ccB(1),ccB(2),shift,cbV,AxBx,kEnv); |
68 |
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
|
69 |
fid=fopen('DXF.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
%---------- |
|
% DYF |
|
|
q=q'; |
|
|
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
|
|
fid=fopen('DYF.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
|
|
|
% DXV |
|
|
fid=fopen('DXV.tile','r','b');q=fread(fid,[nx nx],'real*8');fclose(fid); |
|
|
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
|
|
fid=fopen('DXV.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
% DYU |
|
|
q=q'; |
|
|
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
|
|
fid=fopen('DYU.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
|
|
|
% RAW |
|
|
fid=fopen('RAW.tile','r','b');q=fread(fid,[nx nx],'real*8');fclose(fid); |
|
|
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
|
|
fid=fopen('RAW.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
% RAS |
|
|
q=q'; |
|
|
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
|
|
fid=fopen('RAS.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
|
|
|
% RA |
|
|
fid=fopen('RA.tile','r','b');q=fread(fid,[nx nx],'real*8');fclose(fid); |
|
|
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
|
|
fid=fopen('RA.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
|
|
|
% RAZ |
|
|
fid=fopen('RAZ.tile','r','b');q=fread(fid,[nx nx],'real*8');fclose(fid); |
|
|
Q(1:nx,:)=q;Q(nx+(1:nx),:)=q;Q(2*nx+(1:nx),:)=q;Q(3*nx+(1:nx),:)=q;Q(4*nx+(1:nx),:)=q;Q(5*nx+(1:nx),:)=q; |
|
|
fid=fopen('RAZ.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
|
|
|
% LONC |
|
|
fid=fopen('LONC.tile','r','b');q=fread(fid,[nx nx*6],'real*8');fclose(fid); |
|
|
q=reshape(q,[nx nx 6]); |
|
|
Q(1:nx,:)=q(:,:,1);Q(nx+(1:nx),:)=q(:,:,2);Q(2*nx+(1:nx),:)=q(:,:,3);Q(3*nx+(1:nx),:)=q(:,:,4);Q(4*nx+(1:nx),:)=q(:,:,5);Q(5*nx+(1:nx),:)=q(:,:,6); |
|
|
fid=fopen('LONC.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
|
|
|
% LATC |
|
|
fid=fopen('LATC.tile','r','b');q=fread(fid,[nx nx*6],'real*8');fclose(fid); |
|
|
q=reshape(q,[nx nx 6]); |
|
|
Q(1:nx,:)=q(:,:,1);Q(nx+(1:nx),:)=q(:,:,2);Q(2*nx+(1:nx),:)=q(:,:,3);Q(3*nx+(1:nx),:)=q(:,:,4);Q(4*nx+(1:nx),:)=q(:,:,5);Q(5*nx+(1:nx),:)=q(:,:,6); |
|
|
fid=fopen('LATC.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
|
|
|
lat=reshape(Q,[nx ntx nx]); |
|
|
rad=30; |
|
|
h=100*0.5*(1-cos( max(lat-90+rad,0)/rad*pi )); |
|
|
fid=fopen('cos.bin','w','b');fwrite(fid,h,'real*8');fclose(fid); |
|
|
h(:,2,:)=h(:,3,:);h(:,3,:)=0; |
|
|
fid=fopen('cos_equator.bin','w','b');fwrite(fid,h,'real*8');fclose(fid); |
|
|
|
|
|
% LONG |
|
|
fid=fopen('LONG.tile','r','b');q=fread(fid,[nx+1 (nx+1)*6],'real*8');fclose(fid); |
|
|
q=reshape(q,[nx+1 nx+1 6]); |
|
|
q=q(1:nx,1:nx,:); |
|
|
Q(1:nx,:)=q(:,:,1);Q(nx+(1:nx),:)=q(:,:,2);Q(2*nx+(1:nx),:)=q(:,:,3);Q(3*nx+(1:nx),:)=q(:,:,4);Q(4*nx+(1:nx),:)=q(:,:,5);Q(5*nx+(1:nx),:)=q(:,:,6); |
|
|
fid=fopen('LONG.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|
|
|
|
|
% LATG |
|
|
fid=fopen('LATG.tile','r','b');q=fread(fid,[nx+1 (nx+1)*6],'real*8');fclose(fid); |
|
|
q=reshape(q,[nx+1 nx+1 6]); |
|
|
q=q(1:nx,1:nx,:); |
|
|
Q(1:nx,:)=q(:,:,1);Q(nx+(1:nx),:)=q(:,:,2);Q(2*nx+(1:nx),:)=q(:,:,3);Q(3*nx+(1:nx),:)=q(:,:,4);Q(4*nx+(1:nx),:)=q(:,:,5);Q(5*nx+(1:nx),:)=q(:,:,6); |
|
|
fid=fopen('LATG.bin','w','b');fwrite(fid,Q,'real*8');fclose(fid); |
|