- Timestamp:
- 01/21/20 00:16:21 (4 years ago)
- Location:
- codes/icosagcm/devel/src/physics
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/physics/physics.f90
r1007 r1011 170 170 ! du_phys increases by u(after physics) - u (before physics) 171 171 CALL add_du_phys(-1., f_ue) 172 172 173 173 SELECT CASE(phys_type) 174 174 CASE(phys_HS94) … … 179 179 CALL physics_external(it ,f_phis, f_ps, f_theta_rhodz, f_ue, f_wflux, f_q) 180 180 CASE DEFAULT 181 CALL transfert_request(f_ue, req_e1_vect) 181 182 CALL physics_column(it, f_phis, f_geopot, f_ps, f_theta_rhodz, f_ue, f_q) 182 183 END SELECT … … 239 240 INTEGER :: it, ind 240 241 242 physics_inout%it = it 243 241 244 CALL theta_rhodz2temperature(f_ps,f_theta_rhodz,f_temp) 242 245 … … 281 284 dulon=f_dulon(ind) 282 285 dulat=f_dulat(ind) 286 ! unpack_physics updates temp and q ; a transfer is required before updating u 283 287 CALL unpack_physics(pack_info(ind), ps, temp, q, dulon, dulat) 284 288 END DO … … 323 327 324 328 !$OMP BARRIER 325 CALL compute_pression(ps,p,0) 329 CALL compute_pression(ps,p,0) ! pressure at interfaces 326 330 !$OMP BARRIER 327 331 CALL compute_exner(ps,p,pks,pk,0) -
codes/icosagcm/devel/src/physics/physics_interface.f90
r741 r1011 7 7 TYPE t_physics_inout 8 8 ! Input, time-independent 9 INTEGER :: ngrid 9 INTEGER :: ngrid, it 10 10 REAL(rstd) :: dt_phys 11 REAL(rstd), DIMENSION(:), POINTER:: Ai, lon, lat, phis11 REAL(rstd), DIMENSION(:), ALLOCATABLE :: Ai, lon, lat, phis 12 12 ! Input, time-dependent 13 REAL(rstd), DIMENSION(:,:), POINTER:: geopot, p, pk, Temp, ulon, ulat14 REAL(rstd), DIMENSION(:,:,:), POINTER:: q13 REAL(rstd), DIMENSION(:,:), ALLOCATABLE :: geopot, p, pk, Temp, ulon, ulat 14 REAL(rstd), DIMENSION(:,:,:), ALLOCATABLE :: q 15 15 ! Output arrays 16 REAL(rstd), DIMENSION(:,:), POINTER:: dTemp, dulon, dulat17 REAL(rstd), DIMENSION(:,:,:), POINTER:: dq16 REAL(rstd), DIMENSION(:,:), ALLOCATABLE :: dTemp, dulon, dulat 17 REAL(rstd), DIMENSION(:,:,:), ALLOCATABLE :: dq 18 18 END TYPE t_physics_inout 19 19 … … 165 165 166 166 CASE DEFAULT ! Copy non-halo points only, as contiguous segments (works) 167 n =0167 n(:)=0 168 168 n(jj_begin:jj_end)=COUNT(own(ii_begin:ii_end,jj_begin:jj_end),1) 169 169 ngrid=SUM(n) … … 185 185 DO i=ii_begin,ii_end 186 186 IF(own(i,j)) THEN 187 info%n(jj)=n(j) 188 info%k(jj)=k 189 info%ij(jj) = iim*(j-1)+i 187 info%n(jj)=n(j) ! size of segment 188 info%k(jj)=k ! start index in packed array 189 info%ij(jj) = iim*(j-1)+i ! start index in unpacked array 190 190 IF(COUNT(own(i:i+n(j)-1,j)) /= n(j)) STOP 191 191 EXIT
Note: See TracChangeset
for help on using the changeset viewer.