Ignore:
Timestamp:
Oct 10, 2016, 10:57:24 AM (8 years ago)
Author:
Ehouarn Millour
Message:

Making the slab work:

  • added a slab_heat_transp_mod module for horizontal diffusion and Ekman transport
  • added storage and output of relevent variables in phyredem, phyetat0, phy_output_ctrlout_mod, phys_output_write_mod
  • moved nslay (number of slab layers) out of dimphy into ocean_slab_mod.

FC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90

    r2610 r2656  
    99                     nbp, communicator, &
    1010                     punjours, pdayref,ptimestep, &
    11                      rlatu,rlatv,rlonu,rlonv,aire,cu,cv,      &
     11                     rlatudyn,rlatvdyn,rlonudyn,rlonvdyn,airedyn,cudyn,cvdyn, &
    1212                     prad,pg,pr,pcpp,iflag_phys)
    1313  USE dimphy, ONLY: init_dimphy
     
    4444  USE mod_phys_lmdz_omp_data, ONLY: klon_omp
    4545#endif
     46  USE ioipsl_getin_p_mod, ONLY: getin_p
     47  USE slab_heat_transp_mod, ONLY: ini_slab_transp_geom
    4648  IMPLICIT NONE
    4749
     
    5254
    5355  include "dimensions.h"
     56  include "paramet.h"
    5457  include "iniprint.h"
    5558  include "tracstoke.h"
     59  include "comgeom.h"
    5660
    5761  REAL, INTENT (IN) :: prad ! radius of the planet (m)
     
    6569  INTEGER, INTENT(IN) :: nbp ! number of physics columns for this MPI process
    6670  INTEGER, INTENT(IN) :: communicator ! MPI communicator
    67   REAL, INTENT (IN) :: rlatu(jj+1) ! latitudes of the physics grid
    68   REAL, INTENT (IN) :: rlatv(jj) ! latitude boundaries of the physics grid
    69   REAL, INTENT (IN) :: rlonv(ii+1) ! longitudes of the physics grid
    70   REAL, INTENT (IN) :: rlonu(ii+1) ! longitude boundaries of the physics grid
    71   REAL, INTENT (IN) :: aire(ii+1,jj+1) ! area of the dynamics grid (m2)
    72   REAL, INTENT (IN) :: cu((ii+1)*(jj+1)) ! cu coeff. (u_covariant = cu * u)
    73   REAL, INTENT (IN) :: cv((ii+1)*jj) ! cv coeff. (v_covariant = cv * v)
     71  REAL, INTENT (IN) :: rlatudyn(jj+1) ! latitudes of the physics grid
     72  REAL, INTENT (IN) :: rlatvdyn(jj) ! latitude boundaries of the physics grid
     73  REAL, INTENT (IN) :: rlonvdyn(ii+1) ! longitudes of the physics grid
     74  REAL, INTENT (IN) :: rlonudyn(ii+1) ! longitude boundaries of the physics grid
     75  REAL, INTENT (IN) :: airedyn(ii+1,jj+1) ! area of the dynamics grid (m2)
     76  REAL, INTENT (IN) :: cudyn((ii+1)*(jj+1)) ! cu coeff. (u_covariant = cu * u)
     77  REAL, INTENT (IN) :: cvdyn((ii+1)*jj) ! cv coeff. (v_covariant = cv * v)
    7478  INTEGER, INTENT (IN) :: pdayref ! reference day of for the simulation
    7579  REAL, INTENT (IN) :: ptimestep !physics time step (s)
     
    8084  CHARACTER (LEN=20) :: modname = 'iniphysiq'
    8185  CHARACTER (LEN=80) :: abort_message
    82 
     86 
     87  LOGICAL :: slab_hdiff
     88  INTEGER :: slab_ekman
     89  CHARACTER (LEN = 6) :: type_ocean
    8390
    8491#ifndef CPP_PARA
     
    9299  CALL inigeomphy(ii,jj,nlayer, &
    93100               nbp, communicator, &
    94                rlatu,rlatv, &
    95                rlonu,rlonv, &
    96                aire,cu,cv)
     101               rlatudyn,rlatvdyn, &
     102               rlonudyn,rlonvdyn, &
     103               airedyn,cudyn,cvdyn)
    97104
    98105  ! --> now initialize things specific to the phylmd physics package
     
    117124  ! Copy over "offline" settings
    118125  CALL init_phystokenc(offline,istphy)
     126
     127  ! Initialization for slab heat transport
     128  type_ocean="force"
     129  CALL getin_p('type_ocean',type_ocean)
     130  slab_hdiff=.FALSE.
     131  CALL getin_p('slab_hdiff',slab_hdiff)
     132  slab_ekman=0
     133  CALL getin_p('slab_ekman',slab_ekman)
     134  IF ((type_ocean=='slab').AND.(slab_hdiff.OR.(slab_ekman.GT.0))) THEN
     135     CALL ini_slab_transp_geom(ip1jm,ip1jmp1,unsairez,fext,unsaire,&
     136                                  cu,cuvsurcv,cv,cvusurcu, &
     137                                  aire,apoln,apols, &
     138                                  aireu,airev)
     139  END IF
    119140
    120141  ! Initialize tracer names, numbers, etc. for physics
     
    159180#ifdef INCA
    160181     CALL init_inca_dim(klon_omp,nbp_lev,nbp_lon,nbp_lat - 1, &
    161           rlonu,rlatu,rlonv,rlatv)
     182          rlonudyn,rlatudyn,rlonvdyn,rlatvdyn)
    162183#endif
    163184  END IF
Note: See TracChangeset for help on using the changeset viewer.