Parent Directory | Revision Log | Revision Graph
Implemented new I/O package (mdsio.F). This package does parallel I/O in much the same way as dfile.F used to except it uses "direct access" rather than (f77) unformatted sequential access. Problems with dfile.F package included: o unnecessary memory use (each process had two global sized buffers) o inability to read the files it had written without post-processing o "tiled" files were tiled by process/thread rather than actual tiles o created huge numbers of files with no alternatives Features of the mdsio.F package: o direct-access binary writes o no excessive memory use o ability to read/write from multiple record files o "tiled" files are based on "WRAPPER" tiles so that the number and content of files is independent of the number of threads and/or processes o option to create single "global" files rather than "tiled" files o ability to read both "global" and "tiled" files [Caveat: the tiling of files must match the model tiles] o checkpoints now use a single file per model section ie. one file for the hydrostatic model core, one file for the non-hydrostatic extensions and one file for the C-D extensions o the mid-level I/O routines now is broken into more source files read_write_fld.F supplies basic I/O routines with the same interface as the original I/O package read_write_rec.F supplies I/O routines which allow multiple records write_state.F writes the model state checkpoint.F supplies the read/write checkpoint routines All the example input data has had to be modified to be direct-access. Otherwise only routines that used I/O have been affected and not all of those have been due to the continuity of arguments in the read_write_fld.F routines. What needs to be done? We have to create a suite of conversion utilities for users with old-style data. Also supply the option for using old-style I/O, not just for die-hards but for reading data too extensive to be converted. And more...
1 | % This is a matlab script that generates the input data |
2 | |
3 | % Dimensions of grid |
4 | nx=64; |
5 | ny=64; |
6 | nz=20; |
7 | % Nominal depth of model (meters) |
8 | H=2000; |
9 | % Size of domain |
10 | Lx=32e3; |
11 | % Scale of disk (m) |
12 | L=8e3; |
13 | % Horizontal resolution (m) |
14 | dx=Lx/nx; |
15 | % Rotation |
16 | f=1e-4; |
17 | % Stratification |
18 | N=0. * f*L/H; |
19 | % Flux |
20 | Qo=1; |
21 | |
22 | % Gravity |
23 | g=9.81; |
24 | % E.O.S. |
25 | alpha=2.e-4; |
26 | |
27 | Tz=N^2/(g*alpha) |
28 | |
29 | dz=H/nz; |
30 | sprintf('delZ = %d * %7.6g,',nz,dz) |
31 | |
32 | x=(1:nx)*dx;x=x-mean(x); |
33 | y=(1:ny)*dx;y=y-mean(y); |
34 | z=-dz/2:-dz:-H; |
35 | |
36 | [Y,X]=meshgrid(y,x); |
37 | |
38 | % Temperature profile |
39 | [sprintf('Tref =') sprintf(' %8.6g,',Tz*z-mean(Tz*z))] |
40 | |
41 | % Gaussian bump |
42 | Q=Qo*(1+0.01*rand([nx,ny])); |
43 | r=sqrt(X.^2+Y.^2); |
44 | %% Q( find(r>L) )=0; |
45 | fid=fopen('Qnet.circle','w','b'); fwrite(fid,Q,'real*8'); fclose(fid); |
ViewVC Help | |
Powered by ViewVC 1.1.22 |