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
IFOS2D
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
4
Issues
4
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Environments
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
IFOS2D
Commits
1265a7e8
Commit
1265a7e8
authored
May 11, 2016
by
laura.gassner
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of git.scc.kit.edu:GPIAG-Software/IFOS2D into develop
parents
5ae8a37e
e2632b7a
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
114 additions
and
95 deletions
+114
-95
par/in_and_out/IFOS2D_INV_all_parameters.json
par/in_and_out/IFOS2D_INV_all_parameters.json
+0
-1
src/IFOS2D.c
src/IFOS2D.c
+89
-20
src/exchange_par.c
src/exchange_par.c
+8
-3
src/globvar.h
src/globvar.h
+3
-1
src/read_par_json.c
src/read_par_json.c
+8
-8
src/timedomain_filt.c
src/timedomain_filt.c
+1
-28
src/timedomain_filt_vector.c
src/timedomain_filt_vector.c
+1
-28
src/write_par.c
src/write_par.c
+4
-6
No files found.
par/in_and_out/IFOS2D_INV_all_parameters.json
View file @
1265a7e8
...
...
@@ -169,7 +169,6 @@
"F_LOW_PASS_END"
:
"75.0"
,
"F_LOW_PASS_INCR"
:
"10.0"
,
"ORDER"
:
"2"
,
"ZERO_PHASE"
:
"0"
,
"FREQ_FILE"
:
"frequencies.dat"
,
"WRITE_FILTERED_DATA"
:
"0"
,
...
...
src/IFOS2D.c
View file @
1265a7e8
...
...
@@ -53,7 +53,7 @@ int main(int argc, char **argv){
int
sum_killed_traces
=
0
,
sum_killed_traces_testshots
=
0
,
killed_traces
=
0
,
killed_traces_testshots
=
0
;
int
*
ptr_killed_traces
=&
killed_traces
,
*
ptr_killed_traces_testshots
=&
killed_traces_testshots
;
float
energy
,
energy_sum
,
energy_all_shots
,
energy_sum_all_shots
;
float
energy
,
energy_sum
,
energy_all_shots
,
energy_sum_all_shots
=
0
.
0
;
float
energy_SH
,
energy_sum_SH
,
energy_all_shots_SH
,
energy_sum_all_shots_SH
;
float
L2_SH
,
L2sum_SH
,
L2_all_shots_SH
,
L2sum_all_shots_SH
;
...
...
@@ -157,9 +157,15 @@ int main(int argc, char **argv){
int
nfrq
=
0
;
int
FREQ_NR
=
1
;
float
JOINT_EQUAL_PSV
=
0
.
0
,
JOINT_EQUAL_SH
=
0
.
0
;
float
JOINT_EQUAL_PSV_all
=
0
.
0
,
JOINT_EQUAL_SH_all
=
0
.
0
;
int
JOINT_EQUAL_new_max
=
1
;
FILE
*
fprec
,
*
FPL2
;
FILE
*
FPL2_JOINT
;
char
L2_joint_log
[
STRING_SIZE
];
/* General parameters */
int
nt_out
;
...
...
@@ -1072,27 +1078,41 @@ int main(int argc, char **argv){
C_rho
=
rho_avg
*
rho_avg
;
}
/* Seperate PSV and SH logging in case of a joint inversion */
if
(
WAVETYPE
==
3
){
sprintf
(
L2_joint_log
,
"%s_JOINT"
,
MISFIT_LOG_FILE
);
}
/* Open Log File for L2 norm */
if
(
FORWARD_ONLY
!=
1
){
if
(
MYID
==
0
){
if
(
iter
==
1
){
FPL2
=
fopen
(
MISFIT_LOG_FILE
,
"w"
);
/* Write header for misfit log file */
if
(
GRAD_METHOD
==
1
&&
VERBOSE
)
{
if
(
TIME_FILT
==
0
){
fprintf
(
FPL2
,
"opteps_vp
\t
epst1[1]
\t
epst1[2]
\t
epst1[3]
\t
L2t[1]
\t
L2t[2]
\t
L2t[3]
\t
L2t[4]
\n
"
);}
else
{
fprintf
(
FPL2
,
"opteps_vp
\t
epst1[1]
\t
epst1[2]
\t
epst1[3]
\t
L2t[1]
\t
L2t[2]
\t
L2t[3]
\t
L2t[4]
\t
F_LOW_PASS
\n
"
);
}
if
(
!
FORWARD_ONLY
&&
MYID
==
0
){
if
(
iter
==
1
){
FPL2
=
fopen
(
MISFIT_LOG_FILE
,
"w"
);
/* Write header for misfit log file */
if
(
GRAD_METHOD
==
1
&&
VERBOSE
)
{
if
(
TIME_FILT
==
0
){
fprintf
(
FPL2
,
"opteps_vp
\t
epst1[1]
\t
epst1[2]
\t
epst1[3]
\t
L2t[1]
\t
L2t[2]
\t
L2t[3]
\t
L2t[4]
\n
"
);}
else
{
fprintf
(
FPL2
,
"opteps_vp
\t
epst1[1]
\t
epst1[2]
\t
epst1[3]
\t
L2t[1]
\t
L2t[2]
\t
L2t[3]
\t
L2t[4]
\t
F_LOW_PASS
\n
"
);
}
}
if
(
iter
>
1
){
FPL2
=
fopen
(
MISFIT_LOG_FILE
,
"a"
);}
if
(
WAVETYPE
==
3
)
FPL2_JOINT
=
fopen
(
L2_joint_log
,
"w"
);
}
else
{
FPL2
=
fopen
(
MISFIT_LOG_FILE
,
"a"
);
if
(
WAVETYPE
==
3
)
FPL2_JOINT
=
fopen
(
L2_joint_log
,
"a"
);
}
}
/* initialization of L2 calculation */
L2
=
0
.
0
;
Lcount
=
0
;
energy
=
0
.
0
;
L2_all_shots
=
0
.
0
;
energy_all_shots
=
0
.
0
;
...
...
@@ -2806,7 +2826,7 @@ int main(int argc, char **argv){
energy_sum_all_shots
=
0
.
0
;
MPI_Allreduce
(
&
energy_all_shots
,
&
energy_sum_all_shots
,
1
,
MPI_FLOAT
,
MPI_SUM
,
MPI_COMM_WORLD
);
if
(
MYID
==
0
&&
(
WAVETYPE
==
3
))
printf
(
"
\n\n
PSV: L2=%f"
,
L2sum_all_shots
/
energy_sum_all_shots
);
if
(
MYID
==
0
&&
(
WAVETYPE
==
3
))
printf
(
"
\n\n
PSV: L2=%f"
,
L2sum_all_shots
/
energy_sum_all_shots
);
}
if
(
WAVETYPE
==
2
||
WAVETYPE
==
3
){
L2sum_SH
=
0
.
0
;
...
...
@@ -2818,8 +2838,9 @@ int main(int argc, char **argv){
energy_sum_all_shots_SH
=
0
.
0
;
MPI_Allreduce
(
&
energy_all_shots_SH
,
&
energy_sum_all_shots_SH
,
1
,
MPI_FLOAT
,
MPI_SUM
,
MPI_COMM_WORLD
);
if
(
MYID
==
0
&&
(
WAVETYPE
==
3
))
printf
(
"
\n
SH: L2=%f"
,
L2sum_all_shots_SH
/
energy_sum_all_shots_SH
);
if
(
MYID
==
0
&&
(
WAVETYPE
==
3
))
printf
(
"
\n
SH: L2=%f"
,
L2sum_all_shots_SH
/
energy_sum_all_shots_SH
);
}
sum_killed_traces
=
0
;
MPI_Allreduce
(
&
killed_traces
,
&
sum_killed_traces
,
1
,
MPI_INT
,
MPI_SUM
,
MPI_COMM_WORLD
);
sum_killed_traces_testshots
=
0
;
...
...
@@ -2829,6 +2850,27 @@ int main(int argc, char **argv){
switch
(
LNORM
){
case
2
:
L2t
[
1
]
=
0
.
0
;
L2t
[
4
]
=
0
.
0
;
if
(
JOINT_EQUAL_WEIGHTING
){
if
(
JOINT_EQUAL_new_max
){
JOINT_EQUAL_PSV
=
L2sum
/
energy_sum
;
JOINT_EQUAL_SH
=
L2sum_SH
/
energy_sum_SH
;
JOINT_EQUAL_PSV_all
=
L2sum_all_shots
/
energy_sum_all_shots
;
JOINT_EQUAL_SH_all
=
L2sum_all_shots_SH
/
energy_sum_all_shots_SH
;
JOINT_EQUAL_new_max
=
0
;
}
L2t
[
1
]
+=
(
L2sum
/
energy_sum
)
/
JOINT_EQUAL_PSV
;
L2t
[
4
]
+=
(
L2sum_all_shots
/
energy_sum_all_shots
)
/
JOINT_EQUAL_PSV_all
;
L2t
[
1
]
+=
(
L2sum_SH
/
energy_sum_SH
)
/
JOINT_EQUAL_SH
;
L2t
[
4
]
+=
(
L2sum_all_shots_SH
/
energy_sum_all_shots_SH
)
/
JOINT_EQUAL_SH_all
;
break
;
}
if
(
WAVETYPE
==
1
||
WAVETYPE
==
3
){
L2t
[
1
]
+=
L2sum
/
energy_sum
;
...
...
@@ -2839,6 +2881,7 @@ int main(int argc, char **argv){
L2t
[
1
]
+=
L2sum_SH
/
energy_sum_SH
;
L2t
[
4
]
+=
L2sum_all_shots_SH
/
energy_sum_all_shots_SH
;
}
if
(
MYID
==
0
&&
(
WAVETYPE
==
3
))
printf
(
"
\n
Sum: L2=%f"
,
L2t
[
4
]);
break
;
...
...
@@ -3117,6 +3160,10 @@ int main(int argc, char **argv){
if
(
MYID
==
0
)
fprintf
(
FPL2
,
"%e
\t
%d
\t
%d
\t
%f
\t
0
\t
%d
\t
%e
\t
%e
\t
%f
\n
"
,
0
.
0
,
iter
,
wolfe_sum_FWI
,
0
.
0
,
countstep
-
1
,
L2_SL_old
,
L2_SL_old
,
F_LOW_PASS
);
}
if
(
WAVETYPE
==
3
&&
MYID
==
0
){
fprintf
(
FPL2_JOINT
,
"%d
\t
%f
\t
%f
\n
"
,
iter
,
L2sum_all_shots
/
energy_sum_all_shots
,
L2sum_all_shots_SH
/
energy_sum_all_shots_SH
);
}
/* No update is done here, however model fils are written to disk for easy post processing */
alpha_SL
=
0
.
0
;
calc_mat_change_test
(
waveconv_up
,
waveconv_rho_up
,
waveconv_u_up
,
prhonp1
,
prho
,
ppinp1
,
ppi
,
punp1
,
pu
,
iter
,
1
,
FORWARD_ONLY
,
alpha_SL
,
0
,
nfstart
,
Vs0
,
Vp0
,
Rho0
,
wavetype_start
,
s_LBFGS
,
N_LBFGS
,
LBFGS_NPAR
,
Vs_avg
,
Vp_avg
,
rho_avg
,
LBFGS_iter_start
);
...
...
@@ -3158,6 +3205,10 @@ int main(int argc, char **argv){
if
(
MYID
==
0
)
fprintf
(
FPL2
,
"%e
\t
%d
\t
%d
\t
%f
\t
0
\t
%d
\t
%e
\t
%e
\t
%f
\n
"
,
alpha_SL
,
iter
,
wolfe_sum_FWI
,
diff
,
countstep
-
1
,
L2_SL_old
,
L2_SL_new
,
F_LOW_PASS
);
}
if
(
WAVETYPE
==
3
&&
MYID
==
0
){
fprintf
(
FPL2_JOINT
,
"%d
\t
%f
\t
%f
\n
"
,
iter
,
L2sum_all_shots
/
energy_sum_all_shots
,
L2sum_all_shots_SH
/
energy_sum_all_shots_SH
);
}
/* initiate variables for next iteration */
if
(
use_wolfe_failsafe
==
1
)
{
L2_hist
[
iter
]
=
L2_SL_new
;
...
...
@@ -3597,6 +3648,15 @@ int main(int argc, char **argv){
case
2
:
L2t
[
itest
]
=
0
.
0
;
if
(
JOINT_EQUAL_WEIGHTING
){
L2t
[
itest
]
+=
(
L2sum
/
energy_sum
)
/
JOINT_EQUAL_PSV
;
L2t
[
itest
]
+=
(
L2sum_SH
/
energy_sum_SH
)
/
JOINT_EQUAL_SH
;
break
;
}
if
(
WAVETYPE
==
1
||
WAVETYPE
==
3
){
L2t
[
itest
]
+=
L2sum
/
energy_sum
;
}
...
...
@@ -3796,6 +3856,9 @@ int main(int argc, char **argv){
fprintf
(
FPL2
,
"%e
\t
%e
\t
%e
\t
%e
\t
%e
\t
%e
\t
%e
\t
%e
\n
"
,
opteps_vp
,
epst1
[
1
],
epst1
[
2
],
epst1
[
3
],
L2t
[
1
],
L2t
[
2
],
L2t
[
3
],
L2t
[
4
]);}
else
{
fprintf
(
FPL2
,
"%e
\t
%e
\t
%e
\t
%e
\t
%e
\t
%e
\t
%e
\t
%e
\t
%f
\n
"
,
opteps_vp
,
epst1
[
1
],
epst1
[
2
],
epst1
[
3
],
L2t
[
1
],
L2t
[
2
],
L2t
[
3
],
L2t
[
4
],
F_LOW_PASS
);}
if
(
WAVETYPE
==
3
&&
MYID
==
0
){
fprintf
(
FPL2_JOINT
,
"%d
\t
%f
\t
%f
\n
"
,
iter
,
L2sum_all_shots
/
energy_sum_all_shots
,
L2sum_all_shots_SH
/
energy_sum_all_shots_SH
);
}
}
/* saving history of final L2*/
...
...
@@ -3830,6 +3893,9 @@ int main(int argc, char **argv){
if
(
MYID
==
0
){
fclose
(
FPL2
);
}
if
(
WAVETYPE
==
3
&&
MYID
==
0
)
{
fclose
(
FPL2_JOINT
);
}
}
if
(
iter
==
nfstart
){
...
...
@@ -3885,7 +3951,7 @@ int main(int argc, char **argv){
}
/* abort criterion: did not found a step length which decreases the misfit*/
if
((
step3
==
1
)
&&
(
TIME_FILT
==
0
&&
USE_WORKFLOW
==
0
)){
if
((
step3
==
1
||
wolfe_SLS_failed
)
&&
(
TIME_FILT
==
0
&&
USE_WORKFLOW
==
0
)){
if
(
MYID
==
0
){
printf
(
"
\n
Did not find a step length which decreases the misfit.
\n
"
);
}
...
...
@@ -3929,7 +3995,8 @@ int main(int argc, char **argv){
wolfe_SLS_failed
=
0
;
step3
=
0
;
step3
=
0
;
JOINT_EQUAL_new_max
=
1
;
}
/* ------------------------------------------------- */
...
...
@@ -3966,7 +4033,8 @@ int main(int argc, char **argv){
wolfe_SLS_failed
=
0
;
alpha_SL_old
=
1
;
step3
=
0
;
step3
=
0
;
JOINT_EQUAL_new_max
=
1
;
}
/* ------------------------------------------------- */
...
...
@@ -4003,7 +4071,8 @@ int main(int argc, char **argv){
wolfe_SLS_failed
=
0
;
alpha_SL_old
=
1
;
step3
=
0
;
step3
=
0
;
JOINT_EQUAL_new_max
=
1
;
}
}
...
...
src/exchange_par.c
View file @
1265a7e8
...
...
@@ -59,7 +59,7 @@ void exchange_par(void){
extern
float
npower
,
k_max_PML
;
extern
int
INV_STF
,
N_STF
,
N_STF_START
;
extern
char
PARA
[
STRING_SIZE
];
extern
int
TIME_FILT
,
ORDER
,
ZERO_PHASE
,
WRITE_FILTERED_DATA
;
extern
int
TIME_FILT
,
ORDER
,
WRITE_FILTERED_DATA
;
extern
float
F_LOW_PASS_START
,
F_LOW_PASS_END
,
F_LOW_PASS_INCR
,
F_HIGH_PASS
;
extern
int
LNORM
,
DTINV
;
extern
int
STEPMAX
;
...
...
@@ -95,6 +95,7 @@ void exchange_par(void){
extern
int
WAVETYPE
;
extern
int
SOURCE_SHAPE_SH
;
extern
int
JOINT_INVERSION_PSV_SH_TYPE
;
extern
int
JOINT_EQUAL_WEIGHTING
;
/* Workflow */
extern
char
FILE_WORKFLOW
[
STRING_SIZE
];
extern
int
USE_WORKFLOW
;
...
...
@@ -325,7 +326,7 @@ void exchange_par(void){
idum
[
85
]
=
NO_OF_TESTSHOTS
;
idum
[
86
]
=
ZERO_PHASE
;
// idum[86] = EMPTY
;
idum
[
87
]
=
VELOCITY
;
...
...
@@ -375,6 +376,8 @@ void exchange_par(void){
idum
[
115
]
=
TRKILL_STF_OFFSET
;
idum
[
116
]
=
TRKILL_STF_OFFSET_INVERT
;
idum
[
117
]
=
JOINT_EQUAL_WEIGHTING
;
}
/** if (MYID == 0) **/
MPI_Barrier
(
MPI_COMM_WORLD
);
...
...
@@ -609,7 +612,7 @@ void exchange_par(void){
NO_OF_TESTSHOTS
=
idum
[
85
];
ZERO_PHASE
=
idum
[
86
];
// EMPTY
= idum[86];
VELOCITY
=
idum
[
87
];
...
...
@@ -660,6 +663,8 @@ void exchange_par(void){
TRKILL_STF_OFFSET
=
idum
[
115
];
TRKILL_STF_OFFSET_INVERT
=
idum
[
116
];
JOINT_EQUAL_WEIGHTING
=
idum
[
117
];
if
(
MYID
!=
0
&&
L
>
0
)
{
FL
=
vector
(
1
,
L
);
}
...
...
src/globvar.h
View file @
1265a7e8
...
...
@@ -72,7 +72,7 @@ int TAPER_STF;
int
INV_STF
,
N_STF
,
N_STF_START
,
TW_IND
;
char
PARA
[
STRING_SIZE
];
int
TIME_FILT
,
ORDER
,
ZERO_PHASE
;
int
TIME_FILT
,
ORDER
;
int
WRITE_FILTERED_DATA
;
float
F_LOW_PASS_START
,
F_LOW_PASS_END
,
F_LOW_PASS_INCR
,
F_HIGH_PASS
;
...
...
@@ -143,6 +143,8 @@ int VERBOSE;
int
WAVETYPE
;
int
JOINT_INVERSION_PSV_SH_TYPE
;
int
JOINT_EQUAL_WEIGHTING
;
float
JOINT_INVERSION_PSV_SH_ALPHA_VS
;
float
JOINT_INVERSION_PSV_SH_ALPHA_RHO
;
int
SNAPSHOT_START
,
SNAPSHOT_END
,
SNAPSHOT_INCR
;
\ No newline at end of file
src/read_par_json.c
View file @
1265a7e8
...
...
@@ -28,7 +28,7 @@ char ** varname_list,** value_list;
void
read_par_json
(
FILE
*
fp
,
char
*
fileinp
){
/* declaration of extern variables */
extern
int
NX
,
NY
,
FDORDER
,
MAXRELERROR
,
SOURCE_SHAPE
,
SOURCE_SHAPE_SH
,
SOURCE_TYPE
,
SNAP
,
SNAP_FORMAT
,
ACOUSTIC
,
L
,
VERBOSE
,
WAVETYPE
,
JOINT_INVERSION_PSV_SH_TYPE
;
extern
int
NX
,
NY
,
FDORDER
,
MAXRELERROR
,
SOURCE_SHAPE
,
SOURCE_SHAPE_SH
,
SOURCE_TYPE
,
SNAP
,
SNAP_FORMAT
,
ACOUSTIC
,
L
,
VERBOSE
,
WAVETYPE
,
JOINT_INVERSION_PSV_SH_TYPE
,
JOINT_EQUAL_WEIGHTING
;
extern
float
DH
,
TIME
,
DT
,
TS
,
*
FL
,
TAU
,
VPPML
,
PLANE_WAVE_DEPTH
,
PHI
,
F_REF
,
JOINT_INVERSION_PSV_SH_ALPHA_VS
,
JOINT_INVERSION_PSV_SH_ALPHA_RHO
;
extern
float
XREC1
,
XREC2
,
YREC1
,
YREC2
,
FPML
;
extern
float
REC_ARRAY_DEPTH
,
REC_ARRAY_DIST
;
...
...
@@ -62,7 +62,7 @@ void read_par_json(FILE *fp, char *fileinp){
extern
int
INV_STF
,
N_STF
,
N_STF_START
;
extern
char
PARA
[
STRING_SIZE
];
extern
int
TIME_FILT
,
ORDER
,
ZERO_PHASE
,
WRITE_FILTERED_DATA
;
extern
int
TIME_FILT
,
ORDER
,
WRITE_FILTERED_DATA
;
extern
float
F_LOW_PASS_START
,
F_LOW_PASS_END
,
F_LOW_PASS_INCR
,
F_HIGH_PASS
;
extern
int
LNORM
,
DTINV
;
...
...
@@ -216,6 +216,12 @@ void read_par_json(FILE *fp, char *fileinp){
fprintf
(
fp
,
"For acoustic modelling WAVETYPE is set to %d.
\n
"
,
WAVETYPE
);
}
if
(
WAVETYPE
==
3
)
{
if
(
get_int_from_objectlist
(
"JOINT_EQUAL_WEIGHTING"
,
number_readobjects
,
&
JOINT_EQUAL_WEIGHTING
,
varname_list
,
value_list
)){
JOINT_EQUAL_WEIGHTING
=
0
;
fprintf
(
fp
,
"Variable JOINT_EQUAL_WEIGHTING is set to default value %d.
\n
"
,
JOINT_EQUAL_WEIGHTING
);
}
if
(
get_int_from_objectlist
(
"JOINT_INVERSION_PSV_SH_TYPE"
,
number_readobjects
,
&
JOINT_INVERSION_PSV_SH_TYPE
,
varname_list
,
value_list
)){
JOINT_INVERSION_PSV_SH_TYPE
=
1
;
fprintf
(
fp
,
"Variable JOINT_INVERSION_PSV_SH_TYPE is set to default value %d.
\n
"
,
JOINT_INVERSION_PSV_SH_TYPE
);
...
...
@@ -847,9 +853,6 @@ void read_par_json(FILE *fp, char *fileinp){
declare_error
(
"Variable ORDER could not be retrieved from the json input file!"
);
}
}
if
(
get_int_from_objectlist
(
"ZERO_PHASE"
,
number_readobjects
,
&
ZERO_PHASE
,
varname_list
,
value_list
)){
ZERO_PHASE
=
0
;
fprintf
(
fp
,
"Variable ZERO_PHASE is set to default value %i.
\n
"
,
ZERO_PHASE
);}
if
(
TIME_FILT
==
2
)
{
if
(
get_float_from_objectlist
(
"F_HIGH_PASS"
,
number_readobjects
,
&
F_HIGH_PASS
,
varname_list
,
value_list
)){
F_HIGH_PASS
=
0
.
0
;
...
...
@@ -858,9 +861,6 @@ void read_par_json(FILE *fp, char *fileinp){
declare_error
(
"Variable FREQ_FILE could not be retrieved from the json input file!"
);
if
(
get_int_from_objectlist
(
"ORDER"
,
number_readobjects
,
&
ORDER
,
varname_list
,
value_list
))
declare_error
(
"Variable ORDER could not be retrieved from the json input file!"
);
if
(
get_int_from_objectlist
(
"ZERO_PHASE"
,
number_readobjects
,
&
ZERO_PHASE
,
varname_list
,
value_list
)){
ZERO_PHASE
=
0
;
fprintf
(
fp
,
"Variable ZERO_PHASE is set to default value %i.
\n
"
,
ZERO_PHASE
);}
}
}
...
...
src/timedomain_filt.c
View file @
1265a7e8
...
...
@@ -39,7 +39,7 @@ void timedomain_filt(float ** data, float fc, int order, int ntr, int ns, int m
/* declaration of extern variables */
extern
float
DT
,
F_HIGH_PASS
;
extern
int
ZERO_PHASE
,
NT
,
MYID
;
extern
int
NT
,
MYID
;
/* declaration of local variables */
int
itr
,
j
,
ns_reverse
;
...
...
@@ -47,10 +47,8 @@ void timedomain_filt(float ** data, float fc, int order, int ntr, int ns, int m
double
*
seismogram_hp
,
*
seismogram_reverse_hp
,
T0_hp
;
seismogram
=
dvector
(
1
,
ns
);
if
(
ZERO_PHASE
==
1
)
seismogram_reverse
=
dvector
(
1
,
ns
);
seismogram_hp
=
dvector
(
1
,
ns
);
if
(
ZERO_PHASE
==
1
)
seismogram_reverse_hp
=
dvector
(
1
,
ns
);
T0
=
1
.
0
/
(
double
)
fc
;
if
(
F_HIGH_PASS
)
...
...
@@ -65,18 +63,6 @@ void timedomain_filt(float ** data, float fc, int order, int ntr, int ns, int m
}
seife_lpb
(
seismogram
,
ns
+
1
,
DT
,
T0
,
order
);
/* ns+1 because vector[0] is also allocated and otherwise seife_lpb do not filter the last sample */
if
(
ZERO_PHASE
==
1
){
ns_reverse
=
ns
;
for
(
j
=
1
;
j
<=
ns
;
j
++
)
{
seismogram_reverse
[
ns_reverse
]
=
seismogram
[
j
];
ns_reverse
--
;}
seife_lpb
(
seismogram_reverse
,
ns
+
1
,
DT
,
T0
,
order
);
ns_reverse
=
ns
;
for
(
j
=
1
;
j
<=
ns
;
j
++
)
{
seismogram
[
ns_reverse
]
=
seismogram_reverse
[
j
];
ns_reverse
--
;}
}
for
(
j
=
1
;
j
<=
ns
;
j
++
){
data
[
itr
][
j
]
=
(
float
)
seismogram
[
j
];
...
...
@@ -92,17 +78,6 @@ void timedomain_filt(float ** data, float fc, int order, int ntr, int ns, int m
seife_hpb
(
seismogram_hp
,
ns
+
1
,
DT
,
T0_hp
,
order
);
if
(
ZERO_PHASE
==
1
){
ns_reverse
=
ns
;
for
(
j
=
1
;
j
<=
ns
;
j
++
)
{
seismogram_reverse_hp
[
ns_reverse
]
=
seismogram_hp
[
j
];
ns_reverse
--
;}
seife_hpb
(
seismogram_reverse_hp
,
ns
+
1
,
DT
,
T0_hp
,
order
);
ns_reverse
=
ns
;
for
(
j
=
1
;
j
<=
ns
;
j
++
)
{
seismogram_hp
[
ns_reverse
]
=
seismogram_reverse_hp
[
j
];
ns_reverse
--
;}
}
for
(
j
=
1
;
j
<=
ns
;
j
++
){
data
[
itr
][
j
]
=
(
float
)
seismogram_hp
[
j
];
}
...
...
@@ -110,9 +85,7 @@ void timedomain_filt(float ** data, float fc, int order, int ntr, int ns, int m
}
/* end of itr<=ntr loop */
free_dvector
(
seismogram
,
1
,
ns
);
if
(
ZERO_PHASE
==
1
)
free_dvector
(
seismogram_reverse
,
1
,
ns
);
free_dvector
(
seismogram_hp
,
1
,
ns
);
if
(
ZERO_PHASE
==
1
)
free_dvector
(
seismogram_reverse_hp
,
1
,
ns
);
}
/* end of function */
src/timedomain_filt_vector.c
View file @
1265a7e8
...
...
@@ -39,7 +39,7 @@ void timedomain_filt_vector(float * data, float fc, int order, int ns, int meth
/* declaration of external variables */
extern
float
DT
,
F_HIGH_PASS
;
extern
int
ZERO_PHASE
,
NT
,
MYID
;
extern
int
NT
,
MYID
;
/* declaration of local variables */
int
itr
,
j
,
ns_reverse
;
...
...
@@ -50,10 +50,8 @@ void timedomain_filt_vector(float * data, float fc, int order, int ns, int meth
declare_error
(
"Order of timedomain filter must be an even number!"
);}
seismogram
=
dvector
(
1
,
ns
);
if
(
ZERO_PHASE
==
1
)
seismogram_reverse
=
dvector
(
1
,
ns
);
seismogram_hp
=
dvector
(
1
,
ns
);
if
(
ZERO_PHASE
==
1
)
seismogram_reverse_hp
=
dvector
(
1
,
ns
);
T0
=
1
.
0
/
(
double
)
fc
;
if
(
F_HIGH_PASS
)
...
...
@@ -67,18 +65,6 @@ void timedomain_filt_vector(float * data, float fc, int order, int ns, int meth
}
seife_lpb
(
seismogram
,
ns
+
1
,
DT
,
T0
,
order
);
/* ns+1 because vector[0] is also allocated and otherwise seife_lpb do not filter the last sample */
if
(
ZERO_PHASE
==
1
){
ns_reverse
=
ns
;
for
(
j
=
1
;
j
<=
ns
;
j
++
)
{
seismogram_reverse
[
ns_reverse
]
=
seismogram
[
j
];
ns_reverse
--
;}
seife_lpb
(
seismogram_reverse
,
ns
+
1
,
DT
,
T0
,
order
);
ns_reverse
=
ns
;
for
(
j
=
1
;
j
<=
ns
;
j
++
)
{
seismogram
[
ns_reverse
]
=
seismogram_reverse
[
j
];
ns_reverse
--
;}
}
for
(
j
=
1
;
j
<=
ns
;
j
++
){
data
[
j
]
=
(
float
)
seismogram
[
j
];
...
...
@@ -92,26 +78,13 @@ void timedomain_filt_vector(float * data, float fc, int order, int ns, int meth
seife_hpb
(
seismogram_hp
,
ns
+
1
,
DT
,
T0_hp
,
order
);
if
(
ZERO_PHASE
==
1
){
ns_reverse
=
ns
;
for
(
j
=
1
;
j
<=
ns
;
j
++
)
{
seismogram_reverse_hp
[
ns_reverse
]
=
seismogram_hp
[
j
];
ns_reverse
--
;}
seife_hpb
(
seismogram_reverse_hp
,
ns
+
1
,
DT
,
T0_hp
,
order
);
ns_reverse
=
ns
;
for
(
j
=
1
;
j
<=
ns
;
j
++
)
{
seismogram_hp
[
ns_reverse
]
=
seismogram_reverse_hp
[
j
];
ns_reverse
--
;}
}
for
(
j
=
1
;
j
<=
ns
;
j
++
){
data
[
j
]
=
(
float
)
seismogram_hp
[
j
];
}
}
free_dvector
(
seismogram
,
1
,
ns
);
if
(
ZERO_PHASE
==
1
)
free_dvector
(
seismogram_reverse
,
1
,
ns
);
free_dvector
(
seismogram_hp
,
1
,
ns
);
if
(
ZERO_PHASE
==
1
)
free_dvector
(
seismogram_reverse_hp
,
1
,
ns
);
}
\ No newline at end of file
src/write_par.c
View file @
1265a7e8
...
...
@@ -62,7 +62,7 @@ void write_par(FILE *fp){
extern
int
INV_STF
,
N_STF
,
N_STF_START
;
extern
char
PARA
[
STRING_SIZE
];
extern
int
TIME_FILT
,
ORDER
,
ZERO_PHASE
;
extern
int
TIME_FILT
,
ORDER
;
extern
float
F_LOW_PASS_START
,
F_LOW_PASS_END
,
F_LOW_PASS_INCR
;
extern
int
LNORM
,
DTINV
;
extern
int
STEPMAX
,
TRKILL
,
TRKILL_STF
;
...
...
@@ -525,11 +525,9 @@ void write_par(FILE *fp){
fprintf
(
fp
,
" Order of lowpass filter is:
\t
%d
\n
"
,
ORDER
);
if
((
ORDER
%
2
)
!=
0
){
declare_error
(
" Order of time domain filter must be an even number!
\n
"
);}
if
(
ZERO_PHASE
){
fprintf
(
fp
,
" ZERO_PHASE=%i: Zero phase filtering is applied!
\n
"
,
ZERO_PHASE
);}
else
fprintf
(
fp
,
" No zero phase filtering is applied!
\n
"
);}
else
fprintf
(
fp
,
" TIME_FILT=%d: No time domain filtering is applied.
\n
"
,
TIME_FILT
);
}
else
{
fprintf
(
fp
,
" TIME_FILT=%d: No time domain filtering is applied.
\n
"
,
TIME_FILT
);
}
fprintf
(
fp
,
"
\n\n
"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment