#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 Model-Sized Data To Disk * * AUTHOR: * Max Holicki * * Modified from: * Jan Thorbecke (janth@xs4all.nl) * The Netherlands **/ FILE *fileOpen(char *file, char *ext, int append); int writeModelData(modPar *mod,char* filename,float *data){ FILE *fp; segy hdr; size_t i; /* Allocate Trace Header */ memset(&hdr,0,TRCBYTES); hdr.tracl =1; hdr.fldr =1; hdr.tracf =1; hdr.scalco=-1000; hdr.scalel=-1000; hdr.trid =0; hdr.gx =(int)(1000*mod->origx); hdr.ns =(unsigned int)mod->nz; hdr.dt =0; hdr.trwf =(int)mod->nx; hdr.ntr =(int)mod->nx; hdr.f1 =mod->origz; hdr.d1 =mod->dz; hdr.f2 =mod->origx; hdr.d2 =mod->dx; /**********************/ /* Write Data To Disk */ /**********************/ fp=fopen(filename,"w"); fwrite(&hdr,1,TRCBYTES,fp); fwrite(data,sizeof(float),mod->nz,fp); for(i=1;i<mod->nx;i++){ /* Update Header */ hdr.tracl++; hdr.tracf++; hdr.gx+=(int)(1000.*mod->dx); /* Write to Disk */ fwrite(&hdr,1,TRCBYTES,fp); fwrite(&(data[i*mod->nz]),sizeof(float),mod->nz,fp); } fclose(fp); return(0); }