version 1.9, 2012/09/12 18:26:58
|
version 1.10, 2012/09/18 17:33:08
|
|
|
int *anynul=0; | int *anynul=0; |
| |
int instart[2], inend[2]; | int instart[2], inend[2]; |
int tslength[2], tsstart[2], tsend[2]; |
int tslength[2], tsstart[2], tsend[2], tstotal[2]; |
int fft1length[2], fft1start[2], fft1end[2]; |
int fft1length[2], fft1start[2], fft1end[2], fft1total[2]; |
int powlength[2], powstart[2], powend[2]; |
int powlength[2], powstart[2], powend[2], powtotal[2]; |
int status=DRMS_SUCCESS; | int status=DRMS_SUCCESS; |
int newstat=0; | int newstat=0; |
| |
|
|
| |
if (tsout || fftout) | if (tsout || fftout) |
{ | { |
tslength[0]=2*n_sampled_out; |
tslength[0]=tstotal[0]=2*n_sampled_out; |
tslength[1]=1; | tslength[1]=1; |
tsstart[0]=0; | tsstart[0]=0; |
tsend[0]=2*n_sampled_out-1; | tsend[0]=2*n_sampled_out-1; |
} | } |
if (fft1out) | if (fft1out) |
{ | { |
fft1length[0]=2*npow; |
fft1length[0]=fft1total[0]=2*npow; |
fft1length[1]=1; | fft1length[1]=1; |
fft1start[0]=0; | fft1start[0]=0; |
fft1end[0]=2*npow-1; | fft1end[0]=2*npow-1; |
} | } |
if (powout || arpowout || mavgout) | if (powout || arpowout || mavgout) |
{ | { |
powlength[0]=npow; |
powlength[0]=powtotal[0]=npow; |
powlength[1]=1; | powlength[1]=1; |
powstart[0]=0; | powstart[0]=0; |
powend[0]=npow-1; | powend[0]=npow-1; |
|
|
} | } |
} | } |
| |
|
|
int irec; | int irec; |
for (irec=0;irec<inrecset->n;irec++) | for (irec=0;irec<inrecset->n;irec++) |
{ | { |
|
|
} | } |
lmode=lmin; | lmode=lmin; |
| |
|
if (verbflag > 1) |
|
{ |
|
printf("starting l=%d\n", lmode); |
|
} |
|
|
tstart=drms_getkey_time(inrec, "T_START", NULL); | tstart=drms_getkey_time(inrec, "T_START", NULL); |
tstop =drms_getkey_time(inrec, "T_STOP", NULL); | tstop =drms_getkey_time(inrec, "T_STOP", NULL); |
cadence=drms_getkey_float(inrec, "T_STEP", NULL); | cadence=drms_getkey_float(inrec, "T_STEP", NULL); |
|
|
; | ; |
} | } |
*/ | */ |
|
switch(is) |
|
{ |
|
case TSOUT: |
|
case FFTOUT: |
|
tstotal[1]=lmode+1; |
|
break; |
|
case FFT1OUT: |
|
fft1total[1]=2*lmode+1; |
|
break; |
|
case POWOUT: |
|
case ARPOWOUT: |
|
powtotal[1]=2*lmode+1; |
|
break; |
|
case MAVGOUT: |
|
default: |
|
; |
|
} |
|
|
} | } |
| |
/***** Main Loop over m: Detrend, gapfill and/or compute FFT/power spectrum *******/ | /***** Main Loop over m: Detrend, gapfill and/or compute FFT/power spectrum *******/ |
for (m=0; m<=lmode; m++) | for (m=0; m<=lmode; m++) |
{ | { |
| |
if (verbflag > 1) |
if (verbflag > 2) |
{ | { |
fprintf(stdout, "starting m=%d\n", m); |
printf("starting m=%d\n", m); |
} | } |
| |
instart[1]=m; | instart[1]=m; |
|
|
outarr = drms_array_create(usetype, 2, tslength, tmpptr, &status); | outarr = drms_array_create(usetype, 2, tslength, tmpptr, &status); |
outarr->bzero=segoutarr[TSOUT]->bzero; | outarr->bzero=segoutarr[TSOUT]->bzero; |
outarr->bscale=segoutarr[TSOUT]->bscale; | outarr->bscale=segoutarr[TSOUT]->bscale; |
status=drms_segment_writeslice(segoutarr[TSOUT], outarr, tsstart, tsend, 0); |
status=drms_segment_writeslice_ext(segoutarr[TSOUT], outarr, tsstart, tsend, tstotal, 0); |
free(outarr); | free(outarr); |
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
|
|
outarr = drms_array_create(usetype, 2, tslength, tmpptr, &status); | outarr = drms_array_create(usetype, 2, tslength, tmpptr, &status); |
outarr->bzero=segoutarr[FFTOUT]->bzero; | outarr->bzero=segoutarr[FFTOUT]->bzero; |
outarr->bscale=segoutarr[FFTOUT]->bscale; | outarr->bscale=segoutarr[FFTOUT]->bscale; |
status=drms_segment_writeslice(segoutarr[FFTOUT], outarr, tsstart, tsend, 0); |
status=drms_segment_writeslice_ext(segoutarr[FFTOUT], outarr, tsstart, tsend, tstotal, 0); |
free(outarr); | free(outarr); |
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
|
|
outarr = drms_array_create(usetype, 2, fft1length, data+2*imin, &status); | outarr = drms_array_create(usetype, 2, fft1length, data+2*imin, &status); |
outarr->bzero=segoutarr[FFT1OUT]->bzero; | outarr->bzero=segoutarr[FFT1OUT]->bzero; |
outarr->bscale=segoutarr[FFT1OUT]->bscale; | outarr->bscale=segoutarr[FFT1OUT]->bscale; |
status=drms_segment_writeslice(segoutarr[FFT1OUT], outarr, fft1start, fft1end, 0); |
status=drms_segment_writeslice_ext(segoutarr[FFT1OUT], outarr, fft1start, fft1end, fft1total, 0); |
free(outarr); | free(outarr); |
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
|
|
outarr = drms_array_create(usetype, 2, fft1length, datahold, &status); | outarr = drms_array_create(usetype, 2, fft1length, datahold, &status); |
outarr->bzero=segoutarr[FFT1OUT]->bzero; | outarr->bzero=segoutarr[FFT1OUT]->bzero; |
outarr->bscale=segoutarr[FFT1OUT]->bscale; | outarr->bscale=segoutarr[FFT1OUT]->bscale; |
status=drms_segment_writeslice(segoutarr[FFT1OUT], outarr, fft1start, fft1end, 0); |
status=drms_segment_writeslice_ext(segoutarr[FFT1OUT], outarr, fft1start, fft1end, fft1total, 0); |
free(outarr); | free(outarr); |
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
|
|
outarr = drms_array_create(usetype, 2, powlength, pow+imin, &status); | outarr = drms_array_create(usetype, 2, powlength, pow+imin, &status); |
outarr->bzero=segoutarr[POWOUT]->bzero; | outarr->bzero=segoutarr[POWOUT]->bzero; |
outarr->bscale=segoutarr[POWOUT]->bscale; | outarr->bscale=segoutarr[POWOUT]->bscale; |
status=drms_segment_writeslice(segoutarr[POWOUT], outarr, powstart, powend, 0); |
status=drms_segment_writeslice_ext(segoutarr[POWOUT], outarr, powstart, powend, powtotal, 0); |
free(outarr); | free(outarr); |
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
|
|
outarr = drms_array_create(usetype, 2, powlength, datahold, &status); | outarr = drms_array_create(usetype, 2, powlength, datahold, &status); |
outarr->bzero=segoutarr[POWOUT]->bzero; | outarr->bzero=segoutarr[POWOUT]->bzero; |
outarr->bscale=segoutarr[POWOUT]->bscale; | outarr->bscale=segoutarr[POWOUT]->bscale; |
status=drms_segment_writeslice(segoutarr[POWOUT], outarr, powstart, powend, 0); |
status=drms_segment_writeslice_ext(segoutarr[POWOUT], outarr, powstart, powend, powtotal, 0); |
free(outarr); | free(outarr); |
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
|
|
outarr = drms_array_create(usetype, 2, powlength, pow+imin, &status); | outarr = drms_array_create(usetype, 2, powlength, pow+imin, &status); |
outarr->bzero=segoutarr[ARPOWOUT]->bzero; | outarr->bzero=segoutarr[ARPOWOUT]->bzero; |
outarr->bscale=segoutarr[ARPOWOUT]->bscale; | outarr->bscale=segoutarr[ARPOWOUT]->bscale; |
status=drms_segment_writeslice(segoutarr[ARPOWOUT], outarr, powstart, powend, 0); |
status=drms_segment_writeslice_ext(segoutarr[ARPOWOUT], outarr, powstart, powend, powtotal, 0); |
free(outarr); | free(outarr); |
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
|
|
outarr = drms_array_create(usetype, 2, powlength, datahold, &status); | outarr = drms_array_create(usetype, 2, powlength, datahold, &status); |
outarr->bzero=segoutarr[ARPOWOUT]->bzero; | outarr->bzero=segoutarr[ARPOWOUT]->bzero; |
outarr->bscale=segoutarr[ARPOWOUT]->bscale; | outarr->bscale=segoutarr[ARPOWOUT]->bscale; |
status=drms_segment_writeslice(segoutarr[ARPOWOUT], outarr, powstart, powend, 0); |
status=drms_segment_writeslice_ext(segoutarr[ARPOWOUT], outarr, powstart, powend, powtotal, 0); |
free(outarr); | free(outarr); |
if (status != DRMS_SUCCESS) | if (status != DRMS_SUCCESS) |
{ | { |
|
|
ct=getcputime(&ut, &st); | ct=getcputime(&ut, &st); |
if (verbflag) | if (verbflag) |
{ | { |
fprintf(stdout, "total time spent: %.2f ms wall time, %.2f ms cpu time\n", |
printf("total time spent: %.2f ms wall time, %.2f ms cpu time\n", |
wt-wt0, ct-ct0); | wt-wt0, ct-ct0); |
} | } |
| |