--- trunk/libf/phylmd/clesphys2.f90 2012/01/30 12:54:02 57 +++ trunk/Sources/phylmd/clesphys2.f 2015/07/07 17:49:23 154 @@ -5,59 +5,54 @@ implicit none LOGICAL:: cycle_diurne = .TRUE. - ! Cette option permet d'éteindre le cycle diurne. - ! Peut être utile pour accélérer le code. + ! Cette option permet d'\'eteindre le cycle diurne. Peut \^etre utile + ! pour acc\'el\'erer le code. LOGICAL:: soil_model = .TRUE. ! Choix du modele de sol (Thermique ?) - ! Option qui pourait un string afin de pouvoir - ! plus de choix ! Ou meme une liste d'options LOGICAL:: new_oliq = .TRUE. ! Permet de mettre en route la nouvelle parametrisation de l'eau liquide - LOGICAL:: ok_orodr = .TRUE. ! pour l'orographie - LOGICAL:: ok_orolf = .TRUE. ! pour l'orographie + ! Pour l'orographie: + LOGICAL:: ok_orodr = .TRUE. + LOGICAL:: ok_orolf = .TRUE. LOGICAL:: ok_limitvrai = .FALSE. ! On peut forcer le modele a lire le fichier SST de la bonne - ! annee. C'est une tres bonne idee, pourquoi ne pas mettre toujours - ! a y ? + ! annee. INTEGER:: nbapp_rad = 12 - ! (nombre d'appels des routines de rayonnements par jour) + ! nombre d'appels des routines de rayonnements par jour INTEGER:: iflag_con = 2 - ! Flag pour la convection : - ! 1 LMD, - ! 2 Tiedtke, - ! 3 CCM(NCAR) - ! 3 KE - ! 4 KE vect + ! Convection scheme: + ! 2 Tiedtke + ! 3 Emanuel + ! 4 Emanuel vect contains subroutine read_clesphys2 use unit_nml_m, only: unit_nml + use nr_util, only: assert + use conf_gcm_m, only: day_step, iphysiq - namelist /clesphys2_nml/cycle_diurne, soil_model, new_oliq, & - ok_orodr, ok_orolf, ok_limitvrai, nbapp_rad, iflag_con + namelist /clesphys2_nml/cycle_diurne, soil_model, new_oliq, ok_orodr, & + ok_orolf, ok_limitvrai, nbapp_rad, iflag_con !------------------------------------ print *, "Enter namelist 'clesphys2_nml'." read(unit=*, nml=clesphys2_nml) write(unit_nml, nml=clesphys2_nml) - - select case (iflag_con) - case (1) - PRINT *, 'Schéma convection LMD' - case (2) - PRINT *, 'Schéma convection Tiedtke' - case (3) - PRINT *, 'Schéma convection CCM' - END select + call assert(iflag_con >= 2 .and. iflag_con <= 4, "read_clesphys2 iflag_con") + call assert(mod(day_step / iphysiq, nbapp_rad) == 0, & + "read_clesphys2 nbapp_rad") + call assert(nbapp_rad >= 4 .or. .not. cycle_diurne, & + "read_clesphys2: minimum 4 calls to radiative transfer per day if " & + // "cycle diurne") end subroutine read_clesphys2