6 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
38 REAL clesphy0( longcles )
42 #include "dimensions.h"
46 #include "comdissnew.h"
58 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
59 REAL clonn,clatt,grossismxx,grossismyy
60 REAL dzoomxx,dzoomyy, tauxx,tauyy
61 LOGICAL fxyhypbb, ysinuss
63 character(len=*),
parameter :: modname=
"conf_gcm"
64 character (len=80) :: abort_message
66 integer,
external :: omp_get_num_threads
105 OPEN(
unit=
lunout,file=
'lmdz.out_0000',action=
'write',
106 & status=
'unknown',form=
'formatted')
110 call
getin(
'adjust',adjust)
115 if ((omp_get_num_threads()>1).and.adjust)
then
116 write(
lunout,*)
'conf_gcm: Error, adjust should be set to n'
117 &,
' when running with OpenMP threads'
118 abort_message =
'Wrong value for adjust'
125 call
getin(
'itaumax',itaumax);
126 if (itaumax<=0) itaumax=huge(itaumax)
144 CALL
getin(
'planet_type',planet_type)
151 calend =
'earth_360d'
152 CALL
getin(
'calend', calend)
160 CALL
getin(
'dayref', dayref)
168 CALL
getin(
'anneeref',anneeref)
178 CALL
getin(
'raz_date', raz_date)
186 CALL
getin(
'nday',nday)
194 CALL
getin(
'starttime',starttime)
202 CALL
getin(
'day_step',day_step)
206 CALL
getin(
'nsplit_phys',nsplit_phys)
213 CALL
getin(
'iperiod',iperiod)
219 iapp_tracvl = iperiod
220 CALL
getin(
'iapp_tracvl',iapp_tracvl)
228 CALL
getin(
'iconser', iconser)
235 CALL
getin(
'iecri',iecri)
243 CALL
getin(
'periodav',periodav)
249 output_grads_dyn=.
false.
250 CALL
getin(
'output_grads_dyn',output_grads_dyn)
259 CALL
getin(
'dissip_period',dissip_period)
271 CALL
getin(
'lstardis',lstardis)
334 CALL
getin(
'dissip_zref',dissip_zref )
338 CALL
getin(
'iflag_top_bound',iflag_top_bound)
387 CALL
getin(
'iphysiq', iphysiq)
398 CALL
getin(
'ip_ebil_dyn',ip_ebil_dyn)
405 IF( etatinit ) go to 100
413 CALL
getin(
'clon',clonn)
421 CALL
getin(
'clat',clatt)
425 IF( abs(
clat - clatt).GE. 0.001 )
THEN
426 write(
lunout,*)
'conf_gcm: La valeur de clat passee par run.def',
427 &
' est differente de celle lue sur le fichier start '
437 CALL
getin(
'grossismx',grossismxx)
440 IF( abs(
grossismx - grossismxx).GE. 0.001 )
THEN
441 write(
lunout,*)
'conf_gcm: La valeur de grossismx passee par ',
442 &
'run.def est differente de celle lue sur le fichier start '
452 CALL
getin(
'grossismy',grossismyy)
454 IF( abs(
grossismy - grossismyy).GE. 0.001 )
THEN
455 write(
lunout,*)
'conf_gcm: La valeur de grossismy passee par ',
456 &
'run.def est differente de celle lue sur le fichier start '
462 &
'conf_gcm: *** ATTENTION !! grossismx < 1 . *** '
471 &
'conf_gcm: *** ATTENTION !! grossismy < 1 . *** '
489 CALL
getin(
'fxyhypb',fxyhypbb)
493 write(
lunout,*)
' ******** PBS DANS CONF_GCM ******** '
494 write(
lunout,*)
' *** fxyhypb lu sur le fichier start est ',
495 *
'F alors qu il est T sur run.def ***'
499 IF( .NOT.fxyhypbb )
THEN
500 write(
lunout,*)
' ******** PBS DANS CONF_GCM ******** '
501 write(
lunout,*)
' *** fxyhypb lu sur le fichier start est ',
502 *
'T alors qu il est F sur run.def **** '
513 CALL
getin(
'dzoomx',dzoomxx)
516 IF( abs(
dzoomx - dzoomxx).GE. 0.001 )
THEN
517 write(
lunout,*)
'conf_gcm: La valeur de dzoomx passee par ',
518 *
'run.def est differente de celle lue sur le fichier start '
529 CALL
getin(
'dzoomy',dzoomyy)
532 IF( abs(
dzoomy - dzoomyy).GE. 0.001 )
THEN
533 write(
lunout,*)
'conf_gcm: La valeur de dzoomy passee par ',
534 *
'run.def est differente de celle lue sur le fichier start '
544 CALL
getin(
'taux',tauxx)
547 IF( abs(
taux - tauxx).GE. 0.001 )
THEN
548 write(
lunout,*)
'conf_gcm: La valeur de taux passee par ',
549 *
'run.def est differente de celle lue sur le fichier start '
559 CALL
getin(
'tauy',tauyy)
562 IF( abs(tauy - tauyy).GE. 0.001 )
THEN
563 write(
lunout,*)
'conf_gcm: La valeur de tauy passee par ',
564 *
'run.def est differente de celle lue sur le fichier start '
579 CALL
getin(
'ysinus',ysinuss)
581 IF( .NOT.ysinus )
THEN
583 write(
lunout,*)
' ******** PBS DANS CONF_GCM ******** '
584 write(
lunout,*)
' *** ysinus lu sur le fichier start est F',
585 *
' alors qu il est T sur run.def ***'
589 IF( .NOT.ysinuss )
THEN
590 write(
lunout,*)
' ******** PBS DANS CONF_GCM ******** '
591 write(
lunout,*)
' *** ysinus lu sur le fichier start est T',
592 *
' alors qu il est F sur run.def **** '
604 CALL
getin(
'offline',offline)
605 IF (offline .AND. adjust)
THEN
607 &
'WARNING : option offline does not work with adjust=y :'
608 WRITE(
lunout,*)
'the files defstoke.nc, fluxstoke.nc ',
609 &
'and fluxstokev.nc will not be created'
611 &
'only the file phystoke.nc will still be created '
622 CALL
getin(
'type_trac',type_trac)
632 CALL
getin(
'config_inca',config_inca)
640 CALL
getin(
'ok_dynzon',ok_dynzon)
648 CALL
getin(
'ok_dyn_ins',ok_dyn_ins)
656 CALL
getin(
'ok_dyn_ave',ok_dyn_ave)
658 write(
lunout,*)
' #########################################'
659 write(
lunout,*)
' Configuration des parametres du gcm: '
660 write(
lunout,*)
' planet_type = ', planet_type
661 write(
lunout,*)
' calend = ', calend
662 write(
lunout,*)
' dayref = ', dayref
663 write(
lunout,*)
' anneeref = ', anneeref
664 write(
lunout,*)
' nday = ', nday
665 write(
lunout,*)
' day_step = ', day_step
666 write(
lunout,*)
' iperiod = ', iperiod
667 write(
lunout,*)
' nsplit_phys = ', nsplit_phys
668 write(
lunout,*)
' iconser = ', iconser
669 write(
lunout,*)
' iecri = ', iecri
670 write(
lunout,*)
' periodav = ', periodav
671 write(
lunout,*)
' output_grads_dyn = ', output_grads_dyn
672 write(
lunout,*)
' dissip_period = ', dissip_period
673 write(
lunout,*)
' lstardis = ', lstardis
684 write(
lunout,*)
' iphysiq = ', iphysiq
685 write(
lunout,*)
' clonn = ', clonn
686 write(
lunout,*)
' clatt = ', clatt
689 write(
lunout,*)
' fxyhypbb = ', fxyhypbb
690 write(
lunout,*)
' dzoomxx = ', dzoomxx
691 write(
lunout,*)
' dzoomy = ', dzoomyy
692 write(
lunout,*)
' tauxx = ', tauxx
693 write(
lunout,*)
' tauyy = ', tauyy
694 write(
lunout,*)
' offline = ', offline
695 write(
lunout,*)
' type_trac = ', type_trac
696 write(
lunout,*)
' config_inca = ', config_inca
697 write(
lunout,*)
' ok_dynzon = ', ok_dynzon
698 write(
lunout,*)
' ok_dyn_ins = ', ok_dyn_ins
699 write(
lunout,*)
' ok_dyn_ave = ', ok_dyn_ave
739 &
'conf_gcm: *** ATTENTION !! grossismx < 1 . *** '
748 &
'conf_gcm: *** ATTENTION !! grossismy < 1 . *** '
796 CALL
getin(
'tauy',tauy)
805 CALL
getin(
'ysinus',ysinus)
813 CALL
getin(
'offline',offline)
814 IF (offline .AND. adjust)
THEN
816 &
'WARNING : option offline does not work with adjust=y :'
817 WRITE(
lunout,*)
'the files defstoke.nc, fluxstoke.nc ',
818 &
'and fluxstokev.nc will not be created'
820 &
'only the file phystoke.nc will still be created '
831 CALL
getin(
'type_trac',type_trac)
841 CALL
getin(
'config_inca',config_inca)
849 CALL
getin(
'ok_dynzon',ok_dynzon)
857 CALL
getin(
'ok_dyn_ins',ok_dyn_ins)
865 CALL
getin(
'ok_dyn_ave',ok_dyn_ave)
872 use_filtre_fft=.
false.
873 CALL
getin(
'use_filtre_fft',use_filtre_fft)
875 IF (use_filtre_fft .AND.
grossismx /= 1.0)
THEN
876 write(
lunout,*)
'WARNING !!! '
877 write(
lunout,*)
"Le zoom en longitude est incompatible",
878 &
" avec l'utilisation du filtre FFT ",
879 &
"---> FFT filter not active"
880 use_filtre_fft=.
false.
892 use_mpi_alloc=.
false.
893 CALL
getin(
'use_mpi_alloc',use_mpi_alloc)
903 CALL
getin(
'omp_chunk',omp_chunk)
913 vert_prof_dissip = merge(1, 0,
ok_strato .and. llm==39)
914 CALL
getin(
'vert_prof_dissip', vert_prof_dissip)
915 call
assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1,
916 $
"bad value for vert_prof_dissip")
923 ok_gradsfile = .
false.
924 CALL
getin(
'ok_gradsfile',ok_gradsfile)
948 write(
lunout,*)
' #########################################'
949 write(
lunout,*)
' Configuration des parametres de cel0'
951 write(
lunout,*)
' planet_type = ', planet_type
952 write(
lunout,*)
' calend = ', calend
953 write(
lunout,*)
' dayref = ', dayref
954 write(
lunout,*)
' anneeref = ', anneeref
955 write(
lunout,*)
' nday = ', nday
956 write(
lunout,*)
' day_step = ', day_step
957 write(
lunout,*)
' iperiod = ', iperiod
958 write(
lunout,*)
' iconser = ', iconser
959 write(
lunout,*)
' iecri = ', iecri
960 write(
lunout,*)
' periodav = ', periodav
961 write(
lunout,*)
' output_grads_dyn = ', output_grads_dyn
962 write(
lunout,*)
' dissip_period = ', dissip_period
963 write(
lunout,*)
' lstardis = ', lstardis
974 write(
lunout,*)
' iphysiq = ', iphysiq
983 write(
lunout,*)
' tauy = ', tauy
984 write(
lunout,*)
' offline = ', offline
985 write(
lunout,*)
' type_trac = ', type_trac
986 write(
lunout,*)
' config_inca = ', config_inca
987 write(
lunout,*)
' ok_dynzon = ', ok_dynzon
988 write(
lunout,*)
' ok_dyn_ins = ', ok_dyn_ins
989 write(
lunout,*)
' ok_dyn_ave = ', ok_dyn_ave
990 write(
lunout,*)
' use_filtre_fft = ', use_filtre_fft
991 write(
lunout,*)
' use_mpi_alloc = ', use_mpi_alloc
992 write(
lunout,*)
' omp_chunk = ', omp_chunk
994 write(
lunout,*)
' ok_gradsfile = ', ok_gradsfile