Changeset 889
- Timestamp:
- 06/13/19 10:12:33 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/physics/physics_external.F90
r873 r889 34 34 35 35 CALL initialize_external_physics 36 !$OMP PARALLEL 36 37 CALL allocate_field(f_theta_rhodz0, field_t, type_real, llm, nqdyn, name='theta_rhodz0') 37 38 CALL allocate_field(f_u0,field_u,type_real,llm,name='u0') … … 46 47 phys_smooth_tendency=.FALSE. 47 48 CALL getin("phys_smooth_tendency",phys_smooth_tendency) 48 49 !$OMP END PARALLEL 49 50 50 51 END SUBROUTINE init_physics … … 88 89 89 90 IF (phys_smooth_tendency) THEN 90 91 91 92 IF (MOD(it_,itau_physics)==1) THEN 92 93 DO ind=1, ndomain … … 103 104 rhodz=f_rhodz(ind) 104 105 105 theta_rhodz0(:, :,1)=theta_rhodz(:,:,1)106 u0 =u107 q0 =q106 theta_rhodz0(:,ll_begin:ll_end,1)=theta_rhodz(:,ll_begin:ll_end,1) 107 u0(:,ll_begin:ll_end)=u(:,ll_begin:ll_end) 108 q0(:,ll_begin:ll_end,:)=q(:,ll_begin:ll_end,:) 108 109 CALL compute_rhodz(.TRUE., ps, rhodz) 109 110 ENDDO … … 129 130 rhodz=f_rhodz(ind) 130 131 131 dtheta_rhodz(:,:,1)=(theta_rhodz(:,:,1)-theta_rhodz0(:,:,1))/itau_physics 132 du=(u-u0)/itau_physics 133 132 dtheta_rhodz(:,ll_begin:ll_end,1)=(theta_rhodz(:,ll_begin:ll_end,1)-theta_rhodz0(:,ll_begin:ll_end,1))/itau_physics 133 134 du(:,ll_begin:ll_end)=(u(:,ll_begin:ll_end)-u0(:,ll_begin:ll_end))/itau_physics 135 134 136 DO iq=1, nqtot 135 dq(:, :,iq)=((q(:,:,iq)-q0(:,:,iq))/itau_physics)*rhodz(:,:)137 dq(:,ll_begin:ll_end,iq)=((q(:,ll_begin:ll_end,iq)-q0(:,ll_begin:ll_end,iq))/itau_physics)*rhodz(:,ll_begin:ll_end) 136 138 ENDDO 137 139 138 theta_rhodz(:, :,1)=theta_rhodz0(:,:,1)139 u =u0140 q =q0140 theta_rhodz(:,ll_begin:ll_end,1)=theta_rhodz0(:,ll_begin:ll_end,1) 141 u(:,ll_begin:ll_end)=u0(:,ll_begin:ll_end) 142 q(:,ll_begin:ll_end,:)=q0(:,ll_begin:ll_end,:) 141 143 ENDDO 142 144 ENDIF … … 156 158 ps=f_ps(ind) 157 159 158 u =u+du159 theta_rhodz =theta_rhodz+dtheta_rhodz160 u(:,ll_begin:ll_end)=u(:,ll_begin:ll_end)+du(:,ll_begin:ll_end) 161 theta_rhodz(:,ll_begin:ll_end,1)=theta_rhodz(:,ll_begin:ll_end,1)+dtheta_rhodz(:,ll_begin:ll_end,1) 160 162 CALL compute_rhodz(.TRUE., ps, rhodz) 161 163 DO iq=1, nqtot 162 q(:, :,iq)=q(:,:,iq)+dq(:,:,iq)/rhodz(:,:)164 q(:,ll_begin:ll_end,iq)=q(:,ll_begin:ll_end,iq)+dq(:,ll_begin:ll_end,iq)/rhodz(:,ll_begin:ll_end) 163 165 ENDDO 164 166 ENDDO 167 !$OMP BARRIER 165 168 166 169 ELSE
Note: See TracChangeset
for help on using the changeset viewer.