tm5_tendency.F90 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. !#################################################################
  2. !
  3. ! tendency dimensions
  4. !
  5. !### macro's #####################################################
  6. !
  7. #define TRACEBACK write (gol,'("in ",a," (",a,", line",i5,")")') rname, __FILE__, __LINE__; call goErr
  8. #define IF_NOTOK_RETURN(action) if (status/=0) then; TRACEBACK; action; return; end if
  9. #define IF_ERROR_RETURN(action) if (status> 0) then; TRACEBACK; action; return; end if
  10. !
  11. #include "tm5.inc"
  12. !
  13. !#################################################################
  14. module TM5_Tendency
  15. use GO, only : gol, goPr, goErr
  16. implicit none
  17. ! --- in/out --------------------------------
  18. public
  19. ! --- const --------------------------------------
  20. character(len=*), parameter :: mname = 'tendency'
  21. ! chemistry variables:
  22. integer, parameter :: plc_ntr = 6
  23. integer, parameter :: plc_itr_co = 1
  24. integer, parameter :: plc_itr_o3 = 2
  25. integer, parameter :: plc_itr_no2 = 3
  26. integer, parameter :: plc_itr_nox = 4
  27. integer, parameter :: plc_itr_ch2o = 5
  28. integer, parameter :: plc_itr_so2 = 6
  29. character(len=*), parameter :: plc_trname(plc_ntr) = (/ 'co ', 'o3 ', 'no2 ', 'nox ', 'ch2o', 'so2 ' /)
  30. ! processes acting on tracers:
  31. integer, parameter :: plc_npr = 8
  32. integer, parameter :: plc_ipr_0 = 0
  33. integer, parameter :: plc_ipr_conc = 1
  34. integer, parameter :: plc_ipr_pchem = 2
  35. integer, parameter :: plc_ipr_lchem = 3
  36. integer, parameter :: plc_ipr_pemi = 4
  37. integer, parameter :: plc_ipr_lddep = 5
  38. integer, parameter :: plc_ipr_lwdep = 6
  39. integer, parameter :: plc_ipr_tcnvd = 7
  40. integer, parameter :: plc_ipr_tchem = 8
  41. character(len=*), parameter :: plc_prname(0:plc_npr) = &
  42. (/ '0 ','conc ','pchem','lchem','pemi ','lddep','lwdep','tcnvd', 'tchem'/)
  43. ! only proceses 1 .. plc_npr_put are exchanged:
  44. integer, parameter :: plc_npr_put = 3
  45. logical :: tend_pchem_emis, tend_pchem_drydepos, tend_pchem_convdiff
  46. logical :: tend_lchem_convdiff, tend_lchem_chem, tend_lchem_emis, tend_lchem_drydepos, tend_lchem_wetdepos
  47. #ifdef with_feedback
  48. integer :: fdb_itr
  49. #endif
  50. end module TM5_Tendency