Changeset 2730 for LMDZ5/trunk/libf/phylmd/physiq_mod.F90
- Timestamp:
- Dec 14, 2016, 1:10:32 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/physiq_mod.F90
r2714 r2730 139 139 kh, kh_x, kh_w, & 140 140 ! 141 wake_k, & 141 142 ale_wake, alp_wake, & 142 143 wake_h, wake_omg, & … … 564 565 !pourquoi y'a pas de save?? 565 566 ! 566 INTEGER wake_k(klon) ! Wake sommet 567 !!! INTEGER, SAVE, DIMENSION(klon) :: wake_k 568 !!! !$OMP THREADPRIVATE(wake_k) 567 569 ! 568 570 !jyg< … … 782 784 !ym SAVE 783 785 ! 784 INTEGER itapcv 785 SAVE itapcv 786 !$OMP THREADPRIVATE(itapcv )786 INTEGER itapcv, itapwk 787 SAVE itapcv, itapwk 788 !$OMP THREADPRIVATE(itapcv, itapwk) 787 789 788 790 !KE43 … … 1285 1287 itaprad = 0 1286 1288 itapcv = 0 1289 itapwk = 0 1287 1290 1288 1291 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 1313 1316 ENDIF 1314 1317 IF (nbapp_cv .EQ. 0) nbapp_cv=86400./dtime 1315 print *,'physiq, nbapp_cv ',nbapp_cv 1318 IF (nbapp_wk .EQ. 0) nbapp_wk=86400./dtime 1319 print *,'physiq, nbapp_cv, nbapp_wk ',nbapp_cv,nbapp_wk 1316 1320 IF (MOD(INT(86400./dtime),nbapp_cv).EQ.0) THEN 1317 1321 cvpas = NINT( 86400./dtime/nbapp_cv) … … 1324 1328 abort_message='nbre de pas de temps physique n est pas multiple ' & 1325 1329 // 'de nbapp_cv' 1330 call abort_physic(modname,abort_message,1) 1331 ENDIF 1332 IF (MOD(INT(86400./dtime),nbapp_wk).EQ.0) THEN 1333 wkpas = NINT( 86400./dtime/nbapp_wk) 1334 print *,'physiq, wkpas ',wkpas 1335 ELSE 1336 WRITE(lunout,*) 'le nombre de pas de temps physique doit etre un ', & 1337 'multiple de nbapp_wk' 1338 WRITE(lunout,*) 'changer nbapp_wk ou alors commenter ce test ', & 1339 'mais 1+1<>2' 1340 abort_message='nbre de pas de temps physique n est pas multiple ' & 1341 // 'de nbapp_wk' 1326 1342 call abort_physic(modname,abort_message,1) 1327 1343 ENDIF … … 2317 2333 IF (prt_level.ge.1) write(lunout,*) 'omega(igout, :) = ', & 2318 2334 omega(igout, :) 2319 2320 2335 ! 2321 2336 ! Appel de la convection tous les "cvpas" … … 2574 2589 ! . d_u_con, d_v_con) 2575 2590 2591 !jyg Reinitialize proba_notrig and itapcv when convection has been called 2592 proba_notrig(:) = 1. 2576 2593 itapcv = 0 2577 2594 ENDIF ! (MOD(itapcv,cvpas).EQ.0) 2595 ! 2578 2596 itapcv = itapcv+1 2579 2597 … … 2640 2658 IF (iflag_wake>=1) THEN 2641 2659 ! 2642 ! Call wakes only when convection has been called 2643 IF (itapcv .EQ. 1) THEN 2644 ! 2645 DO k=1,klev 2646 DO i=1,klon 2647 dt_dwn(i,k) = ftd(i,k) 2648 dq_dwn(i,k) = fqd(i,k) 2649 M_dwn(i,k) = dnwd0(i,k) 2650 M_up(i,k) = upwd(i,k) 2651 dt_a(i,k) = d_t_con(i,k)/dtime - ftd(i,k) 2652 dq_a(i,k) = d_q_con(i,k)/dtime - fqd(i,k) 2653 ENDDO 2654 ENDDO 2655 2656 IF (iflag_wake==2) THEN 2657 ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.) 2658 DO k = 1,klev 2659 dt_dwn(:,k)= dt_dwn(:,k)+ & 2660 ok_wk_lsp(:)*(d_t_eva(:,k)+d_t_lsc(:,k))/dtime 2661 dq_dwn(:,k)= dq_dwn(:,k)+ & 2662 ok_wk_lsp(:)*(d_q_eva(:,k)+d_q_lsc(:,k))/dtime 2663 ENDDO 2664 ELSEIF (iflag_wake==3) THEN 2665 ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.) 2666 DO k = 1,klev 2660 ! 2661 ! Call wakes every "wkpas" step 2662 ! 2663 IF (MOD(itapwk,wkpas).EQ.0) THEN 2664 ! 2665 DO k=1,klev 2667 2666 DO i=1,klon 2668 IF (rneb(i,k)==0.) THEN 2669 ! On ne tient compte des tendances qu'en dehors des 2670 ! nuages (c'est-\`a-dire a priri dans une region ou 2671 ! l'eau se reevapore). 2672 dt_dwn(i,k)= dt_dwn(i,k)+ & 2673 ok_wk_lsp(i)*d_t_lsc(i,k)/dtime 2674 dq_dwn(i,k)= dq_dwn(i,k)+ & 2675 ok_wk_lsp(i)*d_q_lsc(i,k)/dtime 2676 ENDIF 2667 dt_dwn(i,k) = ftd(i,k) 2668 dq_dwn(i,k) = fqd(i,k) 2669 M_dwn(i,k) = dnwd0(i,k) 2670 M_up(i,k) = upwd(i,k) 2671 dt_a(i,k) = d_t_con(i,k)/dtime - ftd(i,k) 2672 dq_a(i,k) = d_q_con(i,k)/dtime - fqd(i,k) 2677 2673 ENDDO 2678 2674 ENDDO 2679 ENDIF 2680 2681 ! 2682 !calcul caracteristiques de la poche froide 2683 CALL calWAKE (iflag_wake_tend, paprs, pplay, dtime, & 2684 t_seri, q_seri, omega, & 2685 dt_dwn, dq_dwn, M_dwn, M_up, & 2686 dt_a, dq_a, & 2687 sigd, & 2688 wake_deltat, wake_deltaq, wake_s, wake_dens, & 2689 wake_dth, wake_h, & 2690 wake_pe, wake_fip, wake_gfl, & 2691 d_t_wake, d_q_wake, & 2692 wake_k, t_x, q_x, & 2693 wake_omgbdth, wake_dp_omgb, & 2694 wake_dtKE, wake_dqKE, & 2695 wake_omg, wake_dp_deltomg, & 2696 wake_spread, wake_Cstar, d_deltat_wk_gw, & 2697 d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk) 2698 ! 2699 ENDIF ! (mod(itapcv,cvpas) .EQ. 1) 2675 2676 IF (iflag_wake==2) THEN 2677 ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.) 2678 DO k = 1,klev 2679 dt_dwn(:,k)= dt_dwn(:,k)+ & 2680 ok_wk_lsp(:)*(d_t_eva(:,k)+d_t_lsc(:,k))/dtime 2681 dq_dwn(:,k)= dq_dwn(:,k)+ & 2682 ok_wk_lsp(:)*(d_q_eva(:,k)+d_q_lsc(:,k))/dtime 2683 ENDDO 2684 ELSEIF (iflag_wake==3) THEN 2685 ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.) 2686 DO k = 1,klev 2687 DO i=1,klon 2688 IF (rneb(i,k)==0.) THEN 2689 ! On ne tient compte des tendances qu'en dehors des 2690 ! nuages (c'est-\`a-dire a priri dans une region ou 2691 ! l'eau se reevapore). 2692 dt_dwn(i,k)= dt_dwn(i,k)+ & 2693 ok_wk_lsp(i)*d_t_lsc(i,k)/dtime 2694 dq_dwn(i,k)= dq_dwn(i,k)+ & 2695 ok_wk_lsp(i)*d_q_lsc(i,k)/dtime 2696 ENDIF 2697 ENDDO 2698 ENDDO 2699 ENDIF 2700 2701 ! 2702 !calcul caracteristiques de la poche froide 2703 CALL calWAKE (iflag_wake_tend, paprs, pplay, dtime, & 2704 t_seri, q_seri, omega, & 2705 dt_dwn, dq_dwn, M_dwn, M_up, & 2706 dt_a, dq_a, & 2707 sigd, & 2708 wake_deltat, wake_deltaq, wake_s, wake_dens, & 2709 wake_dth, wake_h, & 2710 wake_pe, wake_fip, wake_gfl, & 2711 d_t_wake, d_q_wake, & 2712 wake_k, t_x, q_x, & 2713 wake_omgbdth, wake_dp_omgb, & 2714 wake_dtKE, wake_dqKE, & 2715 wake_omg, wake_dp_deltomg, & 2716 wake_spread, wake_Cstar, d_deltat_wk_gw, & 2717 d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk) 2718 ! 2719 !jyg Reinitialize itapwk when wakes have been called 2720 itapwk = 0 2721 ENDIF ! (MOD(itapwk,wkpas).EQ.0) 2722 ! 2723 itapwk = itapwk+1 2700 2724 ! 2701 2725 !----------------------------------------------------------------------- … … 2705 2729 !------------------------------------------------------------------------ 2706 2730 2707 !Increment Wake state variables2731 ! Increment Wake state variables 2708 2732 IF (iflag_wake_tend .GT. 0.) THEN 2709 2733
Note: See TracChangeset
for help on using the changeset viewer.