-
Jan Willem Thorbecke authoredJan Willem Thorbecke authored
writeMigImage.c 1.51 KiB
#define _FILE_OFFSET_BITS 64
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <math.h>
#include <string.h>
#include "par.h"
#include "segy.h"
#include "fdacrtmc.h"
/**
* Writes Migration Images To File
*
* AUTHOR:
* Max Holicki
*
* Modified from:
* Jan Thorbecke (janth@xs4all.nl)
* The Netherlands
**/
FILE *fileOpen(char *file, char *ext, int append);
int writeMigImage(modPar *mod, migPar *mig){
FILE *fp;
segy hdr;
size_t i;
/* Multiply Image by 2 (for Hilbert Imaging) */
if(mig->mode==5) for(i=0;i<mig->sizem;i++)mig->mig[i]*=2.0*mig->dt/((float)(mig->nz*mig->nz));
/* Allocate Trace Header */
memset(&hdr,0,TRCBYTES);
hdr.tracl =1;
hdr.fldr =1;
hdr.tracf =1;
hdr.scalco=-1000;
hdr.scalel=-1000;
hdr.trid =1;
hdr.gx =(int)(1000*mig->xmig1);
hdr.ns =(unsigned int)mig->nz;
hdr.dt =(unsigned int)1000000.*mig->dt;
hdr.trwf =(int)mig->nx;
hdr.ntr =(int)mig->nx;
hdr.f1 =mig->zmig1;
hdr.d1 =mig->dz;
hdr.f2 =mig->xmig1;
hdr.d2 =mig->dx;
/**********************/
/* Write Data To Disk */
/**********************/
fp=fileOpen(mig->file_mig,"_mig",0);
fwrite(&hdr,1,TRCBYTES,fp);
fwrite(mig->mig,sizeof(float),mig->nz,fp);
for(i=1;i<mig->nx;i++){
/* Update Header */
hdr.tracl++;
hdr.tracf++;
hdr.gx+=(int)(1000.*mig->dx);
/* Write to Disk */
fwrite(&hdr,1,TRCBYTES,fp);
fwrite(&(mig->mig[i*mig->nz]),sizeof(float),mig->nz,fp);
}
fclose(fp);
return(0);
}