Commit f1dc19ef authored by niklas.thiel's avatar niklas.thiel

manual updated, cleaned up IFOS2D

parent fadfcc1b
......@@ -341,6 +341,23 @@ Default values are:
If SEISMO$>$0 seismograms recorded at the receiver positions are written to the corresponding output files. The sampling rate of the seismograms is NDT*DT seconds. In case of a small time step interval and a high number of time steps, it might be useful to choose a high NDT in order to avoid a unnecessary detailed sampling of the seismograms and consequently large files of seismogram data. Possible output formats of the seismograms are SU, ASCII and BINARY. It is recommended to use SU format for saving the seismograms. The main advantage of this format is that the time step interval (NDT*DT) and the acquisition geometry (shot and receiver locations) are stored in the corresponding SU header words. Also additional header words like offset are set by IFOS2D. This format thus facilitates a further visualization and processing of the synthetic seismograms. Note, however, that SU cannot handle sampling rates smaller than 1.0e-6 seconds and the number of samples is limited to about 32.000. In such cases, you should increase the sampling rate by increasing NDT. If this is impossible (for example because the Nyquist criterion is violated) you must choose a different output format (ASCII or binary). File endings will be added to SEIS\_FILE automatically.
\section{Wavefield separation}
\label{wavefield_sep}
{\color{blue}{\begin{verbatim}
"Wavefield separation" : "comment",
"WAVESEP" : "1",
"VEL" : "1500",
"DENS" : "1000",
"ANGTAPI" : "0",
"ANGTAPO" : "70",
\end{verbatim}}}
{\color{red}{\begin{verbatim}
Default values are:
WAVESEP=0
\end{verbatim}}}
If WAVESEP$=$1 a wavefield separation is performed after every forward modeling. The recorded wavefield is separated into an upgoing and downgoing wavefield by using the recorded p-data and vz-data (\cite{amundsen:93}). Therefore, SEISMO$=$4 or SEISMO$=$5 are mandatory. For the following inversion only the upgpoing wavefield is used. For the calculation of the filter the velocity (VEL in m/s) and the density (DENS in kg/m$^3$) are needed, as well as the angles of the taper of the filter (ANGTAPI, ANGTAPO in degree with $0^\circ$ $<=$ ANGTAPI, ANGTAPO $<=$ $90^\circ$ and ANGTAPI $<=$ ANGTAPO). ANGTAPO describes the maximum used dipping angle. ANGTAPI defines the start of the taper function of the filter.
\section{Q-approximation}
\label{q_approx}
......@@ -889,4 +906,4 @@ Default values are:
MODEL_FILTER=0
\end{verbatim}}}
If MODEL\_FILTER = 1 vp- and vs-models are smoothed with a 2D median filter after every iterationstep. With FILT\_SIZE you can set the filter length in gridpoints.
\ No newline at end of file
If MODEL\_FILTER = 1 vp- and vs-models are smoothed with a 2D median filter after every iterationstep. With FILT\_SIZE you can set the filter length in gridpoints.
......@@ -3079,3 +3079,13 @@ author = {Choi, Y. and Alkhalifah, T.},
pages = {748--758},
year ={2012}
}
@article{amundsen:93,
title={Wavenumber-based filtering of marine point-source data},
author={Amundsen, Lasse},
journal=Geo,
volume={58},
number={9},
pages={1335--1348},
year={1993},
publisher={Society of Exploration Geophysicists}
}
......@@ -59,12 +59,12 @@
"NGEOPH" : "80",
"Wavefield Separation" : "comment",
"WAVESEP" : "0",
"VEL" : "1500",
"DENS" : "1000",
"ANGTAPI" : "0",
"ANGTAPO" : "70",
"Wavefield separation" : "comment",
"WAVESEP" : "0",
"VEL" : "1500",
"DENS" : "1000",
"ANGTAPI" : "0",
"ANGTAPO" : "70",
"Seismograms" : "comment",
"NDT" : "1",
......
......@@ -1430,10 +1430,11 @@ int main(int argc, char **argv){
/* wavefield separation*/
if (WAVESEP==1) {
if (MYID == 0) pup(fulldata_p, fulldata_vz, FP, ntr_glob,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
/* overwrite sectionp with pup data */
inseis(fprec,ishot,sectionp,ntr_glob,ns,3,iter);
}
if (MYID == 0) fprintf(FP,"\n start wavefield separation...");
if (MYID == 0) pup(fulldata_p, fulldata_vy, FP, ntr_glob,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
if (MYID == 0) fprintf(FP,"\n wavefield separation finished");
inseis(fprec,ishot,sectionp,ntr_glob,ns,3,iter);
}
break;
......@@ -1960,7 +1961,7 @@ int main(int argc, char **argv){
if (MYID == 0) fprintf(FP,"\n start wavefield separation...");
if (MYID == 0) pup(fulldata_p, fulldata_vy, FP, ntr_glob,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
if (MYID == 0) fprintf(FP,"\n wavefield separation finished");
// inseis(fprec,ishot,sectionp,ntr_glob,ns,3,iter);
inseis(fprec,ishot,sectionp,ntr_glob,ns,3,iter);
}
break;
......@@ -3460,14 +3461,14 @@ int main(int argc, char **argv){
}
}
/* wavefield separation */
if (WAVESEP==1) {
catseis(sectionvz, fulldata_vz, recswitch, ntr_glob, MPI_COMM_WORLD);
catseis(sectionp, fulldata_p, recswitch, ntr_glob, MPI_COMM_WORLD);
if (MYID == 0) pup(fulldata_p, fulldata_vz, FP, ntr_glob,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,2);
/* overwrite sectionp with pup data */
inseis(fprec,ishot,sectionp,ntr_glob,ns,3,iter);
catseis(sectionvz, fulldata_vz, recswitch, ntr_glob, MPI_COMM_WORLD);
catseis(sectionp, fulldata_p, recswitch, ntr_glob, MPI_COMM_WORLD);
if (MYID == 0) fprintf(FP,"\n start wavefield separation...");
if (MYID == 0) pup(fulldata_p, fulldata_vy, FP, ntr_glob,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,2);
if (MYID == 0) fprintf(FP,"\n wavefield separation finished");
inseis(fprec,ishot,sectionp,ntr_glob,ns,3,iter);
}
/*-------------------------------------------------------------------------------*/
......
......@@ -331,30 +331,7 @@ void read_par_json(FILE *fp, char *fileinp){
if (get_int_from_objectlist("IDY",number_readobjects,&IDY,varname_list, value_list)){
IDY=1;
fprintf(fp,"Variable IDY is set to default value %d.\n",IDY);}
/*=================================
section wavefield separation
=================================*/
if (get_int_from_objectlist("WAVESEP",number_readobjects,&WAVESEP,varname_list, value_list)){
WAVESEP=0;
fprintf(fp,"Variable WAVESEP is set to default value %d.\n",WAVESEP);}
else {
if (WAVESEP>0) {
if (get_float_from_objectlist("VEL",number_readobjects,&VEL,varname_list, value_list)){
VEL=1500;
fprintf(fp,"Variable VEL is set to default value %d.\n",VEL);}
if (get_float_from_objectlist("DENS",number_readobjects,&DENS,varname_list, value_list)){
DENS=1000;
fprintf(fp,"Variable DENS is set to default value %d.\n",DENS);}
if (get_float_from_objectlist("ANGTAPI",number_readobjects,&ANGTAPI,varname_list, value_list)){
ANGTAPI=0;
fprintf(fp,"Variable ANGTAPI is set to default value %d.\n",ANGTAPI);}
if (get_float_from_objectlist("ANGTAPO",number_readobjects,&ANGTAPO,varname_list, value_list)){
ANGTAPO=70;
fprintf(fp,"Variable ANGTAPO is set to default value %d.\n",ANGTAPO);}
}
}
/*=================================
......@@ -413,6 +390,36 @@ void read_par_json(FILE *fp, char *fileinp){
}
}
/*=================================
section wavefield separation
=================================*/
if (SEISMO != 5 && SEISMO !=4 && WAVESEP == 1) {
WAVESEP=0;
fprintf(fp,"Variable SEISMO has to be set to 4 or 5 to use wavefield separation. WAVESEP is set now to %i.\n",WAVESEP);
}
if (get_int_from_objectlist("WAVESEP",number_readobjects,&WAVESEP,varname_list, value_list)){
WAVESEP=0;
fprintf(fp,"Variable WAVESEP is set to default value %i.\n",WAVESEP);}
else {
if (WAVESEP=1) {
if (get_float_from_objectlist("VEL",number_readobjects,&VEL,varname_list, value_list)){
VEL=1500;
fprintf(fp,"Variable VEL is set to default value %d.\n",VEL);}
if (get_float_from_objectlist("DENS",number_readobjects,&DENS,varname_list, value_list)){
DENS=1000;
fprintf(fp,"Variable DENS is set to default value %d.\n",DENS);}
if (get_float_from_objectlist("ANGTAPI",number_readobjects,&ANGTAPI,varname_list, value_list)){
ANGTAPI=0;
fprintf(fp,"Variable ANGTAPI is set to default value %d.\n",ANGTAPI);}
if (get_float_from_objectlist("ANGTAPO",number_readobjects,&ANGTAPO,varname_list, value_list)){
ANGTAPO=70;
fprintf(fp,"Variable ANGTAPO is set to default value %d.\n",ANGTAPO);}
}
}
/*=================================
section general model and log parameters
=================================*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment