37 data_fnc, nb_data_fnc, id_fnc, time, dist,vel,timeit)
45 integer*4 :: nb_fnc,id_fnc,i,nb_data_fnc, idx
46 integer*4 :: ind_start, ind_end, timeit
48 integer*4,
dimension(nb_fnc) :: type_fnc
49 integer*4,
dimension(nb_fnc +1) :: ind_fnc
51 real*8 :: pi,t_t0,t0,t1,v0,v1,omega, fp, fac
52 real*8 :: tau,scaling,hdur
53 real*8 :: amp, ps0, tplus, alpha,time,beta2,dist,vel
55 real*8,
dimension(nb_data_fnc) :: data_fnc
56 real*8,
dimension(1) :: valmax
61 pi = 4.0d0 * datan(1.0d0)
73 select case (type_fnc(id_fnc))
79 t_t0 = time - data_fnc(ind_fnc(id_fnc) +1)
81 * dexp(-1.0d0*data_fnc(ind_fnc(id_fnc))*t_t0*t_t0)
84 pi = 4.0d0 * datan(1.0d0)
85 t_t0 = time - data_fnc(ind_fnc(id_fnc) +1)
87 * dexp(-0.5d0*data_fnc(ind_fnc(id_fnc)) &
88 * data_fnc(ind_fnc(id_fnc))*t_t0*t_t0)
91 ind_start = ind_fnc(id_fnc); ind_end = ind_fnc(id_fnc+1)-3;
109 if (time >= data_fnc(ind_end-1))
then
110 v1 = data_fnc(ind_end + 2);
117 t0 = data_fnc(ind_start-1 + 2*idx-1); t1 = data_fnc
118 v0 = data_fnc(ind_start-1 + 2*idx); v1 = data_fnc
150 t_t0 = time - data_fnc(ind_fnc(id_fnc) +1)
151 beta2 = data_fnc(ind_fnc(id_fnc))
153 * (-3.0d0 + 2.0d0*beta2*t_t0*t_t0) &
154 * dexp(-beta2*t_t0*t_t0)
157 t_t0 = time - data_fnc(ind_fnc(id_fnc) +1)
158 fp = data_fnc(ind_fnc(id_fnc));
159 alpha = 2.d0*(pi*fp)**2
160 fac = 2*pi*fp*dsqrt(dexp(1.d0))
168 pi = 4.0d0 * datan(1.0d0)
169 t_t0 = time - data_fnc(ind_fnc(id_fnc) +1)
171 * dexp(-0.5d0*4.d0*pi*pi*data_fnc(ind_fnc(id_fnc)) &
172 * data_fnc(ind_fnc(id_fnc))*t_t0*t_t0)
176 t_t0 = time - data_fnc(ind_fnc(id_fnc) +1)
178 -24*data_fnc(ind_fnc(id_fnc))**2 * (t_t0**2)
179 +8.0d0*data_fnc(ind_fnc(id_fnc))**3 * (t_t0*
180 * dexp(-1.0d0*data_fnc(ind_fnc(id_fnc))*t_t0*t_t0)
185 omega = data_fnc(ind_fnc(id_fnc))*2*pi
190 omega = data_fnc(ind_fnc(id_fnc))*2*pi
213 t_t0 = time - data_fnc(ind_fnc(id_fnc) +2)
215 * (1/(1+exp(-data_fnc(ind_fnc(id_fnc) +1)*(t_t0
219 tau = data_fnc(ind_fnc(id_fnc)); scaling = data_fnc(ind_fnc(id_fnc
220 t0 = 2.0 * tau; hdur = tau/2.0; t_t0 = time - t0
225 tau = data_fnc(ind_fnc(id_fnc));
227 amp = data_fnc(ind_fnc(id_fnc) +1)
229 if (t_t0 .lt. 0.0d0)
then
231 elseif (t_t0 .eq. 0.0d0)
then
239 ps0 = data_fnc(ind_fnc(id_fnc))
240 tplus = data_fnc(ind_fnc(id_fnc) +1); alpha = data_fnc(ind_fnc
241 t_t0 = time - data_fnc(ind_fnc(id_fnc) +3)
242 if (t_t0 .lt. 0.0d0)
then
261 do i = ind_fnc(id_fnc),ind_fnc(id_fnc+1) -3,2
262 t0 = data_fnc(i) ; t1 = data_fnc(i +2)
263 v0 = data_fnc(i +1); v1 = data_fnc(i +3)
266 if (((time -dist/vel) .ge. t0) .and. ((time -dist/vel) .le.
then
294 do i = ind_fnc(id_fnc),ind_fnc(id_fnc+1) -3,2
296 t0 = data_fnc(i); t1 = data_fnc(i +2)
297 v0 = data_fnc(i +1); v1 = data_fnc(i +3)
299 if (abs(time).le.data_fnc(ind_fnc(id_fnc)))
then
301 elseif ((abs(time).ge.t0).and.(abs(time).le.t1))
then
303 elseif (abs(time).ge.data_fnc(ind_fnc(id_fnc+1)-2))
then
310 do i = ind_fnc(id_fnc),ind_fnc(id_fnc+1) -3,2
311 t0 = data_fnc(i); t1 = data_fnc(i +2)
312 v0 = data_fnc(i +1); v1 = data_fnc(i +3)
314 if (abs(time).le.data_fnc(ind_fnc(id_fnc)))
then
316 elseif ((abs(time).ge.t0).and.(abs(time).le.t1))
then
318 elseif (abs(time).ge.data_fnc(ind_fnc(id_fnc+1)-2))
then
325 tau = data_fnc(ind_fnc(id_fnc)); amp = data_fnc(ind_fnc(id_fnc
328 *(t_t0 - tau)/amp)**2.0d0)&
329 * cos(((2.0d0 * 2.0d0*dasin(1.0d0))*1.5d0)&
330 *(t_t0 - tau) + 2.0d0*dasin(1.0d0)/2.0d0))
334 amp = data_fnc(ind_fnc(id_fnc))