PageRenderTime 52ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/wrfv2_fire/phys/module_physics_addtendc.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 2022 lines | 1180 code | 394 blank | 448 comment | 100 complexity | 624d41128f439e094353cf29568747e3 MD5 | raw file
Possible License(s): AGPL-1.0

Large files files are truncated, but you can click here to view the full file

  1. !WRF:MODEL_LAYER: PHYSICS
  2. !
  3. ! note: this module really belongs in the dyn_em directory since it is
  4. ! specific only to the EM core. Leaving here for now, with an
  5. ! #if ( EM_CORE == 1 ) directive. JM 20031201
  6. !
  7. ! This MODULE holds the routines which are used to perform updates of the
  8. ! model C-grid tendencies with physics A-grid tendencies
  9. ! The module consolidates code that was (up to v1.2) duplicated in
  10. ! module_em and module_rk and in
  11. ! module_big_step_utilities.F and module_big_step_utilities_em.F
  12. ! This MODULE CONTAINS the following routines:
  13. ! update_phy_ten, phy_ra_ten, phy_bl_ten, phy_cu_ten, advance_ppt,
  14. ! add_a2a, add_a2c_u, and add_a2c_v
  15. MODULE module_physics_addtendc
  16. #if ( EM_CORE == 1 )
  17. USE module_state_description
  18. USE module_configure
  19. CONTAINS
  20. SUBROUTINE update_phy_ten(rph_tendf,rt_tendf,ru_tendf,rv_tendf,moist_tendf, &
  21. scalar_tendf,mu_tendf, &
  22. RTHRATEN,RTHBLTEN,RTHCUTEN,RTHSHTEN, &
  23. RUBLTEN,RUCUTEN,RUSHTEN, &
  24. RVBLTEN,RVCUTEN,RVSHTEN, &
  25. RQVBLTEN,RQCBLTEN,RQIBLTEN, &
  26. RQVCUTEN,RQCCUTEN,RQRCUTEN,RQICUTEN,RQSCUTEN, &
  27. RQVSHTEN,RQCSHTEN,RQRSHTEN,RQISHTEN,RQSSHTEN,RQGSHTEN,&
  28. RUNDGDTEN,RVNDGDTEN,RTHNDGDTEN,RPHNDGDTEN, &
  29. RQVNDGDTEN,RMUNDGDTEN, &
  30. rthfrten,rqvfrten, & !fire
  31. n_moist,n_scalar,config_flags,rk_step,adv_moist_cond, &
  32. ids, ide, jds, jde, kds, kde, &
  33. ims, ime, jms, jme, kms, kme, &
  34. its, ite, jts, jte, kts, kte )
  35. !-------------------------------------------------------------------
  36. IMPLICIT NONE
  37. !-------------------------------------------------------------------
  38. TYPE(grid_config_rec_type ) , INTENT(IN ) :: config_flags
  39. INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
  40. ims, ime, jms, jme, kms, kme, &
  41. its, ite, jts, jte, kts, kte, &
  42. n_moist,n_scalar,rk_step
  43. LOGICAL , INTENT(IN) :: adv_moist_cond
  44. REAL , DIMENSION(ims:ime , kms:kme, jms:jme),INTENT(INOUT) :: &
  45. ru_tendf, &
  46. rv_tendf, &
  47. rt_tendf, &
  48. rph_tendf
  49. REAL , DIMENSION(ims:ime , jms:jme),INTENT(INOUT) :: mu_tendf
  50. REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_moist), &
  51. INTENT(INOUT) :: moist_tendf
  52. REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_scalar), &
  53. INTENT(INOUT) :: scalar_tendf
  54. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: &
  55. RTHRATEN, &
  56. RTHBLTEN, &
  57. RTHCUTEN, &
  58. RTHSHTEN, &
  59. RUBLTEN, &
  60. RUCUTEN, &
  61. RUSHTEN, &
  62. RVBLTEN, &
  63. RVCUTEN, &
  64. RVSHTEN, &
  65. RQVBLTEN, &
  66. RQCBLTEN, &
  67. RQIBLTEN, &
  68. RQVCUTEN, &
  69. RQCCUTEN, &
  70. RQRCUTEN, &
  71. RQICUTEN, &
  72. RQSCUTEN, &
  73. RQVSHTEN, &
  74. RQCSHTEN, &
  75. RQRSHTEN, &
  76. RQISHTEN, &
  77. RQSSHTEN, &
  78. RQGSHTEN, &
  79. RTHNDGDTEN, &
  80. RPHNDGDTEN, &
  81. RQVNDGDTEN, &
  82. RUNDGDTEN, &
  83. RVNDGDTEN
  84. REAL, DIMENSION(ims:ime, jms:jme), INTENT(IN ) :: RMUNDGDTEN
  85. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: & ! fire
  86. rthfrten, &
  87. rqvfrten
  88. !------------------------------------------------------------------
  89. ! set up loop bounds for this grid's boundary conditions
  90. if (config_flags%ra_lw_physics .gt. 0 .or. &
  91. config_flags%ra_sw_physics .gt. 0) &
  92. CALL phy_ra_ten(config_flags,rt_tendf,RTHRATEN, &
  93. ids, ide, jds, jde, kds, kde, &
  94. ims, ime, jms, jme, kms, kme, &
  95. its, ite, jts, jte, kts, kte )
  96. if (config_flags%bl_pbl_physics .gt. 0) &
  97. CALL phy_bl_ten(config_flags,rk_step,n_moist,n_scalar, &
  98. rt_tendf,ru_tendf,rv_tendf,moist_tendf, &
  99. scalar_tendf,adv_moist_cond, &
  100. RTHBLTEN,RUBLTEN,RVBLTEN, &
  101. RQVBLTEN,RQCBLTEN,RQIBLTEN, &
  102. ids, ide, jds, jde, kds, kde, &
  103. ims, ime, jms, jme, kms, kme, &
  104. its, ite, jts, jte, kts, kte )
  105. if (config_flags%cu_physics .gt. 0) &
  106. CALL phy_cu_ten(config_flags,rk_step,n_moist,n_scalar, &
  107. rt_tendf,ru_tendf,rv_tendf, &
  108. RUCUTEN,RVCUTEN,RTHCUTEN, &
  109. RQVCUTEN,RQCCUTEN,RQRCUTEN, &
  110. RQICUTEN,RQSCUTEN,moist_tendf, &
  111. scalar_tendf,adv_moist_cond, &
  112. ids, ide, jds, jde, kds, kde, &
  113. ims, ime, jms, jme, kms, kme, &
  114. its, ite, jts, jte, kts, kte )
  115. if (config_flags%shcu_physics .gt. 0) &
  116. CALL phy_shcu_ten(config_flags,rk_step,n_moist, &
  117. rt_tendf,ru_tendf,rv_tendf, &
  118. RUSHTEN,RVSHTEN,RTHSHTEN, &
  119. RQVSHTEN,RQCSHTEN,RQRSHTEN, &
  120. RQISHTEN,RQSSHTEN,RQGSHTEN,moist_tendf, &
  121. ids, ide, jds, jde, kds, kde, &
  122. ims, ime, jms, jme, kms, kme, &
  123. its, ite, jts, jte, kts, kte )
  124. if (config_flags%grid_fdda .gt. 0) &
  125. CALL phy_fg_ten(config_flags,rk_step,n_moist, &
  126. rph_tendf,rt_tendf,ru_tendf,rv_tendf, &
  127. mu_tendf, moist_tendf, &
  128. RUNDGDTEN,RVNDGDTEN,RTHNDGDTEN, &
  129. RPHNDGDTEN,RQVNDGDTEN,RMUNDGDTEN, &
  130. ids, ide, jds, jde, kds, kde, &
  131. ims, ime, jms, jme, kms, kme, &
  132. its, ite, jts, jte, kts, kte )
  133. if (config_flags%ifire .gt. 0) & ! fire
  134. CALL phy_fr_ten(config_flags,rk_step,n_moist, &
  135. rt_tendf,ru_tendf,rv_tendf, &
  136. mu_tendf, moist_tendf, &
  137. rthfrten,rqvfrten, &
  138. ids, ide, jds, jde, kds, kde, &
  139. ims, ime, jms, jme, kms, kme, &
  140. its, ite, jts, jte, kts, kte )
  141. END SUBROUTINE update_phy_ten
  142. !=================================================================
  143. SUBROUTINE phy_ra_ten(config_flags,rt_tendf,RTHRATEN, &
  144. ids, ide, jds, jde, kds, kde, &
  145. ims, ime, jms, jme, kms, kme, &
  146. its, ite, jts, jte, kts, kte )
  147. !-----------------------------------------------------------------
  148. IMPLICIT NONE
  149. !-----------------------------------------------------------------
  150. TYPE(grid_config_rec_type ) , INTENT(IN ) :: config_flags
  151. INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
  152. ims, ime, jms, jme, kms, kme, &
  153. its, ite, jts, jte, kts, kte
  154. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: &
  155. RTHRATEN
  156. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT) :: &
  157. rt_tendf
  158. ! LOCAL VARS
  159. INTEGER :: i,j,k
  160. CALL add_a2a(rt_tendf,RTHRATEN,config_flags, &
  161. ids,ide, jds, jde, kds, kde, &
  162. ims, ime, jms, jme, kms, kme, &
  163. its, ite, jts, jte, kts, kte )
  164. END SUBROUTINE phy_ra_ten
  165. !=================================================================
  166. SUBROUTINE phy_bl_ten(config_flags,rk_step,n_moist,n_scalar, &
  167. rt_tendf,ru_tendf,rv_tendf,moist_tendf, &
  168. scalar_tendf,adv_moist_cond, &
  169. RTHBLTEN,RUBLTEN,RVBLTEN, &
  170. RQVBLTEN,RQCBLTEN,RQIBLTEN, &
  171. ids, ide, jds, jde, kds, kde, &
  172. ims, ime, jms, jme, kms, kme, &
  173. its, ite, jts, jte, kts, kte )
  174. !-----------------------------------------------------------------
  175. IMPLICIT NONE
  176. !-----------------------------------------------------------------
  177. TYPE(grid_config_rec_type) , INTENT(IN ) :: config_flags
  178. INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
  179. ims, ime, jms, jme, kms, kme, &
  180. its, ite, jts, jte, kts, kte, &
  181. n_moist, n_scalar, rk_step
  182. LOGICAL , INTENT(IN) :: adv_moist_cond
  183. REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_moist), &
  184. INTENT(INOUT) :: moist_tendf
  185. REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_scalar), &
  186. INTENT(INOUT) :: scalar_tendf
  187. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: &
  188. RTHBLTEN, &
  189. RUBLTEN, &
  190. RVBLTEN, &
  191. RQVBLTEN, &
  192. RQCBLTEN, &
  193. RQIBLTEN
  194. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT):: &
  195. rt_tendf, &
  196. ru_tendf, &
  197. rv_tendf
  198. ! LOCAL VARS
  199. INTEGER :: i,j,k,IBGN,IEND,JBGN,JEND
  200. !-----------------------------------------------------------------
  201. SELECT CASE(config_flags%bl_pbl_physics)
  202. CASE (YSUSCHEME)
  203. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  204. ids,ide, jds, jde, kds, kde, &
  205. ims, ime, jms, jme, kms, kme, &
  206. its, ite, jts, jte, kts, kte )
  207. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  208. ids,ide, jds, jde, kds, kde, &
  209. ims, ime, jms, jme, kms, kme, &
  210. its, ite, jts, jte, kts, kte )
  211. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  212. ids,ide, jds, jde, kds, kde, &
  213. ims, ime, jms, jme, kms, kme, &
  214. its, ite, jts, jte, kts, kte )
  215. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  216. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  217. config_flags, &
  218. ids,ide, jds, jde, kds, kde, &
  219. ims, ime, jms, jme, kms, kme, &
  220. its, ite, jts, jte, kts, kte )
  221. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  222. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  223. config_flags, &
  224. ids,ide, jds, jde, kds, kde, &
  225. ims, ime, jms, jme, kms, kme, &
  226. its, ite, jts, jte, kts, kte )
  227. if (P_QI .ge. PARAM_FIRST_SCALAR) &
  228. CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
  229. config_flags, &
  230. ids,ide, jds, jde, kds, kde, &
  231. ims, ime, jms, jme, kms, kme, &
  232. its, ite, jts, jte, kts, kte )
  233. IF(.not. adv_moist_cond)THEN
  234. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  235. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  236. config_flags, &
  237. ids,ide, jds, jde, kds, kde, &
  238. ims, ime, jms, jme, kms, kme, &
  239. its, ite, jts, jte, kts, kte )
  240. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  241. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
  242. config_flags, &
  243. ids,ide, jds, jde, kds, kde, &
  244. ims, ime, jms, jme, kms, kme, &
  245. its, ite, jts, jte, kts, kte )
  246. ENDIF
  247. CASE (MRFSCHEME)
  248. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  249. ids,ide, jds, jde, kds, kde, &
  250. ims, ime, jms, jme, kms, kme, &
  251. its, ite, jts, jte, kts, kte )
  252. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  253. ids,ide, jds, jde, kds, kde, &
  254. ims, ime, jms, jme, kms, kme, &
  255. its, ite, jts, jte, kts, kte )
  256. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  257. ids,ide, jds, jde, kds, kde, &
  258. ims, ime, jms, jme, kms, kme, &
  259. its, ite, jts, jte, kts, kte )
  260. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  261. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  262. config_flags, &
  263. ids,ide, jds, jde, kds, kde, &
  264. ims, ime, jms, jme, kms, kme, &
  265. its, ite, jts, jte, kts, kte )
  266. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  267. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  268. config_flags, &
  269. ids,ide, jds, jde, kds, kde, &
  270. ims, ime, jms, jme, kms, kme, &
  271. its, ite, jts, jte, kts, kte )
  272. if (P_QI .ge. PARAM_FIRST_SCALAR) &
  273. CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
  274. config_flags, &
  275. ids,ide, jds, jde, kds, kde, &
  276. ims, ime, jms, jme, kms, kme, &
  277. its, ite, jts, jte, kts, kte )
  278. IF(.not. adv_moist_cond)THEN
  279. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  280. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  281. config_flags, &
  282. ids,ide, jds, jde, kds, kde, &
  283. ims, ime, jms, jme, kms, kme, &
  284. its, ite, jts, jte, kts, kte )
  285. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  286. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
  287. config_flags, &
  288. ids,ide, jds, jde, kds, kde, &
  289. ims, ime, jms, jme, kms, kme, &
  290. its, ite, jts, jte, kts, kte )
  291. ENDIF
  292. CASE (ACMPBLSCHEME)
  293. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  294. ids,ide, jds, jde, kds, kde, &
  295. ims, ime, jms, jme, kms, kme, &
  296. its, ite, jts, jte, kts, kte )
  297. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  298. ids,ide, jds, jde, kds, kde, &
  299. ims, ime, jms, jme, kms, kme, &
  300. its, ite, jts, jte, kts, kte )
  301. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  302. ids,ide, jds, jde, kds, kde, &
  303. ims, ime, jms, jme, kms, kme, &
  304. its, ite, jts, jte, kts, kte )
  305. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  306. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  307. config_flags, &
  308. ids,ide, jds, jde, kds, kde, &
  309. ims, ime, jms, jme, kms, kme, &
  310. its, ite, jts, jte, kts, kte )
  311. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  312. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  313. config_flags, &
  314. ids,ide, jds, jde, kds, kde, &
  315. ims, ime, jms, jme, kms, kme, &
  316. its, ite, jts, jte, kts, kte )
  317. if (P_QI .ge. PARAM_FIRST_SCALAR) &
  318. CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
  319. config_flags, &
  320. ids,ide, jds, jde, kds, kde, &
  321. ims, ime, jms, jme, kms, kme, &
  322. its, ite, jts, jte, kts, kte )
  323. IF(.not. adv_moist_cond)THEN
  324. if (P_QT .ge. PARAM_FIRST_SCALAR)THEN
  325. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  326. config_flags, &
  327. ids,ide, jds, jde, kds, kde, &
  328. ims, ime, jms, jme, kms, kme, &
  329. its, ite, jts, jte, kts, kte )
  330. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
  331. config_flags, &
  332. ids,ide, jds, jde, kds, kde, &
  333. ims, ime, jms, jme, kms, kme, &
  334. its, ite, jts, jte, kts, kte )
  335. ENDIF
  336. ENDIF
  337. CASE (MYJPBLSCHEME)
  338. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  339. ids,ide, jds, jde, kds, kde, &
  340. ims, ime, jms, jme, kms, kme, &
  341. its, ite, jts, jte, kts, kte )
  342. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  343. ids,ide, jds, jde, kds, kde, &
  344. ims, ime, jms, jme, kms, kme, &
  345. its, ite, jts, jte, kts, kte )
  346. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  347. ids,ide, jds, jde, kds, kde, &
  348. ims, ime, jms, jme, kms, kme, &
  349. its, ite, jts, jte, kts, kte )
  350. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  351. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  352. config_flags, &
  353. ids,ide, jds, jde, kds, kde, &
  354. ims, ime, jms, jme, kms, kme, &
  355. its, ite, jts, jte, kts, kte )
  356. IF(.not. adv_moist_cond)THEN
  357. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  358. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  359. config_flags, &
  360. ids,ide, jds, jde, kds, kde, &
  361. ims, ime, jms, jme, kms, kme, &
  362. its, ite, jts, jte, kts, kte )
  363. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  364. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
  365. config_flags, &
  366. ids,ide, jds, jde, kds, kde, &
  367. ims, ime, jms, jme, kms, kme, &
  368. its, ite, jts, jte, kts, kte )
  369. ! if (P_QT .ge. PARAM_FIRST_SCALAR) &
  370. ! CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQSBLTEN, &
  371. ! config_flags, &
  372. ! ids,ide, jds, jde, kds, kde, &
  373. ! ims, ime, jms, jme, kms, kme, &
  374. ! its, ite, jts, jte, kts, kte )
  375. !
  376. ! if (P_QT .ge. PARAM_FIRST_SCALAR) &
  377. ! CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQRBLTEN, &
  378. ! config_flags, &
  379. ! ids,ide, jds, jde, kds, kde, &
  380. ! ims, ime, jms, jme, kms, kme, &
  381. ! its, ite, jts, jte, kts, kte )
  382. !
  383. ! if (P_QT .ge. PARAM_FIRST_SCALAR) &
  384. ! CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQGBLTEN, &
  385. ! config_flags, &
  386. ! ids,ide, jds, jde, kds, kde, &
  387. ! ims, ime, jms, jme, kms, kme, &
  388. ! its, ite, jts, jte, kts, kte )
  389. ELSE
  390. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  391. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  392. config_flags, &
  393. ids,ide, jds, jde, kds, kde, &
  394. ims, ime, jms, jme, kms, kme, &
  395. its, ite, jts, jte, kts, kte )
  396. if (P_QI .ge. PARAM_FIRST_SCALAR) &
  397. CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
  398. config_flags, &
  399. ids,ide, jds, jde, kds, kde, &
  400. ims, ime, jms, jme, kms, kme, &
  401. its, ite, jts, jte, kts, kte )
  402. ! if (P_QS .ge. PARAM_FIRST_SCALAR) &
  403. ! CALL add_a2a(moist_tendf(ims,kms,jms,P_QS),RQSBLTEN, &
  404. ! config_flags, &
  405. ! ids,ide, jds, jde, kds, kde, &
  406. ! ims, ime, jms, jme, kms, kme, &
  407. ! its, ite, jts, jte, kts, kte )
  408. !
  409. ! if (P_QR .ge. PARAM_FIRST_SCALAR) &
  410. ! CALL add_a2a(moist_tendf(ims,kms,jms,P_QR),RQRBLTEN, &
  411. ! config_flags, &
  412. ! ids,ide, jds, jde, kds, kde, &
  413. ! ims, ime, jms, jme, kms, kme, &
  414. ! its, ite, jts, jte, kts, kte )
  415. !
  416. ! if (P_QG .ge. PARAM_FIRST_SCALAR) &
  417. ! CALL add_a2a(moist_tendf(ims,kms,jms,P_QG),RQGBLTEN, &
  418. ! config_flags, &
  419. ! ids,ide, jds, jde, kds, kde, &
  420. ! ims, ime, jms, jme, kms, kme, &
  421. ! its, ite, jts, jte, kts, kte )
  422. ENDIF
  423. CASE (QNSEPBLSCHEME,QNSEPBL09SCHEME)
  424. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  425. ids,ide, jds, jde, kds, kde, &
  426. ims, ime, jms, jme, kms, kme, &
  427. its, ite, jts, jte, kts, kte )
  428. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  429. ids,ide, jds, jde, kds, kde, &
  430. ims, ime, jms, jme, kms, kme, &
  431. its, ite, jts, jte, kts, kte )
  432. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  433. ids,ide, jds, jde, kds, kde, &
  434. ims, ime, jms, jme, kms, kme, &
  435. its, ite, jts, jte, kts, kte )
  436. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  437. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  438. config_flags, &
  439. ids,ide, jds, jde, kds, kde, &
  440. ims, ime, jms, jme, kms, kme, &
  441. its, ite, jts, jte, kts, kte )
  442. IF(.not. adv_moist_cond)THEN
  443. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  444. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  445. config_flags, &
  446. ids,ide, jds, jde, kds, kde, &
  447. ims, ime, jms, jme, kms, kme, &
  448. its, ite, jts, jte, kts, kte )
  449. ELSE
  450. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  451. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  452. config_flags, &
  453. ids,ide, jds, jde, kds, kde, &
  454. ims, ime, jms, jme, kms, kme, &
  455. its, ite, jts, jte, kts, kte )
  456. ENDIF
  457. CASE (GFSSCHEME)
  458. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  459. ids,ide, jds, jde, kds, kde, &
  460. ims, ime, jms, jme, kms, kme, &
  461. its, ite, jts, jte, kts, kte )
  462. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  463. ids,ide, jds, jde, kds, kde, &
  464. ims, ime, jms, jme, kms, kme, &
  465. its, ite, jts, jte, kts, kte )
  466. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  467. ids,ide, jds, jde, kds, kde, &
  468. ims, ime, jms, jme, kms, kme, &
  469. its, ite, jts, jte, kts, kte )
  470. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  471. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  472. config_flags, &
  473. ids,ide, jds, jde, kds, kde, &
  474. ims, ime, jms, jme, kms, kme, &
  475. its, ite, jts, jte, kts, kte )
  476. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  477. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  478. config_flags, &
  479. ids,ide, jds, jde, kds, kde, &
  480. ims, ime, jms, jme, kms, kme, &
  481. its, ite, jts, jte, kts, kte )
  482. if (P_QI .ge. PARAM_FIRST_SCALAR) &
  483. CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
  484. config_flags, &
  485. ids,ide, jds, jde, kds, kde, &
  486. ims, ime, jms, jme, kms, kme, &
  487. its, ite, jts, jte, kts, kte )
  488. IF(.not. adv_moist_cond)THEN
  489. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  490. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  491. config_flags, &
  492. ids,ide, jds, jde, kds, kde, &
  493. ims, ime, jms, jme, kms, kme, &
  494. its, ite, jts, jte, kts, kte )
  495. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  496. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
  497. config_flags, &
  498. ids,ide, jds, jde, kds, kde, &
  499. ims, ime, jms, jme, kms, kme, &
  500. its, ite, jts, jte, kts, kte )
  501. ENDIF
  502. CASE (MYNNPBLSCHEME2,MYNNPBLSCHEME3)
  503. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  504. ids,ide, jds, jde, kds, kde, &
  505. ims, ime, jms, jme, kms, kme, &
  506. its, ite, jts, jte, kts, kte )
  507. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  508. ids,ide, jds, jde, kds, kde, &
  509. ims, ime, jms, jme, kms, kme, &
  510. its, ite, jts, jte, kts, kte )
  511. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  512. ids,ide, jds, jde, kds, kde, &
  513. ims, ime, jms, jme, kms, kme, &
  514. its, ite, jts, jte, kts, kte )
  515. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  516. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  517. config_flags, &
  518. ids,ide, jds, jde, kds, kde, &
  519. ims, ime, jms, jme, kms, kme, &
  520. its, ite, jts, jte, kts, kte )
  521. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  522. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  523. config_flags, &
  524. ids,ide, jds, jde, kds, kde, &
  525. ims, ime, jms, jme, kms, kme, &
  526. its, ite, jts, jte, kts, kte )
  527. IF(.not. adv_moist_cond)THEN
  528. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  529. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  530. config_flags, &
  531. ids,ide, jds, jde, kds, kde, &
  532. ims, ime, jms, jme, kms, kme, &
  533. its, ite, jts, jte, kts, kte )
  534. ENDIF
  535. CASE (BOULACSCHEME)
  536. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  537. ids,ide, jds, jde, kds, kde, &
  538. ims, ime, jms, jme, kms, kme, &
  539. its, ite, jts, jte, kts, kte )
  540. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  541. ids,ide, jds, jde, kds, kde, &
  542. ims, ime, jms, jme, kms, kme, &
  543. its, ite, jts, jte, kts, kte )
  544. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  545. ids,ide, jds, jde, kds, kde, &
  546. ims, ime, jms, jme, kms, kme, &
  547. its, ite, jts, jte, kts, kte )
  548. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  549. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  550. config_flags, &
  551. ids,ide, jds, jde, kds, kde, &
  552. ims, ime, jms, jme, kms, kme, &
  553. its, ite, jts, jte, kts, kte )
  554. IF(.not. adv_moist_cond)THEN
  555. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  556. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  557. config_flags, &
  558. ids,ide, jds, jde, kds, kde, &
  559. ims, ime, jms, jme, kms, kme, &
  560. its, ite, jts, jte, kts, kte )
  561. ELSE
  562. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  563. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  564. config_flags, &
  565. ids,ide, jds, jde, kds, kde, &
  566. ims, ime, jms, jme, kms, kme, &
  567. its, ite, jts, jte, kts, kte )
  568. ENDIF
  569. CASE (CAMUWPBLSCHEME)
  570. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  571. ids,ide, jds, jde, kds, kde, &
  572. ims, ime, jms, jme, kms, kme, &
  573. its, ite, jts, jte, kts, kte )
  574. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  575. ids,ide, jds, jde, kds, kde, &
  576. ims, ime, jms, jme, kms, kme, &
  577. its, ite, jts, jte, kts, kte )
  578. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  579. ids,ide, jds, jde, kds, kde, &
  580. ims, ime, jms, jme, kms, kme, &
  581. its, ite, jts, jte, kts, kte )
  582. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  583. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  584. config_flags, &
  585. ids,ide, jds, jde, kds, kde, &
  586. ims, ime, jms, jme, kms, kme, &
  587. its, ite, jts, jte, kts, kte )
  588. IF(.not. adv_moist_cond)THEN
  589. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  590. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
  591. config_flags, &
  592. ids,ide, jds, jde, kds, kde, &
  593. ims, ime, jms, jme, kms, kme, &
  594. its, ite, jts, jte, kts, kte )
  595. ELSE
  596. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  597. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  598. config_flags, &
  599. ids,ide, jds, jde, kds, kde, &
  600. ims, ime, jms, jme, kms, kme, &
  601. its, ite, jts, jte, kts, kte )
  602. ENDIF
  603. CASE (TEMFPBLSCHEME)
  604. CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
  605. ids,ide, jds, jde, kds, kde, &
  606. ims, ime, jms, jme, kms, kme, &
  607. its, ite, jts, jte, kts, kte )
  608. CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
  609. ids,ide, jds, jde, kds, kde, &
  610. ims, ime, jms, jme, kms, kme, &
  611. its, ite, jts, jte, kts, kte )
  612. CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
  613. ids,ide, jds, jde, kds, kde, &
  614. ims, ime, jms, jme, kms, kme, &
  615. its, ite, jts, jte, kts, kte )
  616. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  617. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
  618. config_flags, &
  619. ids,ide, jds, jde, kds, kde, &
  620. ims, ime, jms, jme, kms, kme, &
  621. its, ite, jts, jte, kts, kte )
  622. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  623. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
  624. config_flags, &
  625. ids,ide, jds, jde, kds, kde, &
  626. ims, ime, jms, jme, kms, kme, &
  627. its, ite, jts, jte, kts, kte )
  628. if (P_QI .ge. PARAM_FIRST_SCALAR) &
  629. CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
  630. config_flags, &
  631. ids,ide, jds, jde, kds, kde, &
  632. ims, ime, jms, jme, kms, kme, &
  633. its, ite, jts, jte, kts, kte )
  634. CASE DEFAULT
  635. print*,'phy_bl_ten: The pbl scheme does not exist'
  636. END SELECT
  637. END SUBROUTINE phy_bl_ten
  638. !=================================================================
  639. SUBROUTINE phy_cu_ten(config_flags,rk_step,n_moist,n_scalar, &
  640. rt_tendf,ru_tendf,rv_tendf, &
  641. RUCUTEN,RVCUTEN,RTHCUTEN, &
  642. RQVCUTEN,RQCCUTEN,RQRCUTEN, &
  643. RQICUTEN,RQSCUTEN,moist_tendf, &
  644. scalar_tendf,adv_moist_cond, &
  645. ids, ide, jds, jde, kds, kde, &
  646. ims, ime, jms, jme, kms, kme, &
  647. its, ite, jts, jte, kts, kte )
  648. !-----------------------------------------------------------------
  649. IMPLICIT NONE
  650. !-----------------------------------------------------------------
  651. TYPE(grid_config_rec_type ) , INTENT(IN ) :: config_flags
  652. INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
  653. ims, ime, jms, jme, kms, kme, &
  654. its, ite, jts, jte, kts, kte, &
  655. n_moist, n_scalar, rk_step
  656. LOGICAL , INTENT(IN) :: adv_moist_cond
  657. REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_moist), &
  658. INTENT(INOUT) :: moist_tendf
  659. REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_scalar), &
  660. INTENT(INOUT) :: scalar_tendf
  661. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: &
  662. RUCUTEN, &
  663. RVCUTEN, &
  664. RTHCUTEN, &
  665. RQVCUTEN, &
  666. RQCCUTEN, &
  667. RQRCUTEN, &
  668. RQICUTEN, &
  669. RQSCUTEN
  670. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT) :: &
  671. rt_tendf, &
  672. ru_tendf, &
  673. rv_tendf
  674. ! LOCAL VARS
  675. INTEGER :: i,j,k
  676. SELECT CASE (config_flags%cu_physics)
  677. CASE (KFSCHEME)
  678. CALL add_a2a(rt_tendf,RTHCUTEN,config_flags, &
  679. ids,ide, jds, jde, kds, kde, &
  680. ims, ime, jms, jme, kms, kme, &
  681. its, ite, jts, jte, kts, kte )
  682. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  683. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVCUTEN, &
  684. config_flags, &
  685. ids,ide, jds, jde, kds, kde, &
  686. ims, ime, jms, jme, kms, kme, &
  687. its, ite, jts, jte, kts, kte )
  688. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  689. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCCUTEN, &
  690. config_flags, &
  691. ids,ide, jds, jde, kds, kde, &
  692. ims, ime, jms, jme, kms, kme, &
  693. its, ite, jts, jte, kts, kte )
  694. if (P_QR .ge. PARAM_FIRST_SCALAR) &
  695. CALL add_a2a(moist_tendf(ims,kms,jms,P_QR),RQRCUTEN, &
  696. config_flags, &
  697. ids,ide, jds, jde, kds, kde, &
  698. ims, ime, jms, jme, kms, kme, &
  699. its, ite, jts, jte, kts, kte )
  700. if (P_QI .ge. PARAM_FIRST_SCALAR) &
  701. CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQICUTEN, &
  702. config_flags, &
  703. ids,ide, jds, jde, kds, kde, &
  704. ims, ime, jms, jme, kms, kme, &
  705. its, ite, jts, jte, kts, kte )
  706. if (P_QS .ge. PARAM_FIRST_SCALAR) &
  707. CALL add_a2a(moist_tendf(ims,kms,jms,P_QS),RQSCUTEN, &
  708. config_flags, &
  709. ids,ide, jds, jde, kds, kde, &
  710. ims, ime, jms, jme, kms, kme, &
  711. its, ite, jts, jte, kts, kte )
  712. IF(.not. adv_moist_cond)THEN
  713. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  714. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCCUTEN, &
  715. config_flags, &
  716. ids,ide, jds, jde, kds, kde, &
  717. ims, ime, jms, jme, kms, kme, &
  718. its, ite, jts, jte, kts, kte )
  719. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  720. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQRCUTEN, &
  721. config_flags, &
  722. ids,ide, jds, jde, kds, kde, &
  723. ims, ime, jms, jme, kms, kme, &
  724. its, ite, jts, jte, kts, kte )
  725. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  726. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQICUTEN, &
  727. config_flags, &
  728. ids,ide, jds, jde, kds, kde, &
  729. ims, ime, jms, jme, kms, kme, &
  730. its, ite, jts, jte, kts, kte )
  731. if (P_QT .ge. PARAM_FIRST_SCALAR) &
  732. CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQSCUTEN, &
  733. config_flags, &
  734. ids,ide, jds, jde, kds, kde, &
  735. ims, ime, jms, jme, kms, kme, &
  736. its, ite, jts, jte, kts, kte )
  737. ENDIF
  738. CASE (BMJSCHEME)
  739. CALL add_a2a(rt_tendf,RTHCUTEN, &
  740. config_flags, &
  741. ids,ide, jds, jde, kds, kde, &
  742. ims, ime, jms, jme, kms, kme, &
  743. its, ite, jts, jte, kts, kte )
  744. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  745. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVCUTEN, &
  746. config_flags, &
  747. ids,ide, jds, jde, kds, kde, &
  748. ims, ime, jms, jme, kms, kme, &
  749. its, ite, jts, jte, kts, kte )
  750. CASE (KFETASCHEME)
  751. CALL add_a2a(rt_tendf,RTHCUTEN,config_flags, &
  752. ids,ide, jds, jde, kds, kde, &
  753. ims, ime, jms, jme, kms, kme, &
  754. its, ite, jts, jte, kts, kte )
  755. if (P_QV .ge. PARAM_FIRST_SCALAR) &
  756. CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVCUTEN, &
  757. config_flags, &
  758. ids,ide, jds, jde, kds, kde, &
  759. ims, ime, jms, jme, kms, kme, &
  760. its, ite, jts, jte, kts, kte )
  761. if (P_QC .ge. PARAM_FIRST_SCALAR) &
  762. CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCCUTEN, &
  763. config_flags, &
  764. ids,ide, jds, jde, kds, kde, &

Large files files are truncated, but you can click here to view the full file