Changeset 356


Ignore:
Timestamp:
09/03/15 13:45:52 (9 years ago)
Author:
dubos
Message:

Moved Schmidt transform after grid optimization ; pass correct mesh info to XIOS

Location:
codes/icosagcm/trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/etat0_dcmip3.f90

    r353 r356  
    3535               ulon(ij,l),ulat(ij,l),dummy,Temp(ij,l),dummy,dummy,dummy,dummy) 
    3636       END DO 
     37       q(:,l,:)=0. 
    3738    END DO 
    38     q(:,:,:)=0. 
     39     
    3940  END SUBROUTINE compute_etat0 
    4041 
  • codes/icosagcm/trunk/src/geometry.f90

    r324 r356  
    11MODULE geometry 
    22  USE field_mod 
    3    
     3  IMPLICIT NONE 
     4 
    45  TYPE t_geometry 
    56    TYPE(t_field),POINTER :: centroid(:) 
     
    205206  END SUBROUTINE update_circumcenters 
    206207 
     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 
    207244  SUBROUTINE optimize_geometry 
    208245  USE metric 
     
    303340  END SUBROUTINE optimize_geometry 
    304341 
     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   
    305367  SUBROUTINE set_geometry 
    306368  USE metric 
     
    329391       
    330392    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 
    332399    DO ind=1,ndomain 
    333400      IF (.NOT. assigned_domain(ind)  .OR. .NOT. is_omp_level_master ) CYCLE 
  • codes/icosagcm/trunk/src/metric.f90

    r352 r356  
    5555CONTAINS 
    5656 
    57   SUBROUTINE remap_schmidt 
     57  SUBROUTINE remap_schmidt_glo ! FIXME : not called any more 
    5858    USE spherical_geom_mod 
    5959    USE getin_mod 
     
    8282       END DO 
    8383    END DO 
    84   END SUBROUTINE remap_schmidt 
     84  END SUBROUTINE remap_schmidt_glo 
    8585 
    8686  SUBROUTINE allocate_metric 
     
    858858!    CALL compute_face 
    859859    CALL compute_face_projection 
    860     CALL remap_schmidt 
     860!    CALL remap_schmidt_glo ! replaced by call to remap_schmidt_loc in set_geometry 
    861861 
    862862    CALL set_index 
  • codes/icosagcm/trunk/src/observable.f90

    r354 r356  
    3737    CALL output_field("ulat",f_buf_ulat) 
    3838    CALL output_field("ps",f_ps) 
     39    CALL output_field("Ai",geom%Ai) 
    3940    !       CALL output_field("dps",f_dps) 
    4041    !CALL output_field("mass",f_mass) 
Note: See TracChangeset for help on using the changeset viewer.