32 MODULE PROCEDURE data_dp
37 MODULE PROCEDURE setmeas_dp
40 REAL(DP),
DIMENSION(100,2) :: meas
41 REAL(DP),
PARAMETER :: stddev_global=0.5_dp
49 function likelihood_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
50 REAL(dp),
DIMENSION(:),
INTENT(IN) :: paraset
52 REAL(dp),
INTENT(IN),
optional :: stddev_in
53 REAL(dp),
INTENT(OUT),
OPTIONAL :: stddev_new
54 REAL(dp),
INTENT(OUT),
OPTIONAL :: likeli_new
59 REAL(dp),
DIMENSION(size(meas,1)) :: errors
60 real(dp),
dimension(:,:),
allocatable :: runoff
62 call eval(paraset, runoff=runoff)
63 errors(:) = runoff(:,1)-
data()
64 likelihood_dp = exp(-0.5_dp * sum( errors(:) * errors(:) / stddev_global**2 ))
71 REAL(dp),
DIMENSION(:),
INTENT(IN) :: paraset
73 REAL(dp),
INTENT(IN),
optional :: stddev_in
74 REAL(dp),
INTENT(OUT),
OPTIONAL :: stddev_new
75 REAL(dp),
INTENT(OUT),
OPTIONAL :: likeli_new
80 REAL(dp),
DIMENSION(size(meas,1)) :: errors
81 real(dp),
dimension(:,:),
allocatable :: runoff
83 call eval(paraset, runoff=runoff)
84 errors(:) = runoff(:,1)-
data()
92 REAL(dp),
DIMENSION(:),
INTENT(IN) :: paraset
94 REAL(dp),
INTENT(IN),
optional :: stddev_in
95 REAL(dp),
INTENT(OUT),
OPTIONAL :: stddev_new
96 REAL(dp),
INTENT(OUT),
OPTIONAL :: likeli_new
101 REAL(dp),
DIMENSION(size(meas,1)) :: errors
102 REAL(dp) :: stddev_err
103 real(dp),
dimension(:,:),
allocatable :: runoff
105 call eval(paraset, runoff=runoff)
106 errors(:) = runoff(:,1)-
data()
110 stddev_err =
stddev(errors)
111 if (
present( stddev_new ))
then
112 stddev_new = stddev_err
114 if (
present( likeli_new ))
then
115 likeli_new = exp(-0.5_dp * sum( errors(:) * errors(:) / stddev_err**2 ))
123 REAL(dp),
DIMENSION(:),
INTENT(IN) :: paraset
125 REAL(dp),
INTENT(IN),
optional :: stddev_in
126 REAL(dp),
INTENT(OUT),
OPTIONAL :: stddev_new
127 REAL(dp),
INTENT(OUT),
OPTIONAL :: likeli_new
132 REAL(dp),
DIMENSION(size(meas,1)) :: errors
133 REAL(dp) :: stddev_err
134 real(dp),
dimension(:,:),
allocatable :: runoff
136 call eval(paraset, runoff=runoff)
137 errors(:) = runoff(:,1)-
data()
141 stddev_err =
stddev(errors)
142 if (
present( stddev_new ))
then
143 stddev_new = stddev_err
145 if (
present( likeli_new ))
then
146 likeli_new = -0.5_dp * sum( errors(:) * errors(:) / stddev_err**2 )
153 subroutine model_dp(parameterset, opti_domain_indices, runoff, smOptiSim, neutronsOptiSim, etOptiSim, twsOptiSim, &
154 lake_level, lake_volume, lake_area, lake_spill, lake_outflow, BFI)
160 real(dp),
dimension(:),
intent(in) :: parameterset
161 integer(i4),
dimension(:),
optional,
intent(in) :: opti_domain_indices
162 real(dp),
dimension(:, :),
allocatable,
optional,
intent(out) :: runoff
163 type(
optidata_sim),
dimension(:),
optional,
intent(inout) :: smoptisim
164 type(
optidata_sim),
dimension(:),
optional,
intent(inout) :: neutronsoptisim
165 type(
optidata_sim),
dimension(:),
optional,
intent(inout) :: etoptisim
166 type(
optidata_sim),
dimension(:),
optional,
intent(inout) :: twsoptisim
167 real(dp),
dimension(:, :),
allocatable,
optional,
intent(out) :: lake_level
168 real(dp),
dimension(:, :),
allocatable,
optional,
intent(out) :: lake_volume
169 real(dp),
dimension(:, :),
allocatable,
optional,
intent(out) :: lake_area
170 real(dp),
dimension(:, :),
allocatable,
optional,
intent(out) :: lake_spill
171 real(dp),
dimension(:, :),
allocatable,
optional,
intent(out) :: lake_outflow
172 real(dp),
dimension(:),
allocatable,
optional,
intent(out) :: bfi
178 allocate(runoff(n, 1))
188 runoff(i,1) = parameterset(1) * meas(i,1) * meas(i,1) + parameterset(2) * meas(i,1) + parameterset(3)
197 REAL(dp),
DIMENSION(size(meas,1)) :: data_dp
203 subroutine setmeas_dp()
208 meas(i,1) = real(i,dp)
211 meas(:,2) = (/ 5.49537_dp, 10.7835_dp, 17.6394_dp, 26.8661_dp, 36.9247_dp, 50.9517_dp, 66.2058_dp, &
212 82.9703_dp, 101.26_dp, 123.076_dp, 145.457_dp, 171.078_dp, 198.349_dp, 227.23_dp, 257.922_dp, &
213 290.098_dp, 325.775_dp, 362.724_dp, 402.669_dp, 442.461_dp, 486.122_dp, 531.193_dp, &
214 577.931_dp, 627.091_dp, 678.096_dp, 731.364_dp, 786.039_dp, 843.531_dp, 903.126_dp, &
215 963.037_dp, 1025.85_dp, 1091.85_dp, 1158.47_dp, 1226.65_dp, 1298.25_dp, 1370.87_dp, &
216 1444.96_dp, 1522.6_dp, 1602.6_dp, 1684.38_dp, 1765.15_dp, 1850.74_dp, 1937.85_dp, 2027.41_dp, &
217 2118.44_dp, 2210.62_dp, 2306.9_dp, 2403.27_dp, 2501.83_dp, 2602.96_dp, 2705.29_dp, &
218 2811.44_dp, 2917.82_dp, 3027.09_dp, 3137.64_dp, 3250.86_dp, 3366.67_dp, 3482.56_dp, &
219 3602.37_dp, 3722.55_dp, 3845.8_dp, 3970.15_dp, 4098.15_dp, 4227.27_dp, 4357.77_dp, &
220 4491.49_dp, 4626.23_dp, 4762.95_dp, 4901.15_dp, 5042.95_dp, 5184.86_dp, 5330.4_dp, &
221 5478.11_dp, 5626.97_dp, 5776.94_dp, 5931.15_dp, 6085.9_dp, 6242.7_dp, 6402.17_dp, 6563.46_dp, &
222 6726.37_dp, 6890.34_dp, 7058.4_dp, 7227.17_dp, 7397.09_dp, 7570.77_dp, 7745.95_dp, &
223 7923.72_dp, 8102.21_dp, 8282.98_dp, 8465.42_dp, 8651.37_dp, 8838.43_dp, 9027.57_dp, &
224 9219.21_dp, 9411.24_dp, 9606.31_dp, 9802.88_dp, 10002.3_dp, 10202.6_dp /)
225 end subroutine setmeas_dp
Standard deviation of a vector.
Interface for evaluation routine.
Define number representations.
integer, parameter i4
4 Byte Integer Kind
integer, parameter dp
Double Precision Real Kind.
Added for testing purposes of test_mo_mcmc.
real(dp) function, public likelihood_stddev_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
A Likelihood function: "faked" likelihood (sigma is computed by obs vs model)
real(dp) function, public loglikelihood_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
A Log-Likelihood function: "real" likelihood (sigma is an error model or given)
subroutine, public model_dp(parameterset, opti_domain_indices, runoff, smoptisim, neutronsoptisim, etoptisim, twsoptisim, lake_level, lake_volume, lake_area, lake_spill, lake_outflow, bfi)
A Model: p1*x^2 + p2*x + p3.
real(dp) function, public loglikelihood_stddev_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
A Log-Likelihood_stddev function: "faked" likelihood (sigma is computed by obs vs model)
real(dp) function, public likelihood_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
A Likelihood function: "real" likelihood (sigma is an error model or given)
Type definitions for optimization routines.
Utility functions, such as interface definitions, for optimization routines.
type for simulated optional data