6 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
39 REAL clesphy0( longcles )
43 #include "dimensions.h"
47 #include "comdissnew.h"
59 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
60 REAL clonn,clatt,grossismxx,grossismyy
61 REAL dzoomxx,dzoomyy, tauxx,tauyy
62 LOGICAL fxyhypbb, ysinuss
64 character(len=*),
parameter :: modname=
"conf_gcm"
65 character (len=80) :: abort_message
67 integer,
external :: omp_get_num_threads
106 OPEN(
unit=
lunout,file=
'lmdz.out_0000',action=
'write',
107 & status=
'unknown',form=
'formatted')
111 call
getin(
'adjust',adjust)
116 if ((omp_get_num_threads()>1).and.adjust)
then
117 write(
lunout,*)
'conf_gcm: Error, adjust should be set to n'
118 &,
' when running with OpenMP threads'
119 abort_message =
'Wrong value for adjust'
126 call
getin(
'itaumax',itaumax);
127 if (itaumax<=0) itaumax=huge(itaumax)
145 CALL
getin(
'planet_type',planet_type)
152 calend =
'earth_360d'
153 CALL
getin(
'calend', calend)
161 CALL
getin(
'dayref', dayref)
169 CALL
getin(
'anneeref',anneeref)
179 CALL
getin(
'raz_date', raz_date)
187 CALL
getin(
'nday',nday)
195 CALL
getin(
'starttime',starttime)
203 CALL
getin(
'day_step',day_step)
207 CALL
getin(
'nsplit_phys',nsplit_phys)
214 CALL
getin(
'iperiod',iperiod)
220 iapp_tracvl = iperiod
221 CALL
getin(
'iapp_tracvl',iapp_tracvl)
229 CALL
getin(
'iconser', iconser)
236 CALL
getin(
'iecri',iecri)
244 CALL
getin(
'periodav',periodav)
250 output_grads_dyn=.
false.
251 CALL
getin(
'output_grads_dyn',output_grads_dyn)
260 CALL
getin(
'dissip_period',dissip_period)
272 CALL
getin(
'lstardis',lstardis)
335 CALL
getin(
'dissip_zref',dissip_zref )
339 CALL
getin(
'iflag_top_bound',iflag_top_bound)
388 CALL
getin(
'iphysiq', iphysiq)
399 CALL
getin(
'ip_ebil_dyn',ip_ebil_dyn)
406 IF( etatinit ) go to 100
414 CALL
getin(
'clon',clonn)
422 CALL
getin(
'clat',clatt)
426 IF( abs(
clat - clatt).GE. 0.001 )
THEN
427 write(
lunout,*)
'conf_gcm: La valeur de clat passee par run.def',
428 &
' est differente de celle lue sur le fichier start '
438 CALL
getin(
'grossismx',grossismxx)
441 IF( abs(
grossismx - grossismxx).GE. 0.001 )
THEN
442 write(
lunout,*)
'conf_gcm: La valeur de grossismx passee par ',
443 &
'run.def est differente de celle lue sur le fichier start '
453 CALL
getin(
'grossismy',grossismyy)
455 IF( abs(
grossismy - grossismyy).GE. 0.001 )
THEN
456 write(
lunout,*)
'conf_gcm: La valeur de grossismy passee par ',
457 &
'run.def est differente de celle lue sur le fichier start '
463 &
'conf_gcm: *** ATTENTION !! grossismx < 1 . *** '
472 &
'conf_gcm: *** ATTENTION !! grossismy < 1 . *** '
490 CALL
getin(
'fxyhypb',fxyhypbb)
494 write(
lunout,*)
' ******** PBS DANS CONF_GCM ******** '
495 write(
lunout,*)
' *** fxyhypb lu sur le fichier start est ',
496 *
'F alors qu il est T sur run.def ***'
500 IF( .NOT.fxyhypbb )
THEN
501 write(
lunout,*)
' ******** PBS DANS CONF_GCM ******** '
502 write(
lunout,*)
' *** fxyhypb lu sur le fichier start est ',
503 *
'T alors qu il est F sur run.def **** '
514 CALL
getin(
'dzoomx',dzoomxx)
517 IF( abs(
dzoomx - dzoomxx).GE. 0.001 )
THEN
518 write(
lunout,*)
'conf_gcm: La valeur de dzoomx passee par ',
519 *
'run.def est differente de celle lue sur le fichier start '
530 CALL
getin(
'dzoomy',dzoomyy)
533 IF( abs(
dzoomy - dzoomyy).GE. 0.001 )
THEN
534 write(
lunout,*)
'conf_gcm: La valeur de dzoomy passee par ',
535 *
'run.def est differente de celle lue sur le fichier start '
545 CALL
getin(
'taux',tauxx)
548 IF( abs(
taux - tauxx).GE. 0.001 )
THEN
549 write(
lunout,*)
'conf_gcm: La valeur de taux passee par ',
550 *
'run.def est differente de celle lue sur le fichier start '
560 CALL
getin(
'tauy',tauyy)
563 IF( abs(tauy - tauyy).GE. 0.001 )
THEN
564 write(
lunout,*)
'conf_gcm: La valeur de tauy passee par ',
565 *
'run.def est differente de celle lue sur le fichier start '
580 CALL
getin(
'ysinus',ysinuss)
582 IF( .NOT.ysinus )
THEN
584 write(
lunout,*)
' ******** PBS DANS CONF_GCM ******** '
585 write(
lunout,*)
' *** ysinus lu sur le fichier start est F',
586 *
' alors qu il est T sur run.def ***'
590 IF( .NOT.ysinuss )
THEN
591 write(
lunout,*)
' ******** PBS DANS CONF_GCM ******** '
592 write(
lunout,*)
' *** ysinus lu sur le fichier start est T',
593 *
' alors qu il est F sur run.def **** '
605 CALL
getin(
'offline',offline)
606 IF (offline .AND. adjust)
THEN
608 &
'WARNING : option offline does not work with adjust=y :'
609 WRITE(
lunout,*)
'the files defstoke.nc, fluxstoke.nc ',
610 &
'and fluxstokev.nc will not be created'
612 &
'only the file phystoke.nc will still be created '
623 CALL
getin(
'type_trac',type_trac)
633 CALL
getin(
'config_inca',config_inca)
641 CALL
getin(
'ok_dynzon',ok_dynzon)
649 CALL
getin(
'ok_dyn_ins',ok_dyn_ins)
657 CALL
getin(
'ok_dyn_ave',ok_dyn_ave)
659 write(
lunout,*)
' #########################################'
660 write(
lunout,*)
' Configuration des parametres du gcm: '
661 write(
lunout,*)
' planet_type = ', planet_type
662 write(
lunout,*)
' calend = ', calend
663 write(
lunout,*)
' dayref = ', dayref
664 write(
lunout,*)
' anneeref = ', anneeref
665 write(
lunout,*)
' nday = ', nday
666 write(
lunout,*)
' day_step = ', day_step
667 write(
lunout,*)
' iperiod = ', iperiod
668 write(
lunout,*)
' nsplit_phys = ', nsplit_phys
669 write(
lunout,*)
' iconser = ', iconser
670 write(
lunout,*)
' iecri = ', iecri
671 write(
lunout,*)
' periodav = ', periodav
672 write(
lunout,*)
' output_grads_dyn = ', output_grads_dyn
673 write(
lunout,*)
' dissip_period = ', dissip_period
674 write(
lunout,*)
' lstardis = ', lstardis
685 write(
lunout,*)
' iphysiq = ', iphysiq
686 write(
lunout,*)
' clonn = ', clonn
687 write(
lunout,*)
' clatt = ', clatt
690 write(
lunout,*)
' fxyhypbb = ', fxyhypbb
691 write(
lunout,*)
' dzoomxx = ', dzoomxx
692 write(
lunout,*)
' dzoomy = ', dzoomyy
693 write(
lunout,*)
' tauxx = ', tauxx
694 write(
lunout,*)
' tauyy = ', tauyy
695 write(
lunout,*)
' offline = ', offline
696 write(
lunout,*)
' type_trac = ', type_trac
697 write(
lunout,*)
' config_inca = ', config_inca
698 write(
lunout,*)
' ok_dynzon = ', ok_dynzon
699 write(
lunout,*)
' ok_dyn_ins = ', ok_dyn_ins
700 write(
lunout,*)
' ok_dyn_ave = ', ok_dyn_ave
740 &
'conf_gcm: *** ATTENTION !! grossismx < 1 . *** '
749 &
'conf_gcm: *** ATTENTION !! grossismy < 1 . *** '
797 CALL
getin(
'tauy',tauy)
806 CALL
getin(
'ysinus',ysinus)
814 CALL
getin(
'offline',offline)
815 IF (offline .AND. adjust)
THEN
817 &
'WARNING : option offline does not work with adjust=y :'
818 WRITE(
lunout,*)
'the files defstoke.nc, fluxstoke.nc ',
819 &
'and fluxstokev.nc will not be created'
821 &
'only the file phystoke.nc will still be created '
832 CALL
getin(
'type_trac',type_trac)
842 CALL
getin(
'config_inca',config_inca)
850 CALL
getin(
'ok_dynzon',ok_dynzon)
858 CALL
getin(
'ok_dyn_ins',ok_dyn_ins)
866 CALL
getin(
'ok_dyn_ave',ok_dyn_ave)
873 use_filtre_fft=.
false.
874 CALL
getin(
'use_filtre_fft',use_filtre_fft)
875 use_filtre_fft_loc=use_filtre_fft
877 IF (use_filtre_fft .AND.
grossismx /= 1.0)
THEN
878 write(
lunout,*)
'WARNING !!! '
879 write(
lunout,*)
"Le zoom en longitude est incompatible",
880 &
" avec l'utilisation du filtre FFT ",
881 &
"---> FFT filter not active"
882 use_filtre_fft=.
false.
894 use_mpi_alloc=.
false.
895 CALL
getin(
'use_mpi_alloc',use_mpi_alloc)
905 CALL
getin(
'omp_chunk',omp_chunk)
915 vert_prof_dissip = merge(1, 0,
ok_strato .and. llm==39)
916 CALL
getin(
'vert_prof_dissip', vert_prof_dissip)
917 call
assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1,
918 $
"bad value for vert_prof_dissip")
925 ok_gradsfile = .
false.
926 CALL
getin(
'ok_gradsfile',ok_gradsfile)
950 write(
lunout,*)
' #########################################'
951 write(
lunout,*)
' Configuration des parametres de cel0'
953 write(
lunout,*)
' planet_type = ', planet_type
954 write(
lunout,*)
' calend = ', calend
955 write(
lunout,*)
' dayref = ', dayref
956 write(
lunout,*)
' anneeref = ', anneeref
957 write(
lunout,*)
' nday = ', nday
958 write(
lunout,*)
' day_step = ', day_step
959 write(
lunout,*)
' iperiod = ', iperiod
960 write(
lunout,*)
' iconser = ', iconser
961 write(
lunout,*)
' iecri = ', iecri
962 write(
lunout,*)
' periodav = ', periodav
963 write(
lunout,*)
' output_grads_dyn = ', output_grads_dyn
964 write(
lunout,*)
' dissip_period = ', dissip_period
965 write(
lunout,*)
' lstardis = ', lstardis
976 write(
lunout,*)
' iphysiq = ', iphysiq
985 write(
lunout,*)
' tauy = ', tauy
986 write(
lunout,*)
' offline = ', offline
987 write(
lunout,*)
' type_trac = ', type_trac
988 write(
lunout,*)
' config_inca = ', config_inca
989 write(
lunout,*)
' ok_dynzon = ', ok_dynzon
990 write(
lunout,*)
' ok_dyn_ins = ', ok_dyn_ins
991 write(
lunout,*)
' ok_dyn_ave = ', ok_dyn_ave
992 write(
lunout,*)
' use_filtre_fft = ', use_filtre_fft
993 write(
lunout,*)
' use_mpi_alloc = ', use_mpi_alloc
994 write(
lunout,*)
' omp_chunk = ', omp_chunk
996 write(
lunout,*)
' ok_gradsfile = ', ok_gradsfile