Changeset 356 for codes/icosagcm/trunk/src/geometry.f90
- Timestamp:
- 09/03/15 13:45:52 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/geometry.f90
r324 r356 1 1 MODULE geometry 2 2 USE field_mod 3 3 IMPLICIT NONE 4 4 5 TYPE t_geometry 5 6 TYPE(t_field),POINTER :: centroid(:) … … 205 206 END SUBROUTINE update_circumcenters 206 207 208 SUBROUTINE remap_schmidt_loc 209 USE spherical_geom_mod 210 USE getin_mod 211 USE omp_para 212 USE domain_mod 213 USE dimensions 214 IMPLICIT NONE 215 INTEGER :: ind,i,j,n 216 REAL(rstd) :: schmidt_factor, schmidt_lon, schmidt_lat 217 218 ! Schmidt transform parameters 219 schmidt_factor = 1. 220 CALL getin('schmidt_factor', schmidt_factor) 221 schmidt_factor = schmidt_factor**2. 222 223 schmidt_lon = 0. 224 CALL getin('schmidt_lon', schmidt_lon) 225 schmidt_lon = schmidt_lon * pi/180. 226 227 schmidt_lat = 45. 228 CALL getin('schmidt_lat', schmidt_lat) 229 schmidt_lat = schmidt_lat * pi/180. 230 231 DO ind=1,ndomain 232 IF (.NOT. assigned_domain(ind) .OR. .NOT. is_omp_level_master) CYCLE 233 CALL swap_dimensions(ind) 234 CALL swap_geometry(ind) 235 DO j=jj_begin,jj_end 236 DO i=ii_begin,ii_end 237 n=(j-1)*iim+i 238 CALL schmidt_transform(xyz_i(n,:), schmidt_factor, schmidt_lon, schmidt_lat) 239 ENDDO 240 ENDDO 241 ENDDO 242 END SUBROUTINE remap_schmidt_loc 243 207 244 SUBROUTINE optimize_geometry 208 245 USE metric … … 303 340 END SUBROUTINE optimize_geometry 304 341 342 SUBROUTINE update_domain 343 ! copy position of generators and vertices back into domain(:)%xyz/vertex 344 ! so that XIOS gets the right values 345 USE omp_para 346 USE dimensions 347 USE domain_mod 348 INTEGER :: ind,i,j,k,n 349 TYPE(t_domain),POINTER :: d 350 DO ind=1,ndomain 351 IF (.NOT. assigned_domain(ind) .OR. .NOT. is_omp_level_master ) CYCLE 352 d=>domain(ind) 353 CALL swap_dimensions(ind) 354 CALL swap_geometry(ind) 355 DO j=jj_begin,jj_end 356 DO i=ii_begin,ii_end 357 n=(j-1)*iim+i 358 d%xyz(:,i,j)=xyz_i(n,:) 359 DO k=0,5 360 d%vertex(:,k,i,j) = xyz_v(n+z_pos(k+1),:) 361 END DO 362 END DO 363 END DO 364 END DO 365 END SUBROUTINE update_domain 366 305 367 SUBROUTINE set_geometry 306 368 USE metric … … 329 391 330 392 CALL optimize_geometry 331 393 CALL remap_schmidt_loc 394 CALL update_circumcenters 395 ! copy position of generators and vertices back into domain(:)%xyz/vertex 396 ! so that XIOS gets the right values 397 CALL update_domain 398 332 399 DO ind=1,ndomain 333 400 IF (.NOT. assigned_domain(ind) .OR. .NOT. is_omp_level_master ) CYCLE
Note: See TracChangeset
for help on using the changeset viewer.