Ignore:
Timestamp:
12/15/14 08:59:31 (9 years ago)
Author:
millour
Message:

Add third possibility for sponge layer, iflag_sponge=3, for a
sponge layer extending over the 'nb_sponge_layers' topmost layers.
EM

Location:
codes/icosagcm/branches/SATURN_DYNAMICO
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/sponge.f90

    r298 r309  
    88                               !1 --> for sponge over 4 topmost layers 
    99                               !2 --> for sponge from top to ~1% of top layer pressure 
     10                               !3 --> for sponge over topmost nb_sponge_layers 
    1011  INTEGER,SAVE :: mode_sponge !1 --> u and v relax towards 0 
    1112                              !2 --> u and v relax towards their zonal mean 
    1213                              !3 --> u,v and pot. temp. relax towards their zonal mean 
    13 !$OMP THREADPRIVATE(tau_sponge,iflag_sponge,mode_sponge) 
     14  INTEGER,SAVE :: nb_sponge_layers ! number of layers over which the sponge extends 
     15!$OMP THREADPRIVATE(tau_sponge,iflag_sponge,mode_sponge,nb_sponge_layers) 
    1416  REAL,ALLOCATABLE,SAVE :: rdamp(:) ! quenching coefficient 
    1517  REAL,ALLOCATABLE,SAVE:: lambda(:) ! inverse or quenching time scale (Hz) 
     
    2931    tau_sponge = 1.e-4 
    3032    CALL getin("tau_sponge",tau_sponge) 
    31     IF (is_mpi_master .AND. omp_master) PRINT*,'tau_sponge = ',tau_sponge 
     33    PRINT*,'tau_sponge = ',tau_sponge 
    3234 
    3335    iflag_sponge = 0 
    3436    CALL getin("iflag_sponge",iflag_sponge) 
    35     IF (is_mpi_master .AND. omp_master) PRINT*,'iflag_sponge = ',iflag_sponge 
     37    PRINT*,'iflag_sponge = ',iflag_sponge 
    3638     
    3739    mode_sponge = 1 
    3840    CALL getin("mode_sponge",mode_sponge) 
    39     IF (is_mpi_master .AND. omp_master) PRINT*,'mode_sponge = ',mode_sponge 
     41    PRINT*,'mode_sponge = ',mode_sponge 
     42 
     43    IF (iflag_sponge==3) THEN 
     44      nb_sponge_layers=1 
     45      call getin("nb_sponge_layers",nb_sponge_layers) 
     46    ENDIF 
    4047 
    4148    IF (iflag_sponge == 0) THEN 
    42       IF (is_mpi_master .AND. omp_master) PRINT*,'init_sponge: no sponge' 
     49      PRINT*,'init_sponge: no sponge' 
    4350      RETURN 
    4451    ENDIF 
     
    5966! higher than 100 times the topmost layer pressure 
    6067        lambda(:)=tau_sponge*max(presnivs(llm)/presnivs(:)-0.01,0.) 
     68    ELSE IF (iflag_sponge == 3) THEN 
     69        lambda(:)=0. 
     70        DO l = llm,llm-nb_sponge_layers+1,-1 
     71          lambda(l)=tau_sponge/(2.**(llm-l)) 
     72        ENDDO 
    6173    ELSE 
    6274      PRINT*,'Bad selector for variable iflag_sponge : <',iflag_sponge,             & 
    63             '> options are 0,1,2' 
     75            '> options are 0,1,2,3' 
    6476      STOP 
    6577    ENDIF 
     
    7284 
    7385    IF (is_mpi_master) THEN 
    74       PRINT*,'lambda = ' 
     86      PRINT*,'init_sponge: l, lambda(l), rdamp(l):' 
    7587      DO l=ll_begin,ll_end 
    76         PRINT*,l,lambda(l) 
    77       ENDDO 
    78       PRINT*,'rdamp = ' 
    79       DO l=ll_begin,ll_end 
    80         PRINT*,l,rdamp(l) 
     88        PRINT*,l,lambda(l),rdamp(l) 
    8189      ENDDO 
    8290    ENDIF 
  • codes/icosagcm/branches/SATURN_DYNAMICO/TEST/run_icosa.def

    r282 r309  
    146146### iflag_sponge=1 for sponge over 4 topmost layers 
    147147### iflag_sponge=2 for sponge from top to ~1% of top layer pressure 
     148### iflag_sponge=3 for sponge over topmost 'nb_sponge_layers' 
    148149### tau_sponge --> damping frequency at last layer 
    149150### e-5 medium / e-4 strong yet reasonable / e-3 very strong 
     
    153154iflag_sponge = 1 
    154155tau_sponge = 1.e-4 
     156# 'nb_sponge_layers', used only when iflag_sponge = 3 
     157nb_sponge_layers = 10 
    155158mode_sponge = 1 
    156159 
Note: See TracChangeset for help on using the changeset viewer.