Changeset 5287 for LMDZ6/trunk


Ignore:
Timestamp:
Oct 28, 2024, 2:53:53 PM (2 months ago)
Author:
abarral
Message:

Turn fxy*.h into modules
Fix clesphys_rrtm.h name

Location:
LMDZ6/trunk/libf
Files:
2 edited
6 moved

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3d_common/fxy.f90

    r5285 r5287  
    1010
    1111  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    12 USE paramet_mod_h
     12  USE paramet_mod_h
     13  USE fxy_new_mod_h, ONLY: fx, fxprim, fy, fyprim
    1314IMPLICIT NONE
    1415
     
    2829   REAL :: rlonu(iip1),xprimu(iip1),rlonv(iip1),xprimv(iip1), &
    2930         rlonm025(iip1),xprimm025(iip1), rlonp025(iip1),xprimp025(iip1)
    30 
    31   INCLUDE "fxy_new.h"
    3231
    3332
  • LMDZ6/trunk/libf/dyn3d_common/fxysinus.f90

    r5285 r5287  
    99  USE comconst_mod, ONLY: pi
    1010  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    11 USE paramet_mod_h
     11  USE paramet_mod_h
     12  USE fxy_sin_mod_h, ONLY: fx, fxprim, fy, fyprim
    1213IMPLICIT NONE
    1314  !
     
    2728   REAL :: rlonu(iip1),xprimu(iip1),rlonv(iip1),xprimv(iip1), &
    2829         rlonm025(iip1),xprimm025(iip1), rlonp025(iip1),xprimp025(iip1)
    29 
    30   INCLUDE "fxy_sin.h"
    3130
    3231
  • LMDZ6/trunk/libf/grid/fxy_new_mod_h.f90

    r5286 r5287  
    1 !
    2 ! $Header$
    3 !
    4 !--------------------------------------------------------------
    5    REAL :: ripx
    6    REAL :: fx,fxprim,fy,fyprim,ri,rj,bigy
    7 !
    8 !....stretching in x...
    9 !
    10   ripx(  ri )= (ri-1.0) *2.*pi/REAL(iim)
    11   fx  (  ri )= ripx(ri) + transx  + &
    12         alphax * SIN( ripx(ri)+transx-pxo ) - pi
    13   fxprim(ri) = 2.*pi/REAL(iim)  * &
    14         ( 1.+ alphax * COS( ripx(ri)+transx-pxo ) )
     1! This module replaces grid/fxy_new.h
    152
    16 !....stretching in y...
    17 !
    18   bigy(rj)   = 2.* (REAL(jjp1)-rj ) *pi/jjm
    19   fy(rj)     =  ( bigy(rj) + transy  + &
    20         alphay * SIN( bigy(rj)+transy-pyo ) ) /2.  - pi/2.
    21   fyprim(rj) = ( pi/jjm ) * ( 1.+ &
    22         alphay * COS( bigy(rj)+transy-pyo ) )
     3MODULE fxy_new_mod_h
     4  USE comconst_mod, ONLY: pi
     5  USE serre_mod, ONLY: pxo, pyo, alphax, alphay, transx, transy
     6  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
     7  USE lmdz_paramet
     8  IMPLICIT NONE; PRIVATE
     9  PUBLIC fx, fxprim, fy, fyprim
    2310
    24   ! fy(rj)= pyo-pisjjm*(rj-transy)+coefalpha*SIN(depisjm*(rj-
    25 ! *  transy ))
    26 !   fyprim(rj)= pisjjm-pisjjm*coefy2* COS(depisjm*(rj-transy))
    27 !--------------------------------------------------------------
     11
     12CONTAINS
     13  REAL FUNCTION ripx(ri)
     14    REAL, INTENT(IN) :: ri
     15    ripx = (ri - 1.0) * 2. * pi / REAL(iim)
     16  END FUNCTION ripx
     17
     18  REAL FUNCTION fx(ri)
     19    REAL, INTENT(IN) :: ri
     20    fx = ripx(ri) + transx + alphax * SIN(ripx(ri) + transx - pxo) - pi
     21  END FUNCTION fx
     22
     23  REAL FUNCTION fxprim(ri)
     24    REAL, INTENT(IN) :: ri
     25    fxprim = 2. * pi / REAL(iim) * (1. + alphax * COS(ripx(ri) + transx - pxo))
     26  END FUNCTION fxprim
     27
     28  REAL FUNCTION bigy(rj)
     29    REAL, INTENT(IN) :: rj
     30    bigy = 2. * (REAL(jjp1) - rj) * pi / jjm
     31  END FUNCTION bigy
     32
     33  REAL FUNCTION fy(rj)
     34    REAL, INTENT(IN) :: rj
     35    fy = (bigy(rj) + transy + alphay * SIN(bigy(rj) + transy - pyo)) / 2. - pi / 2.
     36  END FUNCTION fy
     37
     38  REAL FUNCTION fyprim(rj)
     39    REAL, INTENT(IN) :: rj
     40    fyprim = (pi / jjm) * (1. + alphay * COS(bigy(rj) + transy - pyo))
     41  END FUNCTION fyprim
     42END MODULE fxy_new_mod_h
  • LMDZ6/trunk/libf/grid/fxy_reg_mod_h.f90

    r5286 r5287  
    1 !
    2 ! $Header$
    3 !
    4 !-----------------------------------------------------------------------
    5 ! INCLUDE 'fxyprim.h'
    6 !
    7 !    ................................................................
    8 !    ................  Fonctions in line  ...........................
    9 !    ................................................................
    10 !
    11 REAL :: fy, fx, fxprim, fyprim
    12 REAL :: ri, rj
    13 !
    14 !
    15 fy    ( rj ) =    pi/REAL(jjm) * ( 0.5 * REAL(jjm) +  1. - rj  )
    16 fyprim( rj ) =    pi/REAL(jjm)
     1! This module replaces grid/fxy_reg.h
    172
    18 ! fy(rj)=ASIN(1.+2.*((1.-rj)/REAL(jjm)))
    19 ! fyprim(rj)=1./SQRT((rj-1.)*(jjm+1.-rj))
     3MODULE fxy_reg_mod_h
     4  USE comconst_mod, ONLY: pi
     5  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
     6  IMPLICIT NONE; PRIVATE
     7  PUBLIC fx, fxprim, fy, fyprim
    208
    21 fx    ( ri ) = 2.*pi/REAL(iim) * ( ri - 0.5*  REAL(iim) - 1. )
    22 ! fx    ( ri ) = 2.*pi/REAL(iim) * ( ri - 0.5* ( REAL(iim) + 1.) )
    23 fxprim( ri ) = 2.*pi/REAL(iim)
    24 !
    25 !
    26 !    La valeur de pi est passee par le common/const/ou /const2/ .
    27 !    Sinon, il faut la calculer avant d'appeler ces fonctions .
    28 !
    29 !   ----------------------------------------------------------------
    30 ! Fonctions a changer eventuellement, selon x(x) et y(y) choisis .
    31 !   -----------------------------------------------------------------
    32 !
    33 !    .....  ici, on a l'application particuliere suivante   ........
    34 !
    35 !            **************************************
    36 !            **     x = 2. * pi/iim *  X         **
    37 !            **     y =      pi/jjm *  Y         **
    38 !            **************************************
    39 !
    40 !   ..................................................................
    41 !   ..................................................................
    42 !
    43 !
    44 !
    45 !-----------------------------------------------------------------------
     9CONTAINS
     10
     11  REAL FUNCTION fx(ri)
     12    REAL, INTENT(IN) :: ri
     13    fx = 2. * pi / REAL(iim) * (ri - 0.5 * REAL(iim) - 1.)
     14  END FUNCTION fx
     15
     16  REAL FUNCTION fxprim(ri)
     17    REAL, INTENT(IN) :: ri
     18    fxprim = 2. * pi / REAL(iim)
     19  END FUNCTION fxprim
     20
     21  REAL FUNCTION fy(rj)
     22    REAL, INTENT(IN) :: rj
     23    fy = pi / REAL(jjm) * (0.5 * REAL(jjm) + 1. - rj)
     24  END FUNCTION fy
     25
     26  REAL FUNCTION fyprim(rj)
     27    REAL, INTENT(IN) :: rj
     28    fyprim = pi / REAL(jjm)
     29  END FUNCTION fyprim
     30END MODULE fxy_reg_mod_h
  • LMDZ6/trunk/libf/grid/fxy_sin_mod_h.f90

    r5286 r5287  
    1 !
    2 ! $Header$
    3 !
    4 !-----------------------------------------------------------------------
    5 ! INCLUDE 'fxyprim.h'
    6 !
    7 !    ................................................................
    8 !    ................  Fonctions in line  ...........................
    9 !    ................................................................
    10 !
    11 REAL :: fy, fx, fxprim, fyprim
    12 REAL :: ri, rj
    13 !
    14 !
    15 fy(rj)=ASIN(1.+2.*((1.-rj)/REAL(jjm)))
    16 fyprim(rj)=1./SQRT((rj-1.)*(jjm+1.-rj))
     1! This module replaces grid/fxy_sin.h
    172
    18 fx    ( ri ) = 2.*pi/REAL(iim) * ( ri - 0.5*  REAL(iim) - 1. )
    19 ! fx    ( ri ) = 2.*pi/REAL(iim) * ( ri - 0.5* ( REAL(iim) + 1.) )
    20 fxprim( ri ) = 2.*pi/REAL(iim)
    21 !
    22 !
    23 !    La valeur de pi est passee par le common/const/ou /const2/ .
    24 !    Sinon, il faut la calculer avant d'appeler ces fonctions .
    25 !
    26 !   ----------------------------------------------------------------
    27 ! Fonctions a changer eventuellement, selon x(x) et y(y) choisis .
    28 !   -----------------------------------------------------------------
    29 !
    30 !    .....  ici, on a l'application particuliere suivante   ........
    31 !
    32 !            **************************************
    33 !            **     x = 2. * pi/iim *  X         **
    34 !            **     y =      pi/jjm *  Y         **
    35 !            **************************************
    36 !
    37 !   ..................................................................
    38 !   ..................................................................
    39 !
    40 !
    41 !
    42 !-----------------------------------------------------------------------
     3MODULE fxy_sin_mod_h
     4  USE comconst_mod, ONLY: pi
     5  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
     6  IMPLICIT NONE; PRIVATE
     7  PUBLIC fx, fxprim, fy, fyprim
     8
     9CONTAINS
     10
     11  REAL FUNCTION fx(ri)
     12    REAL, INTENT(IN) :: ri
     13    fx = 2. * pi / REAL(iim) * (ri - 0.5 * REAL(iim) - 1.)
     14  END FUNCTION fx
     15
     16  REAL FUNCTION fxprim(ri)
     17    REAL, INTENT(IN) :: ri
     18    fxprim = 2. * pi / REAL(iim)
     19  END FUNCTION fxprim
     20
     21  REAL FUNCTION fy(rj)
     22    REAL, INTENT(IN) :: rj
     23    fy = ASIN(1. + 2. * ((1. - rj) / REAL(jjm)))
     24  END FUNCTION fy
     25
     26  REAL FUNCTION fyprim(rj)
     27    REAL, INTENT(IN) :: rj
     28    fyprim = 1. / SQRT((rj - 1.) * (jjm + 1. - rj))
     29  END FUNCTION fyprim
     30END MODULE fxy_sin_mod_h
  • LMDZ6/trunk/libf/grid/fxyprim_mod_h.f90

    r5286 r5287  
    1 !
    2 ! $Header$
    3 !
    4 !-----------------------------------------------------------------------
    5 ! INCLUDE 'fxyprim.h'
    6 !
    7 !    ................................................................
    8 !    ................  Fonctions in line  ...........................
    9 !    ................................................................
    10 !
    11 REAL :: fy, fx, fxprim, fyprim
    12 REAL :: ri, rj
    13 !
    14 !
    15 fy    ( rj ) =    pi/REAL(jjm) * ( 0.5 * REAL(jjm) +  1. - rj  )
    16 fyprim( rj ) =    pi/REAL(jjm)
     1! This module replaces grid/fxy_prim.h
    172
    18 ! fy(rj)=ASIN(1.+2.*((1.-rj)/REAL(jjm)))
    19 ! fyprim(rj)=1./SQRT((rj-1.)*(jjm+1.-rj))
     3MODULE fxyprim_mod_h
     4  USE comconst_mod, ONLY: pi
     5  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
     6  IMPLICIT NONE; PRIVATE
     7  PUBLIC fx, fxprim, fy, fyprim
    208
    21 fx    ( ri ) = 2.*pi/REAL(iim) * ( ri - 0.5*  REAL(iim) - 1. )
    22 ! fx    ( ri ) = 2.*pi/REAL(iim) * ( ri - 0.5* ( REAL(iim) + 1.) )
    23 fxprim( ri ) = 2.*pi/REAL(iim)
    24 !
    25 !
    26 !    La valeur de pi est passee par le common/const/ou /const2/ .
    27 !    Sinon, il faut la calculer avant d'appeler ces fonctions .
    28 !
    29 !   ----------------------------------------------------------------
    30 ! Fonctions a changer eventuellement, selon x(x) et y(y) choisis .
    31 !   -----------------------------------------------------------------
    32 !
    33 !    .....  ici, on a l'application particuliere suivante   ........
    34 !
    35 !            **************************************
    36 !            **     x = 2. * pi/iim *  X         **
    37 !            **     y =      pi/jjm *  Y         **
    38 !            **************************************
    39 !
    40 !   ..................................................................
    41 !   ..................................................................
    42 !
    43 !
    44 !
    45 !-----------------------------------------------------------------------
     9CONTAINS
     10
     11  REAL FUNCTION fx(ri)
     12    REAL, INTENT(IN) :: ri
     13    fx = 2. * pi / REAL(iim) * (ri - 0.5 * REAL(iim) - 1.)
     14  END FUNCTION fx
     15
     16  REAL FUNCTION fxprim(ri)
     17    REAL, INTENT(IN) :: ri
     18    fxprim = 2. * pi / REAL(iim)
     19  END FUNCTION fxprim
     20
     21  REAL FUNCTION fy(rj)
     22    REAL, INTENT(IN) :: rj
     23    fy = pi / REAL(jjm) * (0.5 * REAL(jjm) + 1. - rj)
     24  END FUNCTION fy
     25
     26  REAL FUNCTION fyprim(rj)
     27    REAL, INTENT(IN) :: rj
     28    fyprim = pi / REAL(jjm)
     29  END FUNCTION fyprim
     30END MODULE fxyprim_mod_h
Note: See TracChangeset for help on using the changeset viewer.