Changeset 683 for codes/icosagcm/devel
- Timestamp:
- 03/07/18 11:18:39 (6 years ago)
- Location:
- codes/icosagcm/devel/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/kernels_unst/coriolis.k90
r658 r683 180 180 ! this VLOOP iterates over the TRISK stencil 181 181 SELECT CASE(trisk_deg(edge)) 182 CASE( 10)182 CASE(4) 183 183 !DIR$ SIMD 184 184 DO l = 1, llm … … 196 196 edge_trisk = trisk(4,edge) 197 197 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 198 itrisk = 5199 edge_trisk = trisk(5,edge)200 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk))201 itrisk = 6202 edge_trisk = trisk(6,edge)203 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk))204 itrisk = 7205 edge_trisk = trisk(7,edge)206 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk))207 itrisk = 8208 edge_trisk = trisk(8,edge)209 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk))210 itrisk = 9211 edge_trisk = trisk(9,edge)212 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk))213 itrisk = 10214 edge_trisk = trisk(10,edge)215 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk))216 198 du(l,edge) = du(l,edge) + .5*du_trisk 217 199 END DO 218 CASE( 4)200 CASE(10) 219 201 !DIR$ SIMD 220 202 DO l = 1, llm … … 231 213 itrisk = 4 232 214 edge_trisk = trisk(4,edge) 215 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 216 itrisk = 5 217 edge_trisk = trisk(5,edge) 218 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 219 itrisk = 6 220 edge_trisk = trisk(6,edge) 221 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 222 itrisk = 7 223 edge_trisk = trisk(7,edge) 224 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 225 itrisk = 8 226 edge_trisk = trisk(8,edge) 227 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 228 itrisk = 9 229 edge_trisk = trisk(9,edge) 230 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 231 itrisk = 10 232 edge_trisk = trisk(10,edge) 233 233 du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 234 234 du(l,edge) = du(l,edge) + .5*du_trisk -
codes/icosagcm/devel/src/unstructured/data_unstructured.F90
r681 r683 61 61 num(:), & ! number of cells to send to / receive from other MPI ranks 62 62 cells(:) ! local indices of cells to send/receive 63 DBL, ALLOCATABLE :: buf 1(:), buf2(:,:), buf3(:,:,:)63 DBL, ALLOCATABLE :: buf2(:,:) 64 64 END TYPE Halo_transfer 65 65 TYPE(Halo_transfer), TARGET :: send_info(transfer_max), recv_info(transfer_max) -
codes/icosagcm/devel/src/unstructured/timestep_unstructured.F90
r681 r683 135 135 FIELD_UL :: bufu1, bufu2, bufu3,bufu4 136 136 DBL :: time1,time2 137 INTEGER :: step, stage, i j137 INTEGER :: step, stage, iq, ij 138 138 139 139 !CALL CPU_TIME(time1) … … 153 153 154 154 CALL update_halo(transfer_primal, rhodz) 155 CALL update_halo(transfer_primal, theta_rhodz(:,:,1)) ! FIXME 155 DO iq=1, nqdyn 156 CALL update_halo(transfer_primal, theta_rhodz(:,:,iq)) 157 END DO 156 158 157 159 IF(hydrostatic) THEN … … 172 174 173 175 CALL compute_caldyn_slow_hydro(rhodz,theta,u, berni,hflux,du_slow(:,:,stage)) 174 CALL compute_coriolis(hflux,theta,qu, bufu1, drhodz(:,:,stage), dtheta_rhodz(:,:,:,stage),du_slow(:,:,stage)) 176 CALL compute_coriolis(hflux,theta,qu, bufu1, drhodz(:,:,stage), & 177 dtheta_rhodz(:,:,:,stage),du_slow(:,:,stage)) 175 178 IF(caldyn_eta == eta_mass) THEN 176 179 CALL caldyn_vert(drhodz(:,:,stage),rhodz,theta,u, & … … 179 182 180 183 ELSE ! NH 184 CALL update_halo(transfer_primal, geopot) 185 CALL update_halo(transfer_primal, W) 186 181 187 CALL compute_theta(mass_col,rhodz,theta_rhodz, theta) 182 188 CALL compute_caldyn_solver(tauj(stage),rhodz,theta, bufm1,bufm2,bufm3, pk,geopot,W, & 183 189 dPhi_fast(:,:,stage), dW_fast(:,:,stage), du_fast(:,:,stage)) 190 184 191 CALL compute_caldyn_fast(tauj(stage), pk,berni,theta,geopot, du_fast(:,:,stage),u) 192 CALL update_halo(transfer_edge, u) 185 193 CALL compute_pvort_only(rhodz,u,qv,qu) 186 CALL compute_caldyn_slow_NH(u,rhodz,geopot,W, bufm1,bufm2,bufm3,bufu1,bufu2,bufu3,bufu4, hflux, & 194 CALL update_halo(transfer_edge, qu) 195 196 CALL compute_caldyn_slow_NH(u,rhodz,geopot,W, bufm1,bufm2,bufm3, & 197 bufu1,bufu2,bufu3,bufu4, hflux, & 187 198 du_slow(:,:,stage), dPhi_slow(:,:,stage), dW_slow(:,:,stage)) 188 CALL compute_coriolis(hflux,theta,qu, bufu1, drhodz(:,:,stage),dtheta_rhodz(:,:,:,stage), du_slow(:,:,stage)) 199 CALL compute_coriolis(hflux,theta,qu, bufu1, & 200 drhodz(:,:,stage),dtheta_rhodz(:,:,:,stage), du_slow(:,:,stage)) 189 201 IF(caldyn_eta == eta_mass) THEN 190 202 CALL caldyn_vert(drhodz(:,:,stage),rhodz,theta,u, & … … 298 310 CALL xios_get_handle("icosagcm",ctx_hdl) 299 311 CALL xios_set_current_context(ctx_hdl) 300 ! CALL xios_set_axis_attr("lev",n_glo=llm ,value=lev_value) ;301 ! CALL xios_set_axis_attr("levp1",n_glo=llm+1 ,value=lev_valuep1) ;302 ! CALL xios_set_axis_attr("nq",n_glo=nqtot, value=nq_value) ;303 ! CALL xios_set_domaingroup_attr("i",ni_glo=ncell_tot, ibegin=displ, ni=ncell)304 ! CALL xios_set_domaingroup_attr("i", data_dim=1, type='unstructured' , nvertex=6, i_index=ind_glo)305 ! CALL xios_set_domaingroup_attr("i",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat)306 ! CALL xios_set_domain_attr("u",ni_glo=ncell_tot, ibegin=displ, ni=ncell)307 ! CALL xios_set_domain_attr("u", data_dim=1, type='unstructured' , nvertex=2, i_index=ind_glo)308 ! CALL xios_set_domain_attr("u",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat)309 ! CALL xios_set_domain_attr("v",ni_glo=ncell_tot, ibegin=displ, ni=ncell)310 ! CALL xios_set_domain_attr("v", data_dim=1, type='unstructured' , nvertex=3)311 ! CALL xios_set_domain_attr("v",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat)312 ! CALL xios_set_timestep(dtime)313 ! CALL xios_set_fieldgroup_attr("standard_output", freq_op=itau_out*xios_timestep, freq_offset=(itau_out-1)*xios_timestep)314 ! CALL xios_close_context_definition()315 316 ! PRINT *, 'Read data'317 ! CALL xios_recv_field(name,field)318 319 ! PRINT *,'Write data'320 ! CALL xios_send_field(name,field_tmp)321 322 ! PRINT *, 'Flush to disk, clean up and die'323 ! CALL xios_context_finalize324 312 END SUBROUTINE setup_xios 325 ! 313 326 314 SUBROUTINE call_xios_set_timestep(dt) BINDC(xios_set_timestep) 327 315 DBL, VALUE :: dt
Note: See TracChangeset
for help on using the changeset viewer.