-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwrite_SOFI_json2.m
138 lines (115 loc) · 6.03 KB
/
write_SOFI_json2.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
function [] = write_SOFI_json(path,fd,cube,core,source,receiver,snapshot,filename)
%%%%%%% USE THIS IF YOU RUN MAIN__.m from WINDOWS
% Write Jason file for SOFI3D
% Input: path {structure vriable} contains path.input, path.output, path.sofi
% fd {structure vriable} contains fd.order, fd.maxtime, fd.timestep
% cube {structure vriable} contains cube parameters
% system {structure variable} contains number of cores
%Check core
%Fix '\' error for windows
% path.input = strrep(path.input,'\','\\');
% path.output = strrep(path.output,'\','\\');
% path.sofi = strrep(path.sofi,'\','\\');
path.input = strrep(path.input,['S:\', path.UTEID], ['/home/u1/', path.UTEID]);
path.input = strrep(path.input,'\','/');
path.output = strrep(path.output,['S:\', path.UTEID], ['/home/u1/', path.UTEID]);
path.output = strrep(path.output,'\','/');
path.sofi = strrep(path.sofi,['S:\', path.UTEID], ['/home/u1/', path.UTEID]);
path.sofi = strrep(path.sofi,'\','/');
%% Write jason file
fid = fopen(['.',filesep,'sofi3D.json'],'w');
fprintf(fid,'#-----------------------------------------------------------------\n');
fprintf(fid,'# JSON PARAMETER FILE FOR SOFI3D\n');
fprintf(fid,'#-----------------------------------------------------------------\n');
fprintf(fid,'{\n');
fprintf(fid,sprintf('"Domain Decomposition" : "comment",\n\t\t"NPROCX" : "%d",\n\t\t"NPROCY" : "%d",\n\t\t"NPROCZ" : "%d",\n\n', core.NPROCX,core.NPROCY,core.NPROCZ));
fprintf(fid,sprintf('"3-D Grid" : "comment",\n\t\t"NX" : "%d",\n\t\t"NY" : "%d",\n\t\t"NZ" : "%d",\n\t\t"DX" : "%f",\n\t\t"DY" : "%f",\n\t\t"DZ" : "%f",\n\n',cube.nx+ 2*cube.pad, cube.ny+ 2*cube.pad, cube.nz+ 4*cube.pad,cube.res,cube.res,cube.res));
fprintf(fid,sprintf('"FD order" : "comment",\n\t\t"FDORDER" : "%d",\n\t\t"FDORDER_TIME" : "%d",\n\t\t"FDCOEFF" : "2",\n\t\t"fdcoeff values: Taylor=1, Holberg=2" :"comment",\n\n' ,fd.spaceorder, fd.timeorder));
fprintf(fid,sprintf('"Time Stepping" : "comment",\n\t\t"TIME" : "%.12f",\n\t\t"DT" : "%.12f",\n\n',fd.maxtime,fd.timestep));
source.path = strrep(source.path,['S:\', path.UTEID], ['/home/u1/', path.UTEID]);
source.path = strrep(source.path,'\','/');
fprintf(fid,sprintf(['"Source" : "comment",\n\t\t'...
'"SOURCE_SHAPE" : "%d",\n\t\t'...
'"source shape values: ricker=1;fumue=2;from_SIGNAL_FILE=3;SIN**3=4" : "comment",\n\t\t'...
'"SIGNAL_FILE" : "signal_mseis.tz",\n\t\t'...
'"SOURCE_TYPE" : "%d",\n\t\t'...
'"source_type values (point_source): explosive=1;force_in_x=2;in_y=3;in_z=4;custom=5;earthquake=6" : "comment",\n\t\t'...
'"SOURCE_ALPHA, SOURCE_BETA" : "0.0 , 0.0",\n\t\t'...
'"AMON, STR, DIP, RAKE" : "1.0e2 , 45.0 , 90.0 , 45.0",\n\t\t'...
'"SRCREC" : "1",\n\t\t'...
'"srcrec values : read from SOURCE_FILE=1, PLANE_WAVE=2 (internal)" : "comment",\n\t\t'...
'"SOURCE_FILE" : "%s",\n\t\t'...
'"RUN_MULTIPLE_SHOTS" : "0",\n\t\t'...
'"PLANE_WAVE_DEPTH" : "0.00048",\n\t\t'...
'"PLANE_WAVE_ANGLE" : "0.0",\n\t\t'...
'"TS" : "1e-7",\n\n'],source.shape, source.type, source.path));
fprintf(fid,['"Model" : "comment",\n\t\t"READMOD" : "1",\n\t\t"MFILE" : "',path.input,'/',cube.name,'",\n\t\t"WRITE_MODELFILES" : "2",\n\n']);
fprintf(fid, sprintf(['"Q-approximation" : "comment",\n\t\t'...
'"L" : "0",\n\t\t'...
'"FREF" : "5.0",\n\t\t'...
'"FL1" : "5.0",\n\t\t'...
'"TAU" : "0.00001",\n\n']));
fprintf(fid, sprintf(['"Boundary Conditions" : "comment",\n\t\t'...
'"FREE_SURF" : "0",\n\t\t'...
'"ABS_TYPE" : "2",\n\t\t'...
'"FW" : "15",\n\t\t'...
'"DAMPING" : "8.0",\n\t\t'...
'"FPML" : "5.0",\n\t\t'...
'"VPPML" : "3500.0",\n\t\t'...
'"NPOWER" : "4.0",\n\t\t'...
'"K_MAX_CPML" : "10.0",\n\t\t'...
'"BOUNDARY" : "0",\n\n']));
if snapshot.snap == 1
mkdir(snapshot.snap_file);
end
snapshot.snap_file = strrep(snapshot.snap_file,['S:\', path.UTEID], ['/home/u1/', path.UTEID]);
snapshot.snap_file = strrep(snapshot.snap_file,'\','/');
fprintf(fid, sprintf(['"Snapshots" : "comment",\n\t\t'...
'"SNAP" : "%d",\n\t\t'...
'"TSNAP1" : "%.15f",\n\t\t'...
'"TSNAP2" : "%.15f",\n\t\t'...
'"TSNAPINC" : "%.15f",\n\t\t'...
'"IDX" : "%d",\n\t\t'...
'"IDY" : "%d",\n\t\t'...
'"IDZ" : "%d",\n\t\t'...
'"SNAP_FORMAT" : "%d",\n\t\t'...
'"SNAP_FILE" : "%s",\n\t\t'...
'"SNAP_PLANE" : "%d",\n\n'], snapshot.snap,snapshot.Tsanp1,snapshot.Tsanp2,snapshot.Tsanpinc,snapshot.idx,snapshot.idy,snapshot.idz,snapshot.snap_format,snapshot.snap_file,snapshot.snap_plane));
receiver.path = strrep(receiver.path,['S:\', path.UTEID], ['/home/u1/', path.UTEID]);
receiver.path = strrep(receiver.path,'\','/');
fprintf(fid, sprintf(['"Receiver" : "comment",\n\t\t'...
'"SEISMO" : "4",\n\t\t'...
'"READREC" : "1",\n\t\t'...
'"REC_FILE" : "%s",\n\t\t'...
'"REFRECX, REFRECY, REFRECZ" : "0.0 , 0.0 , 0.0",\n\t\t'...
'"XREC1,YREC1, ZREC1" : "0.00045 , 0.00045, 0.00045",\n\t\t'...
'"XREC2,YREC2, ZREC2" : "0.01815 ,0.01735, 0.02815",\n\t\t'...
'"NGEOPH" : "10",\n\n'], receiver.path));
fprintf(fid,sprintf(['"Receiver array" : "comment",\n\t\t'...
'"REC_ARRAY" : "0",\n\t\t'...
'"REC_ARRAY_DEPTH" : "1350.0",\n\t\t'...
'"REC_ARRAY_DIST" : "640.0",\n\t\t'...
'"DRX" : "2",\n\t\t'...
'"DRZ" : "2",\n\n']));
filename = strrep(filename,'.mat','');
if filesep == '\' %Window user
output_rec_name = [path.output,'/',filename];
else
output_rec_name = [path.output,filesep,filename];
end
fprintf(fid,sprintf(['"Seismograms" : "comment",\n\t\t'...
'"NDT, NDTSHIFT" : "2, 0",\n\t\t'...
'"SEIS_FORMAT" : "3",\n\t\t'...
'"SEIS_FILE" : "%s",\n\n'], output_rec_name));
fprintf(fid,sprintf(['"Monitoring the simulation" : "comment",\n\t\t'...
'"LOG_FILE" : "%s/test.log",\n\t\t'...
'"LOG" : "1",\n\t\t'...
'"OUT_SOURCE_WAVELET" : "1",\n\t\t'...
'"OUT_TIMESTEP_INFO" : "10",\n\n'], path.output));
fprintf(fid,sprintf(['"Checkpoints" : "comment",\n\t\t'...
'"CHECKPTREAD" : "0",\n\t\t'...
'"CHECKPTWRITE" : "0",\n\t\t'...
'"CHECKPT_FILE" : "tmp/checkpoint_sofi3D",\n']));
fprintf(fid,'}');
fclose(fid);
end