1 subroutine da_effht_adj(ho,hv,sigo,sigv,mu,zcld,hdn,hup,hdninf,hupinf, &
2 ADJ_ho,ADJ_hv,ADJ_sigo,ADJ_sigv,ADJ_mu, &
3 ADJ_zcld,ADJ_hdn,ADJ_hup,ADJ_hdninf,ADJ_hupinf )
7 !--------------------------------------------------------------------
9 ! Output : ADJ_ho, ADJ_hv, ADJ_sigo, ADJ_sigv, ADJ_zcld, ADJ_mu
10 ! Input : ADJ_hdn, ADJ_hup, ADJ_hdninf, ADJ_hupinf
11 !--------------------------------------------------------------------
13 real, intent(in) :: ho,hv,sigo,sigv,mu,zcld
14 real, intent(inout) :: ADJ_ho,ADJ_hv,ADJ_sigo,ADJ_sigv,ADJ_zcld, ADJ_mu
15 real, intent(inout) :: hdn,hup,hdninf,hupinf
16 real, intent(in) :: ADJ_hdn,ADJ_hup,ADJ_hdninf,ADJ_hupinf
18 real :: gint,zgint,hint,zhint
19 real :: ginf,zginf,hinf,zhinf
20 real :: ADJ_gint,ADJ_zgint,ADJ_hint,ADJ_zhint
21 real :: ADJ_ginf,ADJ_zginf,ADJ_hinf,ADJ_zhinf
22 real :: ADJ_mu2,ADJ_halfmu,ADJ_sixthmu2,ADJ_etnthmu2
23 real :: ADJ_quartmu,ADJ_halfmu2
25 real :: hoinv,hvinv,chio,chiv,ezho,ezhv,alpha,alph2,alph3
26 real :: chio_save,chiv_save,dplus_save,dmin_save
27 real :: beta,beta2,beta3,mu2,mualph,cplus,cmin,dplus,dmin
28 real :: chiov,chivv,chioo,chioov,chiovv,chiooo,chivvv
29 real :: h11,h21,h12,newh11
30 real :: sigoo,sigov,sigvv,sigooo,sigoov,sigovv,sigvvv
31 real :: ezhoo,ezhov,ezhvv,ezhooo,ezhoov,ezhovv,ezhvvv
32 real :: s,sprim,t,tprim,u,uprim,term1,term2,term3
33 real :: halfmu,halfmu2,sixthmu2,etnthmu2,quartmu
35 real :: ADJ_hoinv,ADJ_hvinv,ADJ_chio,ADJ_chiv,ADJ_ezho
36 real :: ADJ_ezhv,ADJ_alpha,ADJ_alph2,ADJ_alph3
37 real :: ADJ_beta,ADJ_beta2,ADJ_beta3,ADJ_mualph
38 real :: ADJ_cplus,ADJ_cmin,ADJ_dplus,ADJ_dmin
39 real :: ADJ_chiov,ADJ_chivv,ADJ_chioo,ADJ_chioov
40 real :: ADJ_chiovv,ADJ_chiooo,ADJ_chivvv
41 real :: ADJ_h11,ADJ_h21,ADJ_h12,ADJ_newh11
42 real :: ADJ_sigoo,ADJ_sigov,ADJ_sigvv,ADJ_sigooo
43 real :: ADJ_sigoov,ADJ_sigovv,ADJ_sigvvv
44 real :: ADJ_ezhoo,ADJ_ezhov,ADJ_ezhvv,ADJ_ezhooo
45 real :: ADJ_ezhoov,ADJ_ezhovv,ADJ_ezhvvv
46 real :: ADJ_s,ADJ_sprim,ADJ_t,ADJ_tprim
47 real :: ADJ_u,ADJ_uprim,ADJ_term1,ADJ_term2,ADJ_term3
49 if (trace_use) call da_trace_entry("da_effht_adj")
202 ezho = sigo*exp(-chio)
203 ezhv = sigv*exp(-chiv)
214 etnthmu2 = mu2/18.0d0
219 cplus = 1.0d0 + mualph
220 cmin = 1.0d0 - mualph
221 dplus = halfmu2*alph2
225 dplus = cplus + dplus
231 h21 = 1.0d0/(h11 + hvinv)
232 h12 = 1.0d0/(h11 + hoinv)
235 chiov = 1.0d0 + chio + chiv
236 chioo = 1.0d0 + chio + chio
237 chivv = 1.0d0 + chiv + chiv
238 chioov = chioo + chiv
239 chiovv = chio + chivv
240 chiooo = chioo + chio
241 chivvv = chivv + chiv
260 s = sigo*ho + sigv*hv
262 sprim = ezho*ho*chio + ezhv*hv*chiv
263 t = sigoo*ho + 4.0d0*sigov*newh11 + sigvv*hv
265 tprim = ezhoo*ho*chioo + 4.0d0*ezhov*newh11*chiov + ezhvv*hv*chivv
266 u = sigooo*ho + 9.0d0*(sigovv*h21+sigoov*h12) + sigvvv*hv
268 uprim = ezhvvv*hv*chivvv + &
269 9.0d0*(ezhovv*h21*chiovv + ezhoov*h12*chioov) + &
273 term2 = quartmu*(t - tprim)
274 term3 = etnthmu2*( u - uprim)
275 zgint = dmin*term1 + cmin*term2 + term3
276 zhint = -dplus*term1 + cplus*term2 - term3
279 zginf = dmin*s + cmin*term2 + term3
280 zhinf = -dplus*s + cplus*term2 - term3
283 term2 = halfmu*( alph2 - beta2)
284 term3 = sixthmu2*( alph3 - beta3)
285 gint = dmin*term1 + cmin*term2 + term3
286 hint = -dplus*term1 + cplus*term2 - term3
288 term3 = sixthmu2*alph3
289 ginf = dmin*alpha + cmin*term2 + term3
290 hinf = -dplus*alpha + cplus*term2 - term3
298 ADJ_zhinf = ADJ_hupinf/hinf + ADJ_zhinf
299 ADJ_hinf = - hupinf*ADJ_hupinf/hinf + ADJ_hinf
301 ADJ_zginf = ADJ_hdninf/ginf + ADJ_zginf
302 ADJ_ginf = - hdninf*ADJ_hdninf/ginf + ADJ_ginf
304 ADJ_zhint = ADJ_hup/hint + ADJ_zhint
305 ADJ_hint = - hup*ADJ_hup/hint + ADJ_hint
307 ADJ_zgint = ADJ_hdn/gint + ADJ_zgint
308 ADJ_gint = - hdn * ADJ_hdn/gint + ADJ_gint
310 ADJ_dplus = - ADJ_hinf*alpha + ADJ_dplus
311 ADJ_alpha = - dplus*ADJ_hinf + ADJ_alpha
312 ADJ_cplus = ADJ_hinf*term2 + ADJ_cplus
313 ADJ_term2 = cplus*ADJ_hinf
314 ADJ_term3 = - ADJ_hinf
316 ADJ_dmin = ADJ_ginf*alpha + ADJ_dmin
317 ADJ_alpha = dmin*ADJ_ginf + ADJ_alpha
318 ADJ_cmin = ADJ_ginf*term2 + ADJ_cmin
319 ADJ_term2 = cmin*ADJ_ginf + ADJ_term2
320 ADJ_term3 = ADJ_ginf + ADJ_term3
322 ADJ_sixthmu2 = ADJ_term3*alph3 + ADJ_sixthmu2
323 ADJ_alph3 = sixthmu2*ADJ_term3 + ADJ_alph3
325 ADJ_halfmu = ADJ_term2*alph2 + ADJ_halfmu
326 ADJ_alph2 = halfmu*ADJ_term2 + ADJ_alph2
330 term2 = halfmu*(alph2 - beta2)
331 term3 = sixthmu2*(alph3 - beta3)
333 ADJ_dplus = - ADJ_hint*term1 + ADJ_dplus
334 ADJ_term1 = - dplus*ADJ_hint
335 ADJ_cplus = ADJ_hint*term2 + ADJ_cplus
336 ADJ_term2 = cplus*ADJ_hint
337 ADJ_term3 = - ADJ_hint
339 ADJ_dmin = ADJ_gint*term1 + ADJ_dmin
340 ADJ_term1 = dmin*ADJ_gint + ADJ_term1
341 ADJ_cmin = ADJ_gint*term2 + ADJ_cmin
342 ADJ_term2 = cmin*ADJ_gint + ADJ_term2
343 ADJ_term3 = ADJ_gint + ADJ_term3
345 ADJ_sixthmu2 = ADJ_term3*(alph3 - beta3) + ADJ_sixthmu2
346 ADJ_alph3 = sixthmu2*ADJ_term3 + ADJ_alph3
347 ADJ_beta3 = - sixthmu2*ADJ_term3 + ADJ_beta3
349 ADJ_halfmu = ADJ_term2*(alph2 - beta2) + ADJ_halfmu
350 ADJ_alph2 = halfmu*ADJ_term2 + ADJ_alph2
351 ADJ_beta2 = - halfmu*ADJ_term2 + ADJ_beta2
353 ADJ_alpha = ADJ_term1 + ADJ_alpha
354 ADJ_beta = - ADJ_term1 + ADJ_beta
361 ADJ_dplus = - ADJ_zhinf*s + ADJ_dplus
362 ADJ_s = - dplus*ADJ_zhinf + ADJ_s
363 ADJ_cplus = ADJ_zhinf*term2 + ADJ_cplus
364 ADJ_term2 = cplus*ADJ_zhinf
365 ADJ_term3 = - ADJ_zhinf
367 ADJ_dmin = ADJ_zginf*s + ADJ_dmin
368 ADJ_s = dmin*ADJ_zginf + ADJ_s
369 ADJ_cmin = ADJ_zginf*term2 + ADJ_cmin
370 ADJ_term2 = cmin*ADJ_zginf + ADJ_term2
371 ADJ_term3 = ADJ_zginf + ADJ_term3
373 ADJ_etnthmu2 = ADJ_term3*u + ADJ_etnthmu2
374 ADJ_u = etnthmu2*ADJ_term3 + ADJ_u
375 ADJ_quartmu = ADJ_term2*t + ADJ_quartmu
376 ADJ_t = quartmu*ADJ_term2 + ADJ_t
381 term2 = quartmu*(t - tprim)
382 term3 = etnthmu2*(u - uprim)
384 ADJ_dplus = - ADJ_zhint*term1 + ADJ_dplus
385 ADJ_term1 = - dplus*ADJ_zhint
386 ADJ_cplus = ADJ_zhint*term2 + ADJ_cplus
387 ADJ_term2 = cplus*ADJ_zhint
388 ADJ_term3 = - ADJ_zhint
390 ADJ_dmin = ADJ_zgint*term1 + ADJ_dmin
391 ADJ_term1 = dmin*ADJ_zgint + ADJ_term1
392 ADJ_cmin = ADJ_zgint*term2 + ADJ_cmin
393 ADJ_term2 = cmin*ADJ_zgint + ADJ_term2
394 ADJ_term3 = ADJ_zgint + ADJ_term3
396 ADJ_etnthmu2 = ADJ_term3*(u - uprim) + ADJ_etnthmu2
397 ADJ_u = etnthmu2*ADJ_term3 + ADJ_u
398 ADJ_uprim = - etnthmu2*ADJ_term3 + ADJ_uprim
400 ADJ_quartmu = ADJ_term2*(t - tprim) + ADJ_quartmu
401 ADJ_t = quartmu*ADJ_term2 + ADJ_t
402 ADJ_tprim = - quartmu*ADJ_term2 + ADJ_tprim
404 ADJ_s = ADJ_term1 + ADJ_s
405 ADJ_sprim = - ADJ_term1 + ADJ_sprim
408 ADJ_ezhvvv = ADJ_uprim*hv*chivvv + ADJ_ezhvvv
409 ADJ_hv = ezhvvv*ADJ_uprim*chivvv + ADJ_hv
410 ADJ_chivvv = ezhvvv*hv*ADJ_uprim + ADJ_chivvv
411 ADJ_ezhovv = 9.0d0*ADJ_uprim*h21*chiovv + ADJ_ezhovv
412 ADJ_h21 = 9.0d0*ezhovv*ADJ_uprim*chiovv + ADJ_h21
413 ADJ_chiovv = 9.0d0*ezhovv*h21*ADJ_uprim + ADJ_chiovv
414 ADJ_ezhoov = 9.0d0*ADJ_uprim*h12*chioov + ADJ_ezhoov
415 ADJ_h12 = 9.0d0*ezhoov*ADJ_uprim*chioov + ADJ_h12
416 ADJ_chioov = 9.0d0*ezhoov*h12*ADJ_uprim + ADJ_chioov
417 ADJ_ezhooo = ADJ_uprim*ho*chiooo + ADJ_ezhooo
418 ADJ_ho = ezhooo*ADJ_uprim*chiooo + ADJ_ho
419 ADJ_chiooo = ezhooo*ho*ADJ_uprim + ADJ_chiooo
421 ADJ_sigooo = ADJ_u*ho + ADJ_sigooo
422 ADJ_ho = sigooo*ADJ_u + ADJ_ho
423 ADJ_sigovv = 9.0d0*ADJ_u*h21 + ADJ_sigovv
424 ADJ_h21 = 9.0d0*sigovv*ADJ_u + ADJ_h21
425 ADJ_sigoov = 9.0d0*ADJ_u*h12 + ADJ_sigoov
426 ADJ_h12 = 9.0d0*sigoov*ADJ_u + ADJ_h12
427 ADJ_sigvvv = ADJ_u*hv + ADJ_sigvvv
428 ADJ_hv = sigvvv*ADJ_u + ADJ_hv
430 ADJ_ezhoo = ADJ_tprim*ho*chioo + ADJ_ezhoo
431 ADJ_ho = ezhoo*ADJ_tprim*chioo + ADJ_ho
432 ADJ_chioo = ezhoo*ho*ADJ_tprim + ADJ_chioo
433 ADJ_ezhov = 4.0d0*ADJ_tprim*newh11*chiov + ADJ_ezhov
434 ADJ_newh11 = 4.0d0*ezhov*ADJ_tprim*chiov + ADJ_newh11
435 ADJ_chiov = 4.0d0*ezhov*newh11*ADJ_tprim + ADJ_chiov
436 ADJ_ezhvv = ADJ_tprim*hv*chivv + ADJ_ezhvv
437 ADJ_hv = ezhvv*ADJ_tprim*chivv + ADJ_hv
438 ADJ_chivv = ezhvv*hv*ADJ_tprim + ADJ_chivv
440 ADJ_sigoo = ADJ_t*ho + ADJ_sigoo
441 ADJ_ho = sigoo*ADJ_t + ADJ_ho
442 ADJ_sigov = 4.0d0*ADJ_t*newh11 + ADJ_sigov
443 ADJ_newh11 = 4.0d0*sigov*ADJ_t + ADJ_newh11
444 ADJ_sigvv = ADJ_t*hv + ADJ_sigvv
445 ADJ_hv = sigvv*ADJ_t + ADJ_hv
447 ADJ_ezho = ADJ_sprim*ho*chio + ADJ_ezho
448 ADJ_ho = ezho*ADJ_sprim*chio + ADJ_ho
449 ADJ_chio = ezho*ho*ADJ_sprim + ADJ_chio
450 ADJ_ezhv = ADJ_sprim*hv*chiv + ADJ_ezhv
451 ADJ_hv = ezhv*ADJ_sprim*chiv + ADJ_hv
452 ADJ_chiv = ezhv*hv*ADJ_sprim + ADJ_chiv
454 ADJ_sigo = ADJ_s*ho + ADJ_sigo
455 ADJ_ho = sigo*ADJ_s + ADJ_ho
456 ADJ_sigv = ADJ_s*hv + ADJ_sigv
457 ADJ_hv = sigv*ADJ_s + ADJ_hv
459 ADJ_ezhvv = ADJ_ezhvvv*ezhv + ADJ_ezhvv
460 ADJ_ezhv = ezhvv*ADJ_ezhvvv + ADJ_ezhv
461 ADJ_ezhoo = ADJ_ezhooo*ezho + ADJ_ezhoo
462 ADJ_ezho = ezhoo*ADJ_ezhooo + ADJ_ezho
463 ADJ_ezhoo = ADJ_ezhoov*ezhv + ADJ_ezhoo
464 ADJ_ezhv = ezhoo*ADJ_ezhoov + ADJ_ezhv
465 ADJ_ezho = ADJ_ezhovv*ezhvv + ADJ_ezho
466 ADJ_ezhvv = ezho*ADJ_ezhovv + ADJ_ezhvv
467 ADJ_ezhv = 2.0*ezhv*ADJ_ezhvv + ADJ_ezhv
468 ADJ_ezho = ADJ_ezhov*ezhv + ADJ_ezho
469 ADJ_ezhv = ezho*ADJ_ezhov + ADJ_ezhv
470 ADJ_ezho = 2.0*ezho*ADJ_ezhoo + ADJ_ezho
471 ADJ_sigvv = ADJ_sigvvv*sigv + ADJ_sigvv
472 ADJ_sigv = sigvv*ADJ_sigvvv + ADJ_sigv
473 ADJ_sigo = ADJ_sigovv*sigvv + ADJ_sigo
474 ADJ_sigvv = sigo*ADJ_sigovv + ADJ_sigvv
475 ADJ_sigoo = ADJ_sigoov*sigv + ADJ_sigoo
476 ADJ_sigv = sigoo*ADJ_sigoov + ADJ_sigv
477 ADJ_sigoo = ADJ_sigooo*sigo + ADJ_sigoo
478 ADJ_sigo = sigoo*ADJ_sigooo + ADJ_sigo
479 ADJ_sigv = 2.0*sigv*ADJ_sigvv + ADJ_sigv
480 ADJ_sigo = 2.0*sigo*ADJ_sigoo + ADJ_sigo
481 ADJ_sigo = ADJ_sigov*sigv + ADJ_sigo
482 ADJ_sigv = sigo*ADJ_sigov + ADJ_sigv
485 ! ADJ_chiv = ADJ_chiv
486 ! ADJ_chio = ADJ_chio
493 ADJ_chivv = ADJ_chivvv + ADJ_chivv
494 ADJ_chiv = ADJ_chivvv + ADJ_chiv
496 ADJ_chioo = ADJ_chiooo + ADJ_chioo
497 ADJ_chio = ADJ_chiooo + ADJ_chio
499 ADJ_chio = ADJ_chiovv + ADJ_chio
500 ADJ_chivv = ADJ_chiovv + ADJ_chivv
502 ADJ_chioo = ADJ_chioov + ADJ_chioo
503 ADJ_chiv = ADJ_chioov + ADJ_chiv
505 ADJ_chiv = ADJ_chivv + ADJ_chiv
506 ADJ_chiv = ADJ_chivv + ADJ_chiv
508 ADJ_chio = ADJ_chioo + ADJ_chio
509 ADJ_chio = ADJ_chioo + ADJ_chio
511 ADJ_chio = ADJ_chiov + ADJ_chio
512 ADJ_chiv = ADJ_chiov + ADJ_chiv
514 ADJ_h11 = -1.0d0*newh11*newh11*ADJ_newh11 + ADJ_h11
516 ADJ_h11 = -1.0d0*h12*h12*ADJ_h12 + ADJ_h11
517 ADJ_hoinv = -1.0d0*h12*h12*ADJ_h12 + ADJ_hoinv
519 ADJ_h11 = -1.0d0*h21*h21*ADJ_h21 + ADJ_h11
520 ADJ_hvinv = -1.0d0*h21*h21*ADJ_h21 + ADJ_hvinv
522 ADJ_hoinv = ADJ_h11 + ADJ_hoinv
523 ADJ_hvinv = ADJ_h11 + ADJ_hvinv
525 ADJ_cmin = ADJ_dmin + ADJ_cmin
526 ! ADJ_dmin = ADJ_dmin
529 ADJ_cplus = ADJ_dplus + ADJ_cplus
530 ! ADJ_dplus = ADJ_dplus
533 ADJ_dplus = ADJ_dmin + ADJ_dplus
534 ADJ_halfmu2 = ADJ_dplus*alph2 + ADJ_halfmu2
535 ADJ_alph2 = halfmu2*ADJ_dplus + ADJ_alph2
536 ADJ_mualph = - ADJ_cmin + ADJ_mualph
537 ADJ_mualph = ADJ_cplus + ADJ_mualph
538 ADJ_mu = ADJ_mualph*alpha + ADJ_mu
539 ADJ_alpha = mu*ADJ_mualph + ADJ_alpha
541 ADJ_mu2 = 0.5d0*ADJ_halfmu2 + ADJ_mu2
542 ADJ_mu = 0.25d0*ADJ_quartmu + ADJ_mu
543 ADJ_mu2 = ADJ_etnthmu2/18.0d0 + ADJ_mu2
544 ADJ_mu2 = ADJ_sixthmu2/6.0d0 + ADJ_mu2
545 ADJ_mu = 0.5d0*ADJ_halfmu + ADJ_mu
546 ADJ_mu = 2.0*mu*ADJ_mu2 + ADJ_mu
548 ADJ_beta = ADJ_beta3*beta2 + ADJ_beta
549 ADJ_beta2 = beta*ADJ_beta3 + ADJ_beta2
550 ADJ_beta = 2.0*beta*ADJ_beta2 + ADJ_beta
551 ADJ_ezho = ADJ_beta + ADJ_ezho
552 ADJ_ezhv = ADJ_beta + ADJ_ezhv
553 ADJ_alpha = ADJ_alph3*alph2 + ADJ_alpha
554 ADJ_alph2 = alpha*ADJ_alph3 + ADJ_alph2
555 ADJ_alpha = 2.0*alpha*ADJ_alph2 + ADJ_alpha
556 ADJ_sigo = ADJ_alpha + ADJ_sigo
557 ADJ_sigv = ADJ_alpha + ADJ_sigv
558 ADJ_sigv = ADJ_ezhv*exp(-chiv) + ADJ_sigv
559 ADJ_chiv = -ADJ_ezhv*ezhv + ADJ_chiv
560 ADJ_sigo = ADJ_ezho*exp(-chio) + ADJ_sigo
561 ADJ_chio = -ADJ_ezho*ezho + ADJ_chio
562 ADJ_zcld = ADJ_chiv*hvinv + ADJ_zcld
563 ADJ_hvinv= zcld*ADJ_chiv + ADJ_hvinv
564 ADJ_zcld = ADJ_chio*hoinv + ADJ_zcld
565 ADJ_hoinv = zcld*ADJ_chio + ADJ_hoinv
566 ADJ_hv = -1.0d0*hvinv*hvinv*ADJ_hvinv + ADJ_hv
567 ADJ_ho = -1.0d0*hoinv*hoinv*ADJ_hoinv + ADJ_ho
569 if (trace_use) call da_trace_exit("da_effht_adj")
571 end subroutine da_effht_adj