/home/hgs/tap/mo
expfitbm
USAGE:
expfitbm @ <ins-file> [:<target>]
PURPOSE:
Fits a drift model to a tide residual with restored
drift according to a previous (or ad-hoc) model. Involves
non-linear fit of exponentials. The model equation is
d(t) = p1 + p2
t + p3 exp(-p4 (t
- t1))
+ p5 + p6
(t - t5) ] H(t - t5)
[ + p7 + p8 (t - t7)
] H(t - t7) ... + p15
* exp(-p16 (t - t15))
where H(t) is the Heaviside function.
The second line is optional, the terms are invoked if the year of
t5 etc. is > 2000
Solution demands RMS(y - d)
= min
Protocol output:
Where the output says MAPPED, the exponent parameter is
written in units of
sampling intervals. Internally, the parameter is arctan(-p)
+ π/2
The slope parameters shown are in units of nm/s2
per sampling interval
Internally they are (g(end)-g(start))/n p2
(i - 1)/n
p5(i - i(t5))/n
INPUT INS-FILE:
1. FILE OPEN BLOCK
Input: y = time series on
unit 21
Output: d = drift model on unit 31
y-d =
residual on unit 32
Exploration of
the uncertainty margins (source code: "XPLORE")
mc-file on unit IUMCV,
default: no output
Eigenvalue solution
for uncertainty, (source code: "EIGEN")
mc-file on unit IUMCE , default: no output
2. NAMELIST ¶m:
--------------------- ITERATION
iter
- integer - max. number of iterations DFPMIN (Numerical Recipes)
gtol
- real*8 - convergence control
p(NMP)
- real*8 - a priori solution (p(1)
<- DClevel by program!)
pvar_start(NMP) - real*8 - for
computing the p-uncertainties, the size of the
initial variation.
eps
- real*8 - iteration
for uncertainties: stop when
update is less than
eps*|p(j)|
qitermon
- logical - Monitor iteration of uncertainties
--------------------- INPUT
cal
- real*8 - Gravimeter's
calibration value, needed to output
tsf-edit commands for drift synthesis
input_measure
- char*16 - cal is the ratio nm/s² per
Input_Measure; is put as a
comment in the tsf-edit lines. Output of tsf-edit
lines for Volt-units is only done if the string
contains 'V' somewhere.
nend
- integer - Far limit of the input
time series. Max 1,000,000
--------------------- MODEL
idate_exp, ihms_exp
- integer - Y,M,D and H,M,S,F for the start
of the exponent
(t1 in the equation
above)
idate_second_step ...
(t2 in the
equation above)
idate_second_exp, ihms_second_exp
idate_<nth>_step,
ihms_<ntrh>_step
- where nth = third fourth fifth sixth
--------------------- VARIANCES AND XPLORE
del_p
- real*8 - For calculating the
derivatives of prediciton
with respect to a parameter, dp(i) = p(i)*(1+del_p)
Default = 0.01
sig_d
- real*8 - Standard deviation of
data-model fit.
Parameter is provided to expfit_jacobian.
Default -1.d0 (value<0) means that the
misfit**2 at every data point is used.
varf
- real*8 - Factor to remedy
non-positive definiteness
calculation of the parameter covariances.
The smallest eigenvalue, multiplied with varf
is added to the diagonal before inverting it.
iumcv
- integer - output mc-file unit for XPLORE.
Default: no output
To be declared in open-file block with option '<'
iumce
- integer - output mc-file unit for EIGEN. Default:
no output
To be declared in open-file block with option '<'
qrms_raw
- logical - .false.: Predictions with PEF using
eigenvector
is based on the PEF'd RMS.
.true.: ... based on the nonwhitened RMS.
Default: .false.
n_pef
- integer - -1: don't use a Prediction
Error-Filter to
whiten the noise of the residual
0: use a trivial PEF (a diagnostic test)
>0: PEF order. A file with a PEF-bank must be
opened on unit 51.
AFTERMATH:
~/TD/plot-varying-expfit
Presently without options. Harmonizes with
~/TD/expfitm.ins :BISECT
Example result:
http://barre.oso.chalmers.se/hgs/4me/ag-superc/expfitvar.png
PROBLEMS:
"Not a good start for j=
n information"
Example:
<Main-->>> Iterating p( 6), p, p0, pvar=
-5.5818D+02 -5.0236D+02 -1.0000D-01 fdf= 2.6267D+02
<Main-->T> Not a good start
for j= 6 EXP2 DELAY -5.5818E+02 -5.0236E+02 -1.35831838E+01
-1.35806259E+01
where
p(6) =
-1.070419D+03
pvar_start(6) = -0.1
The message is issued when the product of the values
underlined is greater than zero.
p(6) far away? pvar(6)
too small or wrong sign?
You simply have to try with other starting values. Keep a
little notebook.
Write down p(i), pvar(i), and the underlined values in
the output. Find out the systematics.
Ë.g. further lowering the starting value p(i) abs.below
1.0E2 didn't make any impact.
Then try with an abs.greater pvar_start(i) .
With this choice:
p(6)
= -1.070419D+02
pvar_start(6)
= -100.
the result became
<Main-->>> Congratulations for j= 6 EXP2
DELAY -5.5804E+02 -5.6362E+04 -1.35831838E+01
2.03760801E+01
EXAMPLE:
PREPARE:
cd ~/Ttide/SCG
setenv FNSUB div/g120707-OPNEND-1h-atm.ph04.ts
setenv FACSUB 1.0
tslist o/g090615-OPNEND-1h-atm.ra.ts -I
-Bc2012,07,07, -o div/g120707-OPNEND-1h-atm.ra.ts
tslist o/g090615-OPNEND-1h-atm.ph04.ts -I
-Bc2012,07,07, -o div/g120707-OPNEND-1h-atm.ph04.ts
tslist div/g120707-OPNEND-1h-atm.ra.ts -E
ra+ph-deci.tse,C -I -o div/ra+ph03-120707-1d.ts
# instead of INIT below,
cd ~/TD
source expfitm-3rd-exp.ins
INIT:
cd ~/TD
source expfit.setenv
setenv DT -1d
#which is:
setenv EXPFIT_INPUT div/ra+ph03-090615${DT}.ts
setenv EXPFIT_OUT -pef-ra+ph03-090615${DT}
setenv EXPFIT_TSE div/expfit-pef-090615${DT}.tse
~/TD/expfitbm.ins
2XPEF>
21 ^ ${EXPFIT_INPUT}
31 < div/rm${EXPFIT_OUT}.ts
32 < div/rr${EXPFIT_OUT}.ts
33 B ${EXPFIT_TSE}
42 < div/reig_${EXPFIT_OUT}.mc
51 < div/rt${DT}.pef
52 < div/rrf${EXPFIT_OUT}.ts
q
for expfitbm (bisection) (scldp was 24.) (just
a comment)
¶m
n_pef=3
gtol=1.d-6
cal=-774.421
p= 6.131548D+02 -1.355156D+02 -7.238925D+01
-1.034555D+03,
9.754596D+01 -1.070419D+03
-8.153017D+01 1.053482D+02,
3.030403D-02 4.216255D+00
1.842617D+00 2.577364D+01
pvar_start = -100d0, -10.d0, 100.d0, 20.d0, 100.d0,
-1.0, -2.0, -1.,
-1000.0, -10.0, -100.0, -10.0, -100.0, -10.0
eps=1.d-6
idate_exp=
2009,06,15, ihms_exp=
0,0,0,0
idate_second_exp= 2011,02,24, ihms_second_exp= 0,0,0,0
idate_second_step=2011,02,24, ihms_second_step=0,0,0,0
idate_third_step= 2012,02,06, ihms_third_step= 0,0,0,0
idate_fourth_step=2013,10,24, ihms_fourth_step=0,0,0,0
nend=99999
iter=1000, qitermon=.true.
input_measure='nm/s2'
del_p=0.01d0
varf=1.1d0, sig_d=-1.0d0, exp_sc=1.001d0
iumcv=41, iumce=42
&end
FURTHER READING:
http://barre.oso.chalmers.se/hgs/hgs.man/HOW.TO-model-drift.html
.bye