Changeset 1046 for codes/icosagcm/trunk/src/physics/physics.f90
- Timestamp:
- 08/20/20 16:22:41 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/physics/physics.f90
r953 r1046 113 113 114 114 !$OMP PARALLEL 115 CALL allocate_field(f_du_phys,field_u,type_real,llm, name='du_phys' )115 CALL allocate_field(f_du_phys,field_u,type_real,llm, name='du_phys', ondevice=.TRUE.) 116 116 117 117 IF(is_mpi_root) PRINT *, 'phys_type = ',phys_type … … 119 119 120 120 !$OMP END PARALLEL 121 IF (phys_type /= phys_none ) THEN122 CALL abort_acc(" physics /= 'none'")121 IF (phys_type /= phys_none .AND. phys_type /= phys_HS94) THEN 122 CALL abort_acc("only phys_type == 'phys_none' or 'phys_HS94' supported") 123 123 END IF 124 124 END SUBROUTINE init_physics … … 133 133 CALL swap_geometry(ind) 134 134 du=f_du_phys(ind) 135 136 !$acc kernels default(present) async 135 137 du(:,ll_begin:ll_end) = 0. 138 !$acc end kernels 139 136 140 END DO 137 141 END SUBROUTINE zero_du_phys … … 141 145 TYPE(t_field),POINTER :: f_u(:) ! velocity field before/after call to physics 142 146 REAL(rstd), DIMENSION(:,:), POINTER :: u, du 143 INTEGER :: ind 147 INTEGER :: ind, ij 148 144 149 DO ind=1,ndomain 145 150 IF (.NOT. assigned_domain(ind)) CYCLE … … 148 153 du=f_du_phys(ind) 149 154 u=f_u(ind) 150 du(:,ll_begin:ll_end) = du(:,ll_begin:ll_end) + coef*u(:,ll_begin:ll_end) 155 156 !$acc parallel loop default(present) async 157 DO ij = ij_begin, ij_end 158 du(ij,ll_begin:ll_end) = du(ij,ll_begin:ll_end) + coef*u(ij,ll_begin:ll_end) 159 END DO 160 151 161 END DO 152 162 END SUBROUTINE add_du_phys … … 228 238 USE wind_mod 229 239 USE output_field_mod 230 CALL transfert_request(f_du_phys,req_e1_vect) 240 241 CALL transfert_request(f_du_phys,req_e1_vect) 242 CALL update_host_field(f_du_phys) 243 231 244 CALL un2ulonlat(f_du_phys, f_buf_ulon, f_buf_ulat, (1./(dt*itau_out))) 232 245 CALL output_field("dulon_phys",f_buf_ulon)
Note: See TracChangeset
for help on using the changeset viewer.