Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
IFOS3D
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
7
Issues
7
List
Boards
Labels
Service Desk
Milestones
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
GPIAG-Software
IFOS3D
Commits
befea09f
Commit
befea09f
authored
Apr 20, 2016
by
Tilman Steinweg
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rearanged terminal output and output (.out) files
parent
36b61444
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
608 additions
and
362 deletions
+608
-362
src/av_mat.c
src/av_mat.c
+3
-3
src/checkfd_ssg.c
src/checkfd_ssg.c
+10
-1
src/conjugategrad.c
src/conjugategrad.c
+1
-1
src/filt_seis.c
src/filt_seis.c
+3
-1
src/ifos3d.c
src/ifos3d.c
+29
-21
src/json_parser.c
src/json_parser.c
+6
-6
src/matcopy.c
src/matcopy.c
+3
-3
src/mergemod.c
src/mergemod.c
+4
-4
src/modelupdate.c
src/modelupdate.c
+5
-4
src/precongrad.c
src/precongrad.c
+1
-1
src/read_par.c
src/read_par.c
+4
-1
src/read_par_json.c
src/read_par_json.c
+30
-30
src/readinv.c
src/readinv.c
+11
-6
src/readseis.c
src/readseis.c
+4
-4
src/readseis_split.c
src/readseis_split.c
+2
-2
src/receiver.c
src/receiver.c
+7
-5
src/splitrec.c
src/splitrec.c
+3
-3
src/splitsrc.c
src/splitsrc.c
+3
-3
src/steplength.c
src/steplength.c
+9
-8
src/writepar.c
src/writepar.c
+470
-255
No files found.
src/av_mat.c
View file @
befea09f
...
...
@@ -31,12 +31,12 @@ float *** uipjp, float *** ujpkp, float *** uipkp, float *** tausipjp,
float
***
tausjpkp
,
float
***
tausipkp
,
float
***
rjp
,
float
***
rkp
,
float
***
rip
){
extern
int
NX
,
NY
,
NZ
,
MYID
,
L
;
extern
int
NX
,
NY
,
NZ
,
MYID
,
L
,
VERBOSE
;
extern
FILE
*
FP
;
double
time1
=
0
.
0
,
time2
=
0
.
0
;
int
i
,
j
,
k
;
if
(
MYID
==
0
){
if
(
(
MYID
==
0
)
&&
(
VERBOSE
==
1
)
){
fprintf
(
FP
,
"
\n\n
**Message from av_mat (written by PE %d):"
,
MYID
);
fprintf
(
FP
,
"
\n
Averaging of material parameters ...
\n
"
);
time1
=
MPI_Wtime
();
...
...
@@ -70,7 +70,7 @@ float *** tausjpkp, float *** tausipkp, float *** rjp, float *** rkp, float
if
(
MYID
==
0
){
if
(
(
MYID
==
0
)
&&
(
VERBOSE
==
1
)
){
time2
=
MPI_Wtime
();
fprintf
(
FP
,
" finished (real time: %4.2f s).
\n
"
,
time2
-
time1
);
}
...
...
src/checkfd_ssg.c
View file @
befea09f
...
...
@@ -46,6 +46,7 @@ float *** ptaus, float *** ptaup, float *peta, float **srcpos, int nsrc, int **r
extern
int
FDCOEFF
;
extern
int
READREC
,
NPROCX
,
NPROCY
,
NPROCZ
,
FW
,
ABS_TYPE
,
SRCREC
,
FREE_SURF
;
extern
int
SNAP
,
SEISMO
,
SEIS_FORMAT
[
6
],
SNAP_FORMAT
;
extern
int
NSHOTS_STEP
;
/*extern int RUN_MULTIPLE_SHOTS; no determination is done for the output check whether the simulation runs with one or multiple shot
-> directorys specified in input file should work in both cases */
extern
char
SEIS_FILE
[
STRING_SIZE
],
SNAP_FILE
[
STRING_SIZE
];
...
...
@@ -712,8 +713,16 @@ float *** ptaus, float *** ptaup, float *peta, float **srcpos, int nsrc, int **r
fprintf
(
fp
,
" You have specified a width of %i gridpoints.
\n
"
,
FW
);
if
((
FW
<
20
)
&&
(
MYID
==
0
))
warning
(
" Be aware of strong artificial reflections from grid boundaries !
\n
"
);}
if
(
nsrc
<
NSHOTS_STEP
)
{
NSHOTS_STEP
=
nsrc
;
if
(
MYID
==
0
)
{
warning
(
" Parameter NSHOTS_STEP is greater than number of sources. NSHOT_STEP is reduced to nsrc.
\n
"
);
fprintf
(
fp
,
" NSHOTS_STEP=%d
\n
"
,
NSHOTS_STEP
);
}
}
}
src/conjugategrad.c
View file @
befea09f
...
...
@@ -37,7 +37,7 @@ void conjugate(int nx,int ny,int nz, float ***grad1, float ***grad2,float ***gra
beta
[
0
]
=
0
.
0
;
beta
[
1
]
=
0
.
0
;
beta
[
2
]
=
0
.
0
;
fprintf
(
FP
,
"
\n
Calculate conjugate gradient
\n
"
);
fprintf
(
FP
,
"
\n
Calculate conjugate gradient "
);
if
(
cdf
==
1
){
for
(
j
=
1
;
j
<=
ny
;
j
++
){
...
...
src/filt_seis.c
View file @
befea09f
...
...
@@ -32,6 +32,7 @@ void filt_seis(float ** data,int ntr, int ns, float finv){
int
order
=
4
;
int
method
=
1
;
float
fc
=
0
.
0
;
extern
int
VERBOSE
;
extern
FILE
*
FP
;
/*
data : 2-dimensional array containing seismograms (
...
...
@@ -58,7 +59,8 @@ void filt_seis(float ** data,int ntr, int ns, float finv){
T0
=
1
.
0
/
fc
;
fprintf
(
FP
,
"ns=%d; DT=%e; T0=%e"
,
ns
,
DT
,
T0
);
if
(
VERBOSE
)
fprintf
(
FP
,
" ns=%d; DT=%e; T0=%e"
,
ns
,
DT
,
T0
);
for
(
itr
=
1
;
itr
<=
ntr
;
itr
++
){
for
(
j
=
1
;
j
<=
ns
;
j
++
){
...
...
src/ifos3d.c
View file @
befea09f
...
...
@@ -115,7 +115,7 @@ int main(int argc, char **argv){
if
(
MYID
==
0
){
if
(
argc
>
1
)
{
strncpy
(
FILEINP
,
argv
[
1
],
STRING_SIZE
);
fprintf
(
stderr
,
"
Input parameter filename read from command line : %s.
\n
\n
"
,
FILEINP
);
fprintf
(
stderr
,
"
\n
Input parameter filename read from command line : %s.
\n
"
,
FILEINP
);
if
(
strlen
(
FILEINP
)
>
STRING_SIZE
-
1
)
{
fprintf
(
stderr
,
"
\n
IFOS cannot handel pathes with more than %d characters.
\n
"
,
STRING_SIZE
-
1
);
fprintf
(
stderr
,
" Error: IFOS could not read input parameter file name. -> Exit.
\n\n
"
);
...
...
@@ -254,13 +254,13 @@ if(METHOD) nseismograms+=4;
fprintf
(
FP
,
" Each process is now trying to allocate memory for:
\n
"
);
fprintf
(
FP
,
" Dynamic modeling variables:
\t\t
%6.2f MB
\n
"
,
memdyn
);
fprintf
(
FP
,
" Static modeling variables:
\t\t
%6.2f MB
\n
"
,
memmodel
);
fprintf
(
FP
,
" Seismograms:
\t\t\t
%6.2f MB
\n
"
,
memseismograms
);
fprintf
(
FP
,
" Seismograms:
\t\t\t
\t
%6.2f MB
\n
"
,
memseismograms
);
fprintf
(
FP
,
" Dynamic inversion variables:
\t\t
%6.2f MB
\n
"
,
memdynf
);
fprintf
(
FP
,
" Static inversion variables:
\t\t
%6.2f MB
\n
"
,
memgrad
+
membfgs
);
fprintf
(
FP
,
" Buffer arrays for grid exchange:%6.2f MB
\n
"
,
membuffer
);
fprintf
(
FP
,
" Network Buffer for MPI_Bsend:
\t
%6.2f MB
\n
"
,
buffsize
*
pow
(
2
.
0
,
-
20
.
0
));
fprintf
(
FP
,
" Buffer arrays for grid exchange:
\t
%6.2f MB
\n
"
,
membuffer
);
fprintf
(
FP
,
" Network Buffer for MPI_Bsend:
\t
\t
%6.2f MB
\n
"
,
buffsize
*
pow
(
2
.
0
,
-
20
.
0
));
fprintf
(
FP
,
" ------------------------------------------------
\n
"
);
fprintf
(
FP
,
" Total memory required:
\t
%6.2f MB.
\n\n
"
,
memtotal
);
fprintf
(
FP
,
" Total memory required:
\t
\t
%6.2f MB.
\n\n
"
,
memtotal
);
}
MPI_Barrier
(
MPI_COMM_WORLD
);
...
...
@@ -689,8 +689,7 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
if
(
METHOD
==
1
){
if
(
it_group
>=
itmax
||
iteration
==
1
){
readinv
(
finv
,
&
nf
,
&
groupnum
,
itpergroup
,
NFMAX
);
fprintf
(
FP
,
"
\n
itmin=%d;itmax=%d;nf=%d;finv=%4.2f;groupnum=%d
\n
"
,
itpergroup
[
0
],
itpergroup
[
1
],
nf
,
finv
[
0
],
groupnum
);
readinv
(
finv
,
&
nf
,
&
groupnum
,
itpergroup
,
NFMAX
);
cdf
=
1
;
itmax
=
itpergroup
[
1
];
it_group
=
1
;
...
...
@@ -713,7 +712,7 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
L2
=
0
.
0
;
if
(
MYID
==
0
)
fprintf
(
FI
,
"SHOT %d"
,
ishot
);
fprintf
(
FP
,
"
\n
MYID=%d ***** Starting simulation for shot %d of %d **********
\n
"
,
MYID
,
ishot
,
nshots
);
fprintf
(
FP
,
"
\n
********** Starting simulation for shot %d of %d **********
\n
"
,
ishot
,
nshots
);
if
(
RUN_MULTIPLE_SHOTS
){
nsrc_loc
=
snum_loc
[
ishot
];
if
(
nsrc_loc
>
0
){
...
...
@@ -746,7 +745,7 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
dummy
=
(
1
/
(
finv
[
nf
-
1
]
*
TAST
*
DT
));
ntast
=
(
dummy
);
if
(
!
ntast
)
ntast
=
1
;
fprintf
(
FP
,
"ntast=%i, TAST=%i
\n
"
,
ntast
,
TAST
);
//
fprintf(FP, "ntast=%i, TAST=%i \n", ntast, TAST);
}
if
(
MYID
==
0
)
fprintf
(
FP
,
"
\n
****************************************
\n
"
);
...
...
@@ -877,7 +876,7 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
/*---------------------------- backpropagation----------------------------------------------*/
fprintf
(
FP
,
" *********** STARTING TIME STEPPING BACK PROPAGATION ***************
\n
"
);
fprintf
(
FP
,
"
\n\n
*********** STARTING TIME STEPPING BACK PROPAGATION ***************
\n
"
);
pshot_loc
=
1
;
for
(
pshot
=
0
;
pshot
<=
hloop
;
pshot
++
){
...
...
@@ -887,7 +886,7 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
if
(
pshot
>
0
){
/*only for Hessian wavefields*/
pshot1
=
pshot
;
ntr_loc
=
rnum_loc
[
pshot
];
fprintf
(
FP
,
"
\n
start Hessian wavefields pshot %d, ntr=%d
\n
"
,
pshot
,
ntr
);
fprintf
(
FP
,
"
\n
start Hessian wavefields pshot %d, ntr=%d
\n
"
,
pshot
,
ntr
);
if
(
ntr_loc
>
0
){
for
(
i
=
1
;
i
<=
4
;
i
++
)
{
srcpos_loc_back
[
i
][
1
]
=
recpos_loc
[
i
][
pshot_loc
];
srcpos_loc_back
[
6
][
1
]
=
1
.
0
;}
...
...
@@ -996,13 +995,14 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
if
(
HESS
&&
iteration
==
1
)
outgrad
(
NX
,
NY
,
NZ
,
hess1
,
hess2
,
hess3
,
finv
[
0
],
iteration
,
HESS_FILE
);
/*output "raw" gradient*/
fprintf
(
FP
,
"
\n
raw Gradient:
\n
"
);
outgrad
(
NX
,
NY
,
NZ
,
grad1
,
grad2
,
grad3
,
finv
[
0
],
iteration
,
GRAD_FILE
);
if
(
HESS
)
hess_apply
(
1
,
NX
,
1
,
NY
,
1
,
NZ
,
grad1
,
grad2
,
grad3
,
hess1
,
hess2
,
hess3
,
finv
[
0
],
iteration
);
/*preconditioning of gradient*/
precon_grad
(
NX
,
NY
,
NZ
,
grad1
,
grad2
,
grad3
,
nsrc
,
srcpos
,
ntr_glob
,
recpos
,
finv
[
0
],
iteration
,
cdf
);
outgrad
(
NX
,
NY
,
NZ
,
grad1
,
grad2
,
grad3
,
finv
[
0
],
iteration
+
1000
,
GRAD_FILE
);
//
outgrad(NX,NY,NZ,grad1,grad2,grad3,finv[0],iteration+1000, GRAD_FILE);
if
(
LBFGS
){
if
(
it_group
>
1
){
/*lbfgs(grad1, hess1, bfgsscale1, bfgsmod1, bfgsgrad1,iteration);*/
...
...
@@ -1016,7 +1016,7 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
/*---------------------------------------steplength calculation----------------------------------------------------------------*/
fprintf
(
FP
,
"
\n
STEPLENGTH CALCULATION ITERATION %d
\n
"
,
iteration
);
fprintf
(
FP
,
"
\n
\n
*********** STEPLENGTH CALCULATION ITERATION %d ***********
\n
"
,
iteration
);
if
(
LBFGS
||!
LBFGS
){
for
(
steptest
=
1
;
steptest
<=
2
;
steptest
++
){
if
(
cdf
==
1
)
step
[
4
]
=
0
.
02
;
...
...
@@ -1026,7 +1026,8 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
if(iteration>20)step[steptest]=0.01*steptest;
if(iteration>30) step[steptest]=0.005*steptest;
if(iteration>50) step[steptest]=0.003*steptest;*/
fprintf
(
FP
,
"step[%d]=%e"
,
steptest
,
step
[
steptest
]);
fprintf
(
FP
,
"
\n\n
%d. test steplength: step[%d]=%.2e
\n
"
,
steptest
,
steptest
,
step
[
steptest
]);
fprintf
(
FP
,
" ------------------------------------
\n
"
);
if
(
MYID
==
0
)
fprintf
(
FI
,
"
\n
steptest %d: steplength=%e
\n
"
,
steptest
,
step
[
steptest
]);
...
...
@@ -1038,12 +1039,13 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
L2
=
0
.
0
;
L2f
=
0
.
0
;
for
(
ishot
=
1
;
ishot
<=
NSHOTS_STEP
;
ishot
++
){
ishot1
=
(
nshots
/
NSHOTS_STEP
)
*
(
ishot
-
1
)
+
1
;
fprintf
(
FP
,
"
\n
MYID=%d ***** Starting simulation for shot %d of %d **********
\n
"
,
MYID
,
ishot1
,
nshots
);
fprintf
(
FP
,
"
\n
********** Starting simulation for shot %d of %d **********
\n
"
,
ishot1
,
nshots
);
if
(
RUN_MULTIPLE_SHOTS
){
nsrc_loc
=
snum_loc
[
ishot1
];
...
...
@@ -1063,8 +1065,13 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
lsamp
=
NDTSHIFT
+
1
;
nlsamp
=
1
;
if
(
MYID
==
0
)
fprintf
(
FP
,
"
\n
****************************************
\n
"
);
for
(
nt
=
1
;
nt
<=
NT
;
nt
++
){
if
(
MYID
==
0
)
if
(
!
(
nt
%
(
NT
/
40
)))
fprintf
(
FP
,
"*"
);
time_v_update
[
nt
]
=
0
.
0
;
time_s_update
[
nt
]
=
0
.
0
;
...
...
@@ -1120,15 +1127,16 @@ CPML_coeff(K_x,alpha_prime_x,a_x,b_x,K_x_half,alpha_prime_x_half,a_x_half,b_x_ha
misfit
[
steptest
]
=
0
.
0
;
misfit
[
steptest
]
=
L2
;
if
(
MYID
==
0
)
fprintf
(
FI
,
"
\n
L2=%e"
,
misfit
[
steptest
]);
}
/*steptest*/
if
(
MYID
==
0
)
fprintf
(
FP
,
"
\n\n
\n
Steplength Parabel
\n
"
);
if
(
MYID
==
0
)
fprintf
(
FP
,
"
\n\n
Steplength Parabel
\n
"
);
MPI_Barrier
(
MPI_COMM_WORLD
);
steplength
(
misfit
,
step
,
iteration
);
/*find optimal steplength*/
}
if
(
MYID
==
0
)
fprintf
(
FP
,
"
\n
stepength calculation finished
\n
"
);
if
(
MYID
==
0
)
fprintf
(
FP
,
"
\n
Modelupdate
\n
"
);
modelupdate
(
NX
,
NY
,
NZ
,
grad1
,
grad2
,
grad3
,
rho
,
pi
,
u
,
bfgsmod1
,
step
[
3
],
beta
,
it_group
);
if
(
MYID
==
0
)
fprintf
(
FP
,
"
\n
Modeloutput
\n
"
);
...
...
src/json_parser.c
View file @
befea09f
...
...
@@ -41,9 +41,9 @@ int read_objects_from_intputfile(FILE *fp, char *input_file,char **varname_list,
if
(
fp_in
==
NULL
)
{
fprintf
(
fp
,
"
\n
==================================================================
\n
"
);
fprintf
(
fp
,
"
\n
==================================================================
\n
"
);
fprintf
(
fp
,
" ERROR: Could not open input file '%s'!"
,
input_file
);
fprintf
(
fp
,
"
\n
==================================================================
\n
"
);
fprintf
(
fp
,
"
\n
==================================================================
\n
"
);
sprintf
(
errormessage
,
"
\n
in: <read_par_json.c>
\n
"
);
err
(
errormessage
);
}
...
...
@@ -233,15 +233,15 @@ int read_objects_from_intputfile(FILE *fp, char *input_file,char **varname_list,
void
print_objectlist_screen
(
FILE
*
fp
,
int
number_readobject
,
char
**
varname_list
,
char
**
value_list
)
{
int
ii
;
fprintf
(
fp
,
"
\n
===========================================================
\n
"
);
fprintf
(
fp
,
"|| Object # | object name
\t
| object value ||"
);
fprintf
(
fp
,
"
\n
===========================================================
\n
"
);
fprintf
(
fp
,
"
\n
===========================================================
\n
"
);
fprintf
(
fp
,
"
|| Object # | object name
\t
| object value ||"
);
fprintf
(
fp
,
"
\n
===========================================================
\n
"
);
for
(
ii
=
0
;
ii
<
number_readobject
;
ii
++
)
{
fprintf
(
fp
,
" %2.0i | %18s | %s
\n
"
,
ii
+
1
,
varname_list
[
ii
],
value_list
[
ii
]);
}
printf
(
"========================================================
\n\n
"
);
printf
(
"
========================================================
\n\n
"
);
}
int
count_occure_charinstring
(
char
stringline
[
STRING_SIZE2
],
char
teststring
[])
{
...
...
src/matcopy.c
View file @
befea09f
...
...
@@ -32,7 +32,7 @@ void matcopy(float *** rho, float *** pi, float *** u,
float
***
taus
,
float
***
taup
){
extern
int
MYID
,
NX
,
NY
,
NZ
,
INDEX
[
7
],
L
;
extern
int
MYID
,
NX
,
NY
,
NZ
,
INDEX
[
7
],
L
,
VERBOSE
;
extern
const
int
TAG1
,
TAG2
,
TAG3
,
TAG4
,
TAG5
,
TAG6
;
extern
FILE
*
FP
;
...
...
@@ -52,7 +52,7 @@ float *** taus, float *** taup){
bufferbac_to_fro
=
f3tensor
(
0
,
NY
+
1
,
0
,
NX
+
1
,
1
,
5
);
if
(
MYID
==
0
){
if
(
(
MYID
==
0
)
&&
(
VERBOSE
==
1
)
){
fprintf
(
FP
,
"
\n\n
**Message from matcopy (written by PE %d):"
,
MYID
);
fprintf
(
FP
,
"
\n
Copy material properties at inner boundaries ...
\n
"
);
time1
=
MPI_Wtime
();
...
...
@@ -290,7 +290,7 @@ float *** taus, float *** taup){
}
if
(
MYID
==
0
){
if
(
(
MYID
==
0
)
&&
(
VERBOSE
==
1
)
){
time2
=
MPI_Wtime
();
fprintf
(
FP
,
" finished (real time: %4.2f s).
\n
"
,
time2
-
time1
);
}
...
...
src/mergemod.c
View file @
befea09f
...
...
@@ -31,7 +31,7 @@ void mergemod(char modfile[STRING_SIZE], int format){
extern
int
MYID
,
NPROCX
,
NPROCY
,
NPROCZ
;
extern
int
NX
,
NY
,
NZ
,
NPROC
,
IDX
,
IDY
,
IDZ
;
extern
int
NX
,
NY
,
NZ
,
NPROC
,
IDX
,
IDY
,
IDZ
,
VERBOSE
;
extern
FILE
*
FP
;
...
...
@@ -45,9 +45,9 @@ void mergemod(char modfile[STRING_SIZE], int format){
err
(
" merge.c: constant expression NPROC?_MAX < NPROC? "
);
printf
(
" PE %d starts merge of %d model files
\n
"
,
MYID
,
NPROC
);
if
(
VERBOSE
)
printf
(
" PE %d starts merge of %d model files
\n
"
,
MYID
,
NPROC
);
fprintf
(
FP
,
"
\n
writing merged model file to %s
\n
"
,
modfile
);
fprintf
(
FP
,
" writing merged model file to %s
\n
"
,
modfile
);
fpout
=
fopen
(
modfile
,
"w"
);
...
...
@@ -59,7 +59,7 @@ void mergemod(char modfile[STRING_SIZE], int format){
if
(
fp
[
jp
][
ip
][
kp
]
==
NULL
)
err
(
"merge: can't read modfile !"
);
}
fprintf
(
FP
,
" ... finished.
\n
"
);
//
fprintf(FP," ... finished. \n");
...
...
src/modelupdate.c
View file @
befea09f
...
...
@@ -52,7 +52,7 @@ void modelupdate(int nx, int ny, int nz, float ***gradvp, float ***gradvs, float
if
(
LBFGS
)
{
w
=
it_group
%
BFGSNUM
;
if
(
w
==
0
)
w
=
BFGSNUM
;}
fprintf
(
FP
,
"
Modelupdatefunction
\n
"
);
fprintf
(
FP
,
"
\n
Message from modelupdate.c
"
);
/*find and exchange model maxima*/
for
(
j
=
1
;
j
<=
ny
;
j
++
){
...
...
@@ -76,7 +76,8 @@ void modelupdate(int nx, int ny, int nz, float ***gradvp, float ***gradvs, float
max
[
0
]
=
buf
[
0
];
max
[
1
]
=
buf
[
1
];
max
[
2
]
=
buf
[
2
];
fprintf
(
FP
,
"rhomax=%4.2f, vpmax=%4.2f, vsmax=%4.2f
\n
"
,
max
[
2
],
max
[
0
],
max
[
1
]);
fprintf
(
FP
,
"
\n
Maximum values in current model:
\n
"
);
fprintf
(
FP
,
" rhomax=%4.2f, vpmax=%4.2f, vsmax=%4.2f
\n
"
,
max
[
2
],
max
[
0
],
max
[
1
]);
/*if(iteration==1){vs0=vs0*vs0;
vp0=vp0*vp0;}
...
...
@@ -104,7 +105,7 @@ void modelupdate(int nx, int ny, int nz, float ***gradvp, float ***gradvs, float
max1
[
1
]
=
dummy
[
1
];
max1
[
2
]
=
dummy
[
2
];
if
(
max1
[
2
]
==
0
.
0
)
max1
[
2
]
=
1
.
0
;
fprintf
(
FP
,
"
max1[0]=%e,max1[1]=%e
\n
"
,
max1
[
0
],
max1
[
1
]);
//fprintf(FP,"
max1[0]=%e,max1[1]=%e \n",max1[0],max1[1]);
if
(
max1
[
0
]
>
0
.
0
&&
max1
[
1
]
>
0
.
0
){
for
(
j
=
1
;
j
<=
ny
;
j
++
){
...
...
@@ -117,7 +118,7 @@ void modelupdate(int nx, int ny, int nz, float ***gradvp, float ***gradvs, float
}
}
}
else
fprintf
(
FP
,
"max1*max2*max3 =0
\n
"
);
else
fprintf
(
FP
,
"
Warning: One of the gradients is zero:
max1*max2*max3 =0
\n
"
);
}
/*if(it_group==1){scale1=4.0; scale2=4.0;}*/
l
=
0
;
...
...
src/precongrad.c
View file @
befea09f
...
...
@@ -40,7 +40,7 @@ void precon_grad(int nx,int ny,int nz, float ***grad1, float ***grad2,float ***g
/*h=FW+40;*/
fprintf
(
FP
,
"
\n
Gradient preconditioning
\n
"
);
fprintf
(
FP
,
"
\n
Gradient preconditioning
\n
"
);
if
(
DAMPTYPE
==
1
){
for
(
j
=
1
;
j
<=
ny
;
j
++
){
...
...
src/read_par.c
View file @
befea09f
...
...
@@ -50,11 +50,14 @@ int read_par(FILE *fp_in){
/*extern float F_INV;*/
extern
float
TESTSTEP
,
WATER_HESS
[
3
],
WEIGHT
[
3
],
VP0
,
VS0
,
RHO0
;
extern
int
BFGSNUM
,
NUMPAR
;
extern
int
VERBOSE
;
/* definition of local variables */
char
s
[
256
],
cline
[
256
]
=
""
;
int
lineno
=
0
,
l
,
nvarin
=
0
;
//Default Value for Verbose Mode
VERBOSE
=
1
;
if
(
fp_in
==
NULL
)
err
(
" Could not open input parameter file (ifos3d.inp)! "
);
...
...
@@ -442,7 +445,7 @@ int read_par(FILE *fp_in){
}
}
LOG
=
0
;
if
(
lineno
<
85
)
fprintf
(
stderr
,
" Warning: only %d non-commentary lines of input parameters read (expected 8
3
).
\n
"
,
lineno
);
if
(
lineno
<
85
)
fprintf
(
stderr
,
" Warning: only %d non-commentary lines of input parameters read (expected 8
5
).
\n
"
,
lineno
);
/* else if (lineno>71) fprintf(stderr," Warning: %d non-commentary lines of input parameters read \n \t(expected and interpreted: 67).\n",lineno); */
/* else fprintf(stderr," %d non-commentary lines of input parameters read.\n",lineno); */
fclose
(
fp_in
);
...
...
src/read_par_json.c
View file @
befea09f
...
...
@@ -67,11 +67,11 @@ void read_par_json(FILE *fp, char *fileinp) {
/* read in objects from file */
number_readobjects
=
read_objects_from_intputfile
(
fp
,
fileinp
,
varname_list
,
value_list
);
fprintf
(
fp
,
"
\n
From input file %s, %i objects have been read in.
\n
"
,
fileinp
,
number_readobjects
);
fprintf
(
fp
,
"
\n
From input file %s, %i objects have been read in.
\n
"
,
fileinp
,
number_readobjects
);
/* print objects to screen */
fprintf
(
fp
,
"
\n
==========================================================="
);
fprintf
(
fp
,
"
\n
= List of Parameters read by the built in Json Parser ="
);
fprintf
(
fp
,
"
\n
==========================================================="
);
fprintf
(
fp
,
"
\n
= List of Parameters read by the built in Json Parser ="
);
print_objectlist_screen
(
fp
,
number_readobjects
,
varname_list
,
value_list
);
/* extract variables form object list */
...
...
@@ -137,18 +137,18 @@ void read_par_json(FILE *fp, char *fileinp) {
/*=================================
section source parameters
=================================*/
fprintf
(
fp
,
"The following default values are set:
\n
"
);
fprintf
(
fp
,
"=====================================
\n\n
"
);
fprintf
(
fp
,
"
The following default values are set:
\n
"
);
fprintf
(
fp
,
"
=====================================
\n\n
"
);
if
(
get_int_from_objectlist
(
"SOURCE_SHAPE"
,
number_readobjects
,
&
SOURCE_SHAPE
,
varname_list
,
value_list
))
{
err
(
"Variable SOURCE_SHAPE could not be retrieved from the json input file!"
);
err
(
"
Variable SOURCE_SHAPE could not be retrieved from the json input file!"
);
}
else
{
if
(
SOURCE_SHAPE
==
3
)
{
if
(
get_string_from_objectlist
(
"SIGNAL_FILE"
,
number_readobjects
,
SIGNAL_FILE
,
varname_list
,
value_list
))
{
err
(
"Variable SIGNAL_FILE could not be retrieved from the json input file!"
);
err
(
"
Variable SIGNAL_FILE could not be retrieved from the json input file!"
);
}
else
{
if
(
get_int_from_objectlist
(
"SIGNAL_FORMAT"
,
number_readobjects
,
&
SIGNAL_FORMAT
,
varname_list
,
value_list
))
{
...
...
@@ -159,24 +159,24 @@ void read_par_json(FILE *fp, char *fileinp) {
}
if
(
get_int_from_objectlist
(
"SOURCE_TYPE"
,
number_readobjects
,
&
SOURCE_TYPE
,
varname_list
,
value_list
))
{
err
(
"Variable SOURCE_TYPE could not be retrieved from the json input file!"
);
err
(
"
Variable SOURCE_TYPE could not be retrieved from the json input file!"
);
}
else
{
if
(
SOURCE_TYPE
==
5
)
{
if
(
get_float_from_objectlist
(
"ALPHA"
,
number_readobjects
,
&
ALPHA
,
varname_list
,
value_list
))
{
err
(
"Variable ALPHA could not be retrieved from the json input file!"
);
err
(
"
Variable ALPHA could not be retrieved from the json input file!"
);
}
if
(
get_float_from_objectlist
(
"BETA"
,
number_readobjects
,
&
BETA
,
varname_list
,
value_list
))
{
err
(
"Variable BETA could not be retrieved from the json input file!"
);
err
(
"
Variable BETA could not be retrieved from the json input file!"
);
}
}
}
if
(
get_int_from_objectlist
(
"SRCREC"
,
number_readobjects
,
&
SRCREC
,
varname_list
,
value_list
))
{
err
(
"Variable SRCREC could not be retrieved from the json input file!"
);
err
(
"
Variable SRCREC could not be retrieved from the json input file!"
);
}
else
{
if
(
get_int_from_objectlist
(
"SRC_MF"
,
number_readobjects
,
&
SRC_MF
,
varname_list
,
value_list
))
{
...
...
@@ -185,27 +185,27 @@ void read_par_json(FILE *fp, char *fileinp) {
if
(
get_float_from_objectlist
(
"REFSRCX"
,
number_readobjects
,
&
REFSRC
[
0
],
varname_list
,
value_list
))
{
REFSRC
[
0
]
=
0
.
0
;
fprintf
(
fp
,
"
Variable REFSRCX is set to default value %
1f.
\n
"
,
REFSRC
[
0
]);
fprintf
(
fp
,
"
Variable REFSRCX is set to default value %.
1f.
\n
"
,
REFSRC
[
0
]);
}
if
(
get_float_from_objectlist
(
"REFSRCZ"
,
number_readobjects
,
&
REFSRC
[
1
],
varname_list
,
value_list
))
{
REFSRC
[
1
]
=
0
.
0
;
fprintf
(
fp
,
"
Variable REFSRCZ is set to default value %
1f.
\n
"
,
REFSRC
[
1
]);
fprintf
(
fp
,
"
Variable REFSRCZ is set to default value %.
1f.
\n
"
,
REFSRC
[
1
]);
}
if
(
get_float_from_objectlist
(
"REFSRCY"
,
number_readobjects
,
&
REFSRC
[
2
],
varname_list
,
value_list
))
{
REFSRC
[
2
]
=
0
.
0
;
fprintf
(
fp
,
"
Variable REFSRCY is set to default value %
1f.
\n
"
,
REFSRC
[
2
]);
fprintf
(
fp
,
"
Variable REFSRCY is set to default value %.
1f.
\n
"
,
REFSRC
[
2
]);
}
if
(
SRCREC
==
1
)
{
if
(
get_string_from_objectlist
(
"SOURCE_FILE"
,
number_readobjects
,
SOURCE_FILE
,
varname_list
,
value_list
))
{
err
(
"Variable SOURCE_FILE could not be retrieved from the json input file!"
);
err
(
"
Variable SOURCE_FILE could not be retrieved from the json input file!"
);
}
if
(
get_int_from_objectlist
(
"RUN_MULTIPLE_SHOTS"
,
number_readobjects
,
&
RUN_MULTIPLE_SHOTS
,
varname_list
,
value_list
))
{
err
(
"Variable RUN_MULTIPLE_SHOTS could not be retrieved from the json input file!"
);
err
(
"
Variable RUN_MULTIPLE_SHOTS could not be retrieved from the json input file!"
);
}
else
{
if
(
get_float_from_objectlist
(
"SRCTSHIFT"
,
number_readobjects
,
&
SRCTSHIFT
,
varname_list
,
value_list
))
{
...
...
@@ -218,7 +218,7 @@ void read_par_json(FILE *fp, char *fileinp) {
if
(
SRCREC
==
2
)
{
if
(
get_float_from_objectlist
(
"PLANE_WAVE_DEPTH"
,
number_readobjects
,
&
PLANE_WAVE_DEPTH
,
varname_list
,
value_list
))
{
err
(
"Variable PLANE_WAVE_DEPTH could not be retrieved from the json input file!"
);
err
(
"
Variable PLANE_WAVE_DEPTH could not be retrieved from the json input file!"
);
}
else
{
if
(
PLANE_WAVE_DEPTH
>
0
)
{
...
...
@@ -261,7 +261,7 @@ void read_par_json(FILE *fp, char *fileinp) {
if
(
get_int_from_objectlist
(
"L"
,
number_readobjects
,
&
L
,
varname_list
,
value_list
))
{
L
=
0
;
fprintf
(
fp
,
"Variable L is set to default value %d.
\n
"
,
L
);
fprintf
(
fp
,
"
Variable L is set to default value %d.
\n
"
,
L
);
}
else
{
FL
=
vector
(
1
,
L
);
...
...
@@ -299,7 +299,7 @@ void read_par_json(FILE *fp, char *fileinp) {
if
(
get_int_from_objectlist
(
"BOUNDARY"
,
number_readobjects
,
&
BOUNDARY
,
varname_list
,
value_list
))
{
BOUNDARY
=
0
;
fprintf
(
fp
,
"Variable BOUNDARY is set to default value %d.
\n
"
,
BOUNDARY
);
fprintf
(
fp
,
"
Variable BOUNDARY is set to default value %d.
\n
"
,
BOUNDARY
);
}
if
(
get_int_from_objectlist
(
"ABS_TYPE"
,
number_readobjects
,
&
ABS_TYPE
,
varname_list
,
value_list
))
{
...
...
@@ -367,17 +367,17 @@ void read_par_json(FILE *fp, char *fileinp) {
/* increments are read in any case, because they will be also used as increment for model output */
if
(
get_int_from_objectlist
(
"IDX"
,
number_readobjects
,
&
IDX
,
varname_list
,
value_list
))
{
IDX
=
1
;
fprintf
(
fp
,
"Variable IDX is set to default value %d.
\n
"
,
IDX
);
fprintf
(
fp
,
"
Variable IDX is set to default value %d.
\n
"
,
IDX
);
}
if
(
get_int_from_objectlist
(
"IDZ"
,
number_readobjects
,
&
IDY
,
varname_list
,
value_list
))
{
IDY
=
1
;
fprintf
(
fp
,
"Variable IDZ is set to default value %d.
\n
"
,
IDY
);
fprintf
(
fp
,
"
Variable IDZ is set to default value %d.
\n
"
,
IDY
);
}
if
(
get_int_from_objectlist
(
"IDY"
,
number_readobjects
,
&
IDZ
,
varname_list
,
value_list
))
{
IDZ
=
1
;
fprintf
(
fp
,
"Variable IDY is set to default value %d.
\n
"
,
IDZ
);
fprintf
(
fp
,
"
Variable IDY is set to default value %d.
\n
"
,
IDZ
);
}
/*=================================
...
...
@@ -484,7 +484,7 @@ void read_par_json(FILE *fp, char *fileinp) {
REFREC
[
0
]
=
0
.
0
;
REFREC
[
1
]
=
0
.
0
;
REFREC
[
2
]
=
0
.
0
;
fprintf
(
fp
,
"
Variable REFREC is set to default value (%.2f,%.2f,%.2
f).
\n
"
,
REFREC
[
0
],
REFREC
[
1
],
REFREC
[
2
]);
fprintf
(
fp
,
"
Variable REFREC is set to default value (%.1f,%.1f,%.1
f).
\n
"
,
REFREC
[
0
],
REFREC
[
1
],
REFREC
[
2
]);
}
}
...
...
@@ -494,12 +494,12 @@ void read_par_json(FILE *fp, char *fileinp) {
if
(
get_int_from_objectlist
(
"NDT"
,
number_readobjects
,
&
NDT
,
varname_list
,
value_list
))
{
NDT
=
1
;
fprintf
(
fp
,
"Variable NDT is set to default value %d.
\n
"
,
NDT
);
fprintf
(
fp
,
"
Variable NDT is set to default value %d.
\n
"
,
NDT
);
}
if
(
get_int_from_objectlist
(
"NDTSHIFT"
,
number_readobjects
,
&
NDTSHIFT
,
varname_list
,
value_list
))
{
NDTSHIFT
=
0
;
fprintf
(
fp
,
"Variable NDTSHIFT is set to default value %d.
\n
"
,
NDT
);
fprintf
(
fp
,
"
Variable NDTSHIFT is set to default value %d.
\n
"
,
NDT
);
}
if
(
get_int_from_objectlist
(
"SEIS_FORMAT"
,
number_readobjects
,
&
SEIS_FORMAT
[
0
],
varname_list
,
value_list
))
{
...
...
@@ -697,13 +697,13 @@ void read_par_json(FILE *fp, char *fileinp) {
else
{
/* only forward modeling is applied */
ITMIN
=
1
;
fprintf
(
fp
,
"Variable ITMIN is set to default value %d.
\n
"
,
ITMIN
);
fprintf
(
fp
,
"
Variable ITMIN is set to default value %d.
\n
"
,
ITMIN
);
ITMAX
=
1
;
fprintf
(
fp
,
"Variable ITMAX is set to default value %d.
\n
"
,
ITMAX
);
fprintf
(
fp
,
"
Variable ITMAX is set to default value %d.
\n
"
,
ITMAX
);
if
(
get_int_from_objectlist
(
"FILT"
,
number_readobjects
,
&
FILT
,
varname_list
,
value_list
))
{
FILT
=
0
;
fprintf
(
fp
,
"Variable FILT is set to default value %d.
\n
"
,
FILT
);
fprintf
(
fp
,
"
Variable FILT is set to default value %d.
\n
"
,
FILT
);
}
...
...
@@ -711,8 +711,8 @@ void read_par_json(FILE *fp, char *fileinp) {
}
fprintf
(
fp
,
"
\n
End of setting default values
\n
"
);
fprintf
(
fp
,
"=====================================
\n\n
"
);
fprintf
(
fp
,
"
\n
End of setting default values
\n
"
);
fprintf
(
fp
,
"
=====================================
\n\n
"
);
/********************************************/
...
...
src/readinv.c
View file @
befea09f
...
...
@@ -26,7 +26,7 @@ void readinv(float *finv, int *nf, int *groupnum,int *itpergroup,int nfmax){
extern
char
INV_FILE
[
STRING_SIZE
];
extern
FILE
*
FP
;
extern
int
MYID
;
extern
int
MYID
,
VERBOSE
;
char
buffer
[
256
];
int
idummy
;
float
fdummy
;
...
...
@@ -36,10 +36,12 @@ void readinv(float *finv, int *nf, int *groupnum,int *itpergroup,int nfmax){
FILE
*
fpinv
=
NULL
;
fprintf
(
FP
,
"INV_FILE:%s"
,
INV_FILE
);
*
groupnum
+=
1
;
fprintf
(
FP
,
"
\n\n
********** INVERSION STAGE NR. %d **********
\n
"
,
*
groupnum
);
if
(
VERBOSE
)
fprintf
(
FP
,
" INV_FILE:%s
\n
"
,
INV_FILE
);
if
(
MYID
==
0
){