!WRF:MEDIATION_LAYER:SOLVER #define BENCH_START(A) #define BENCH_END(A) MODULE module_first_rk_step_part2 CONTAINS SUBROUTINE first_rk_step_part2 ( grid , config_flags & , moist , moist_tend & , chem , chem_tend & , scalar , scalar_tend & , fdda3d, fdda2d & , ru_tendf, rv_tendf & , rw_tendf, t_tendf & , ph_tendf, mu_tendf & , tke_tend & , adapt_step_flag , curr_secs & , psim , psih , wspd , gz1oz0 , br , chklowq & , cu_act_flag , hol , th_phy & , pi_phy , p_phy , t_phy , u_phy , v_phy & , dz8w , p8w , t8w , rho_phy , rho & , z_at_w , mu_3d & , ids, ide, jds, jde, kds, kde & , ims, ime, jms, jme, kms, kme & , ips, ipe, jps, jpe, kps, kpe & , k_start , k_end & ) USE module_state_description USE module_model_constants USE module_domain, ONLY : domain USE module_configure, ONLY : grid_config_rec_type, model_config_rec USE module_dm USE module_diffusion_em, ONLY : phy_bc, cal_deform_and_div, compute_diff_metrics, & vertical_diffusion_2, horizontal_diffusion_2, calculate_km_kh, & tke_rhs USE module_em, ONLY : calculate_phy_tend !!!!****MARS MARS ! USE module_fddaobs_driver, ONLY : fddaobs_driver USE module_bc, ONLY : set_physical_bc3d, set_physical_bc2d USE module_physics_addtendc, ONLY : update_phy_ten IMPLICIT NONE TYPE ( domain ), INTENT(INOUT) :: grid TYPE ( grid_config_rec_type ), INTENT(IN) :: config_flags INTEGER, INTENT(IN) :: ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe LOGICAL ,INTENT(IN) :: adapt_step_flag REAL, INTENT(IN) :: curr_secs REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist_tend REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: chem REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: chem_tend REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: scalar REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: scalar_tend REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_fdda3d),INTENT(INOUT) :: fdda3d REAL ,DIMENSION(ims:ime,1:1,jms:jme,num_fdda2d),INTENT(INOUT) :: fdda2d REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psih REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: wspd REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: gz1oz0 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: br REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chklowq LOGICAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cu_act_flag REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: hol REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: th_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: pi_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: u_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: v_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: dz8w REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p8w REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t8w REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rho_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rho REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: z_at_w REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: mu_3d REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ru_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rv_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rw_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ph_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: tke_tend REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: mu_tendf INTEGER , INTENT(IN) :: k_start, k_end ! Local REAL, DIMENSION( ims:ime, jms:jme ) :: ht_loc INTEGER, DIMENSION( ims:ime, jms:jme ) :: shadowmask INTEGER :: ij INTEGER num_roof_layers INTEGER num_wall_layers INTEGER num_road_layers INTEGER iswater INTEGER rk_step ! initialize all tendencies to zero in order to update physics ! tendencies first (separate from dry dynamics). rk_step = 1 ! calculate_phy_tend BENCH_START(cal_phy_tend) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call calculate_phy_tend' ) CALL calculate_phy_tend (config_flags,grid%mut,grid%muu,grid%muv,pi_phy, & grid%rthraten, & grid%rublten,grid%rvblten,grid%rthblten, & grid%rqvblten,grid%rqcblten,grid%rqiblten, & grid%rthcuten,grid%rqvcuten,grid%rqccuten,grid%rqrcuten, & grid%rqicuten,grid%rqscuten, & grid%RUNDGDTEN,grid%RVNDGDTEN,grid%RTHNDGDTEN,grid%RQVNDGDTEN, & grid%RMUNDGDTEN, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & grid%i_start(ij), min(grid%i_end(ij),ide-1), & grid%j_start(ij), min(grid%j_end(ij),jde-1), & k_start , min(k_end,kde-1) ) ENDDO !$OMP END PARALLEL DO BENCH_END(cal_phy_tend) ! tke diffusion IF(config_flags%diff_opt .eq. 2 .OR. config_flags%diff_opt .eq. 1) THEN BENCH_START(comp_diff_metrics_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call compute_diff_metrics ' ) CALL compute_diff_metrics ( config_flags, grid%ph_2, grid%phb, grid%z, grid%rdz, grid%rdzw, & grid%zx, grid%zy, grid%rdx, grid%rdy, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) ENDDO !$OMP END PARALLEL DO BENCH_END(comp_diff_metrics_tim) #ifdef DM_PARALLEL # include "HALO_EM_TKE_C.inc" # include "PERIOD_BDY_EM_A1.inc" #endif BENCH_START(tke_diff_bc_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call bc for diffusion_metrics ' ) CALL set_physical_bc3d( grid%rdzw , 'w', config_flags, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) CALL set_physical_bc3d( grid%rdz , 'w', config_flags, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) CALL set_physical_bc3d( grid%z , 'w', config_flags, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) CALL set_physical_bc3d( grid%zx , 'w', config_flags, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) CALL set_physical_bc3d( grid%zy , 'w', config_flags, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) CALL set_physical_bc2d( grid%ustm, 't', config_flags, & ids, ide, jds, jde, & ims, ime, jms, jme, & ips, ipe, jps, jpe, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij) ) ENDDO !$OMP END PARALLEL DO BENCH_END(tke_diff_bc_tim) BENCH_START(deform_div_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call cal_deform_and_div' ) CALL cal_deform_and_div ( config_flags,grid%u_2,grid%v_2,grid%w_2,grid%div, & grid%defor11,grid%defor22,grid%defor33, & grid%defor12,grid%defor13,grid%defor23, & grid%u_base, grid%v_base,grid%msfux,grid%msfuy, & grid%msfvx,grid%msfvy,grid%msftx,grid%msfty, & grid%rdx, grid%rdy, grid%dn, grid%dnw, grid%rdz, & grid%rdzw,grid%fnm,grid%fnp,grid%cf1,grid%cf2, & grid%cf3,grid%zx,grid%zy, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) ENDDO !$OMP END PARALLEL DO BENCH_END(deform_div_tim) #ifdef DM_PARALLEL # include "HALO_EM_TKE_D.inc" #endif ! calculate tke, kmh, and kmv BENCH_START(calc_tke_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call calculate_km_kh' ) CALL calculate_km_kh( config_flags,grid%dt,grid%dampcoef,grid%zdamp, & config_flags%damp_opt, & grid%xkmh,grid%xkmv,grid%xkhh,grid%xkhv,grid%bn2, & grid%khdif,grid%kvdif,grid%div, & grid%defor11,grid%defor22,grid%defor33,grid%defor12, & grid%defor13,grid%defor23, & grid%tke_2,p8w,t8w,th_phy, & t_phy,p_phy,moist,grid%dn,grid%dnw, & grid%dx,grid%dy,grid%rdz,grid%rdzw, & config_flags%mix_isotropic,num_moist, & grid%cf1, grid%cf2, grid%cf3, grid%warm_rain, & grid%mix_upper_bound, & grid%msftx, grid%msfty, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) ENDDO !$OMP END PARALLEL DO BENCH_END(calc_tke_tim) #ifdef DM_PARALLEL # include "HALO_EM_TKE_E.inc" #endif ENDIF #ifdef DM_PARALLEL # include "PERIOD_BDY_EM_PHY_BC.inc" IF ( config_flags%grid_fdda .eq. 1) THEN # include "PERIOD_BDY_EM_FDDA_BC.inc" ENDIF # include "PERIOD_BDY_EM_CHEM.inc" #endif BENCH_START(phy_bc_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call phy_bc' ) CALL phy_bc (config_flags,grid%div,grid%defor11,grid%defor22,grid%defor33, & grid%defor12,grid%defor13,grid%defor23, & grid%xkmh,grid%xkmv,grid%xkhh,grid%xkhv, & grid%tke_2, & grid%rublten, grid%rvblten, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) ENDDO !$OMP END PARALLEL DO BENCH_END(phy_bc_tim) #ifdef DM_PARALLEL !----------------------------------------------------------------------- ! ! MPP for some physics tendency, km, kh, deformation, and divergence ! ! * * * * * * * ! * * * * * * * * * * * * ! * * * * * * * * * * * * * * ! * + * * + * + * * + * * * * * + * * * ! * * * * * * * * * * * * * * ! * * * * * * * * * * * * ! * * * * * * * ! ! (for PBL) ! rublten x ! rvblten x ! ! (for FDDA) ! rundgdten x ! rvndgdten x ! ! (for TKE3) ! tke_2 x ! (for TKE5) ! tke_2 x ! ! (for diff_opt >= 1) ! defor11 x ! defor22 x ! defor12 x ! defor13 x ! defor23 x ! div x ! xkmv x ! xkmh x ! xkhv x ! xkhh x ! tke x ! !----------------------------------------------------------------------- !!****MARS: always include this HALO for Mars version ... IF ( ( config_flags%bl_pbl_physics .ge. 1 ) & .OR. ( config_flags%modif_wrf ) ) THEN ! IF ( config_flags%bl_pbl_physics .ge. 1 ) THEN # include "HALO_EM_PHYS_PBL.inc" ENDIF IF ( config_flags%grid_fdda .eq. 1) THEN # include "HALO_EM_FDDA.inc" ENDIF IF ( config_flags%diff_opt .ge. 1 ) THEN # include "HALO_EM_PHYS_DIFFUSION.inc" ENDIF IF ( config_flags%h_mom_adv_order <= 4 ) THEN # include "HALO_EM_TKE_3.inc" ELSE IF ( config_flags%h_mom_adv_order <= 6 ) THEN # include "HALO_EM_TKE_5.inc" ELSE WRITE(wrf_err_message,*)'solve_em: invalid h_mom_adv_order = ',config_flags%h_mom_adv_order CALL wrf_error_fatal(TRIM(wrf_err_message)) ENDIF #endif BENCH_START(update_phy_ten_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call update_phy_ten' ) CALL update_phy_ten(t_tendf, ru_tendf, rv_tendf,moist_tend, & scalar_tend, mu_tendf, & grid%rthraten,grid%rthblten,grid%rthcuten, & grid%rublten,grid%rvblten, & grid%rqvblten,grid%rqcblten,grid%rqiblten, & grid%rqvcuten,grid%rqccuten,grid%rqrcuten, & grid%rqicuten,grid%rqscuten,grid%RUNDGDTEN, & grid%RVNDGDTEN,grid%RTHNDGDTEN,grid%RQVNDGDTEN, & grid%RMUNDGDTEN, & num_moist,num_scalar,config_flags,rk_step, & grid%adv_moist_cond, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start, k_end ) END DO !$OMP END PARALLEL DO BENCH_END(update_phy_ten_tim) #ifdef PLANET ! do rayleigh (and zonal-average newtonian) damping during ! first iteration of RK loop only IF ( (config_flags%damp_opt == 101) .OR. & (config_flags%damp_opt == 103) ) THEN !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL damptop( grid%u_2, grid%v_2, grid%t_2, & grid%mut, grid%muu, grid%muv, & pi_phy, & t_tendf, ru_tendf, rv_tendf, P2SI, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start, k_end ) END DO !$OMP END PARALLEL DO END IF #endif IF( config_flags%diff_opt .eq. 2 .and. config_flags%km_opt .eq. 2 ) THEN BENCH_START(tke_rhs_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL tke_rhs ( tke_tend,grid%bn2, & config_flags,grid%defor11,grid%defor22, & grid%defor33, & grid%defor12,grid%defor13,grid%defor23, & grid%u_2,grid%v_2,grid%w_2,grid%div, & grid%tke_2,grid%mut, & th_phy,p_phy,p8w,t8w,grid%z,grid%fnm, & grid%fnp,grid%cf1,grid%cf2,grid%cf3, & grid%msftx,grid%msfty,grid%xkmh, & grid%xkmv,grid%xkhv,grid%rdx,grid%rdy, & grid%dx,grid%dy,grid%dt,grid%zx,grid%zy, & grid%rdz,grid%rdzw,grid%dn, & grid%dnw,config_flags%mix_isotropic, & grid%hfx, grid%qfx, moist(ims,kms,jms,P_QV), & grid%ustm, rho, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) ENDDO !$OMP END PARALLEL DO BENCH_END(tke_rhs_tim) ENDIF ! calculate vertical diffusion first and then horizontal ! (keep this order) IF(config_flags%diff_opt .eq. 2) THEN !!!!****MARS: vertical diffusion is done by the physics !!!!****MARS: a part si isfflx=1 (SGS completement fait par WRF) !!!!****MARS: ou si TKE_heat precisee dans la namelist ! IF ( (config_flags%bl_pbl_physics .eq. 0) & ! .AND. (.not. config_flags%modif_wrf ) ) THEN !! IF (config_flags%bl_pbl_physics .eq. 0) THEN !! !! IF ( ( config_flags%bl_pbl_physics .eq. 0 ) & .AND. ( ( config_flags%isfflx .ge. 1 ) & .OR. ( config_flags%tke_heat_flux .ne. 0.) ) ) THEN !! !! BENCH_START(vert_diff_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call vertical_diffusion_2 ' ) CALL vertical_diffusion_2( ru_tendf, rv_tendf, rw_tendf, & t_tendf, tke_tend, & moist_tend, num_moist, & chem_tend, num_chem, & scalar_tend, num_scalar, & grid%u_2, grid%v_2, & grid%t_2,grid%u_base,grid%v_base,grid%t_base,grid%qv_base, & grid%mut,grid%tke_2,config_flags, & grid%defor13,grid%defor23,grid%defor33, & grid%div, moist, chem, scalar, & grid%xkmv, grid%xkhv, config_flags%km_opt, & grid%fnm, grid%fnp, grid%dn, grid%dnw, grid%rdz, grid%rdzw, & grid%hfx, grid%qfx, grid%ustm, rho, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start, k_end ) ENDDO !$OMP END PARALLEL DO BENCH_END(vert_diff_tim) ENDIF ! BENCH_START(hor_diff_tim) !$OMP PARALLEL DO & !$OMP PRIVATE ( ij ) DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call horizontal_diffusion_2' ) CALL horizontal_diffusion_2( t_tendf, ru_tendf, rv_tendf, rw_tendf, & tke_tend, & moist_tend, num_moist, & chem_tend, num_chem, & scalar_tend, num_scalar, & grid%t_2, th_phy, & grid%mut, grid%tke_2, config_flags, & grid%defor11, grid%defor22, grid%defor12, & grid%defor13, grid%defor23, grid%div, & moist, chem, scalar, & grid%msfux,grid%msfuy, grid%msfvx,grid%msfvy, grid%msftx, & grid%msfty, grid%xkmh, grid%xkhh, config_flags%km_opt, & grid%rdx, grid%rdy, grid%rdz, grid%rdzw, & grid%fnm, grid%fnp, grid%cf1, grid%cf2, grid%cf3, & grid%zx, grid%zy, grid%dn, grid%dnw, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start , k_end ) ENDDO !$OMP END PARALLEL DO BENCH_END(hor_diff_tim) ENDIF !!!!****MARS MARS !!!!****MARS MARS ! IF ( grid%obs_nudge_opt .EQ. 1 ) THEN !# ifdef DM_PARALLEL !# include "HALO_OBS_NUDGE.inc" !#endif !!*********************************************************************** !! This section for obs nudging ! !$OMP PARALLEL DO & ! !$OMP PRIVATE ( ij ) ! ! DO ij = 1 , grid%num_tiles ! ! CALL fddaobs_driver (grid%grid_id, model_config_rec%grid_id, & ! model_config_rec%parent_id, config_flags%restart, & ! grid%obs_nudge_opt, & ! grid%obs_ipf_errob, & ! grid%obs_ipf_nudob, & ! grid%fdda_start, & ! grid%fdda_end, & ! grid%obs_nudge_wind, & ! grid%obs_nudge_temp, & ! grid%obs_nudge_mois, & ! grid%obs_nudge_pstr, & ! grid%obs_coef_wind, & ! grid%obs_coef_temp, & ! grid%obs_coef_mois, & ! grid%obs_coef_pstr, & ! grid%obs_rinxy, & ! grid%obs_rinsig, & ! grid%obs_npfi, & ! grid%obs_ionf, & ! grid%obs_nobs_prt, & ! grid%obs_idynin, & ! grid%obs_dtramp, & ! model_config_rec%cen_lat(1), & ! model_config_rec%cen_lon(1), & ! config_flags%truelat1, & ! config_flags%truelat2, & ! config_flags%map_proj, & ! model_config_rec%i_parent_start, & ! model_config_rec%j_parent_start, & ! grid%parent_grid_ratio, & ! grid%max_dom, grid%itimestep, & ! grid%dt, grid%gmt, grid%julday, grid%fdob, & ! grid%max_obs, & ! model_config_rec%nobs_ndg_vars, & ! model_config_rec%nobs_err_flds, & ! grid%fdob%nstat, grid%fdob%varobs, grid%fdob%errf, & ! grid%dx, grid%KPBL,grid%HT, & ! grid%mut, grid%muu, grid%muv, & ! grid%msftx, grid%msfty, grid%msfux, grid%msfuy, grid%msfvx, grid%msfvy, & ! p_phy, t_tendf, t0, & ! grid%u_2, grid%v_2, grid%t_2, & ! moist(ims,kms,jms,P_QV), & ! grid%pb, grid%p_top, grid%p, & ! grid%uratx, grid%vratx, grid%tratx, & ! ru_tendf, rv_tendf, & ! moist_tend(ims,kms,jms,P_QV), grid%obs_savwt, & ! ids,ide, jds,jde, kds,kde, & ! ims,ime, jms,jme, kms,kme, & ! grid%i_start(ij), min(grid%i_end(ij),ide-1), & ! grid%j_start(ij), min(grid%j_end(ij),jde-1), & ! k_start , min(k_end,kde-1) ) ! ! ENDDO ! !$OMP END PARALLEL DO ! ENDIF ! obs_nudge_opt .eq. 1 !! !!*********************************************************************** END SUBROUTINE first_rk_step_part2 END MODULE module_first_rk_step_part2