126 USE modi_open_namelist
128 USE modi_close_namelist
129 USE modi_read_all_namelists
130 USE modi_open_close_bin_asc_forc
131 USE modi_open_filein_ol
132 USE modi_ol_read_atm_conf
134 USE modi_ol_alloc_atm
135 USE modi_compare_orography
137 USE modi_init_index_mpi
139 USE modi_io_buff_clean
140 USE modi_init_surf_atm_n
141 USE modi_init_surf_landuse_n
142 USE modi_ol_time_interp_atm
143 USE modi_coupling_surf_atm_n
144 USE modi_add_forecast_to_date_surf
145 USE modi_write_surf_atm_n
146 USE modi_write_header_mnh
148 USE modi_flag_diag_update
149 USE modi_diag_surf_atm_n
150 USE modi_write_diag_surf_atm_n
151 USE modi_get_surf_var_n
153 USE modi_close_filein_ol
154 USE modi_close_fileout_ol
155 USE modi_init_output_ol_n
156 USE modi_init_output_nc_n
158 USE modi_write_header_fa
161 USE modi_write_discharge_file
162 USE modi_write_budget_coupl_rout
163 USE modi_prep_restart_coupl_topd
165 USE modi_init_slope_param
166 USE modi_slope_radiative_effect
168 USE modi_sfx_oasis_read_nam
169 USE modi_sfx_oasis_init
170 USE modi_sfx_oasis_def_ol
171 USE modi_sfx_oasis_recv_ol
172 USE modi_sfx_oasis_send_ol
173 USE modi_sfx_oasis_end
175 USE modi_local_slope_param
178 USE xios
, ONLY : xios_context_finalize, xios_close_context_definition, xios_update_calendar
180 USE modi_sfx_xios_readnam_ol
181 USE modi_sfx_xios_setup_ol
209 CHARACTER(LEN=3),
PARAMETER :: YINIT =
'ALL' 211 CHARACTER(LEN=28) :: YLUOUT =
'LISTING_OFFLINE ' 224 INTEGER :: IMONTH_OUT
228 INTEGER,
DIMENSION(11) :: IDATEF
230 CHARACTER(LEN=28),
PARAMETER :: YATMFILE =
' ' 231 CHARACTER(LEN=6),
PARAMETER :: YATMFILETYPE =
' ' 232 CHARACTER(LEN=2),
PARAMETER :: YTEST =
'OK' 234 REAL,
DIMENSION(:),
POINTER :: ZLAT
235 REAL,
DIMENSION(:),
POINTER :: ZLON
236 REAL,
DIMENSION(:),
POINTER :: ZZS_FORC
237 REAL,
DIMENSION(:),
POINTER :: ZZREF
238 REAL,
DIMENSION(:),
POINTER :: ZUREF
245 INTEGER :: INB_STEP_ATM
251 INTEGER :: JFORC_STEP
252 INTEGER :: JSURF_STEP
254 INTEGER :: ITIMESTARTINDEX
255 REAL :: ZDURATION, ZDURATION2
257 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZTA
258 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZQA
259 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWIND
260 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZSCA_SW
261 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZDIR_SW
262 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZLW
263 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZSNOW
264 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZRAIN
265 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZPS
266 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZCO2
267 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZDIR
273 CHARACTER(LEN=14) :: YTAG
276 REAL,
DIMENSION(:),
ALLOCATABLE :: ZSW
277 REAL,
DIMENSION(:),
ALLOCATABLE :: ZCOEF
279 TYPE(
date) :: TDATE_END
282 INTEGER :: I2M, IBEQ, IDSTEQ
283 LOGICAL :: GFRAC, GDIAG_GRID, GSURF_BUDGET, GRAD_BUDGET, GCOEF, &
284 GSURF_VARS, GDIAG_OCEAN, GDIAG_SEAICE, GWATER_PROFILE, &
285 GINTERPOL_TS, GSURF_EVAP_BUDGET, GFLOOD, GPGD_ISBA, &
286 GCH_NO_FLUX_ISBA, GSURF_MISC_BUDGET_ISBA, GPGD_TEB, &
287 GSURF_MISC_BUDGET_TEB
291 REAL,
DIMENSION(:),
ALLOCATABLE :: ZSEA, ZWATER, ZNATURE, ZTOWN
292 REAL,
DIMENSION(:),
ALLOCATABLE :: ZSEA_FULL, ZWATER_FULL, ZNATURE_FULL, ZTOWN_FULL
293 REAL,
DIMENSION(:),
ALLOCATABLE :: ZT2M, ZQ2M
294 REAL,
DIMENSION(:),
ALLOCATABLE :: ZZ0, ZZ0H, ZQS
295 REAL,
DIMENSION(:),
ALLOCATABLE :: ZQS_SEA, ZQS_WATER, ZQS_NATURE, ZQS_TOWN
296 REAL,
DIMENSION(:),
ALLOCATABLE :: ZPSNG, ZPSNV
297 REAL,
DIMENSION(:),
ALLOCATABLE :: ZZ0EFF
298 REAL,
DIMENSION(:),
ALLOCATABLE :: ZZS
299 REAL,
DIMENSION(:),
ALLOCATABLE :: ZZ0_FULL, ZZ0EFF_FULL, ZZS_FULL
300 REAL,
DIMENSION(:),
ALLOCATABLE :: ZSUMZEN
301 INTEGER :: ISERIES, ISIZE
305 CHARACTER(LEN=100) :: YNAME
306 CHARACTER(LEN=10) :: YRANK
307 INTEGER :: ILEVEL, INFOMPI, J
308 REAL :: XTIME0, XTIME1, XTIME
313 INTEGER :: IBLOCKTOT, IBLOCK
315 REAL(KIND=JPRB) :: ZHOOK_HANDLE
348 CALL mpi_init_thread(mpi_thread_multiple,ilevel,infompi)
349 IF (infompi /= mpi_success)
THEN 350 CALL abor1_sfx(
'OFFLINE: ERROR WHEN INITIALIZING MPI')
382 WRITE(yrank,fmt=
'(I10)')
nrank 383 yname=trim(yluout)//adjustl(yrank)
386 cluout_nc = adjustl(adjustr(yname)//
'.txt')
389 OPEN(unit=iluout,file=adjustl(adjustr(yname)//
'.txt'),form=
'FORMATTED',action=
'WRITE')
409 CALL posnam(ilunam,
'NAM_IO_OFFLINE',gfound,iluout)
410 IF (gfound)
READ (unit=ilunam,nml=nam_io_offline)
422 'ASCII ',
'LFI ',
'FA ',&
423 'NONE ',
'OFFLIN',
'NC '&
427 'ASCII ',
'LFI ',
'FA ',&
428 'NONE ',
'OFFLIN',
'NC ')
432 IF (
nscal>59)
CALL abor1_sfx(
"OFFLINE: NSCAL MUST BE LOWER THAN OR EQUAL TO 59")
438 CALL abor1_sfx(
'CANNOT YET SET LALLOW_ADD_DIM TO .TRUE. WITHOUT SETTING CTIMESERIES_FILETYPE to XIOS ')
492 xtime = (mpi_wtime() - xtime0)
494 CALL wlog_mpi(
'READ NAMELISTS ',plog=xtime)
512 xtime = (mpi_wtime() - xtime0)
515 CALL wlog_mpi(
'INIT_INDEX_MPI ',plog=xtime)
530 iyear, imonth, iday, ztime, zlat, zlon, zzs_forc, &
531 zzref, zuref, itimestartindex )
533 tdate_end%YEAR = iyear
534 tdate_end%MONTH = imonth
536 zduration2 = zduration
546 xtime = (mpi_wtime() - xtime0)
548 CALL wlog_mpi(
'OL_READ_ATM_CONF ',plog=xtime)
557 WRITE(iluout,*)
' FORCING AND OUTPUT/SURFACE TIME STEP SHOULD BE MULTIPLE', &
559 CALL abor1_sfx(
'OFFLINE: FORCING AND OUTPUT/SURFACE TIME STEP SHOULD BE MULTIPLE')
562 IF ( ztime /= 0. .AND. mod(ztime,
xtstep_surf) /= 0 )
THEN 563 WRITE(iluout,*)
' INITIAL AND SURFACE TIME STEP SHOULD BE MULTIPLE', &
565 CALL abor1_sfx(
'OFFLINE: INITIAL AND SURFACE TIME STEP SHOULD BE MULTIPLE')
569 WRITE(iluout,*)
'Total simulated time given by Forcing field and OASIS namcouple are different' 570 WRITE(iluout,*)
'From Forcing (s) : ',zduration,
'From OASIS (s) : ',
xruntime 571 CALL abor1_sfx(
'OFFLINE: TOTAL SIMULATED TIME DIFFERENT BETWEEN FORCING AND OASIS')
574 inb_step_atm = int(zduration / ztstep)
611 CALL sunpos(iyear, imonth, iday, ztime, zlon, zlat, xtsun, xzenith, xazim)
616 inb_lines=inb_step_atm
629 #if ! defined in_arpege 635 IF (.NOT.
ALLOCATED(zta))
ALLOCATE(zta(ini,inb_lines+1))
636 IF (.NOT.
ALLOCATED(zqa))
ALLOCATE(zqa(ini,inb_lines+1))
637 IF (.NOT.
ALLOCATED(zwind))
ALLOCATE(zwind(ini,inb_lines+1))
638 IF (.NOT.
ALLOCATED(zdir_sw))
ALLOCATE(zdir_sw(ini,inb_lines+1))
639 IF (.NOT.
ALLOCATED(zsca_sw))
ALLOCATE(zsca_sw(ini,inb_lines+1))
640 IF (.NOT.
ALLOCATED(zlw))
ALLOCATE(zlw(ini,inb_lines+1))
641 IF (.NOT.
ALLOCATED(zsnow))
ALLOCATE(zsnow(ini,inb_lines+1))
642 IF (.NOT.
ALLOCATED(zrain))
ALLOCATE(zrain(ini,inb_lines+1))
643 IF (.NOT.
ALLOCATED(zps))
ALLOCATE(zps(ini,inb_lines+1))
644 IF (.NOT.
ALLOCATED(zco2))
ALLOCATE(zco2(ini,inb_lines+1))
645 IF (.NOT.
ALLOCATED(zdir))
ALLOCATE(zdir(ini,inb_lines+1))
646 IF (.NOT.
ALLOCATED(zcoef))
ALLOCATE(zcoef(ini))
647 IF (.NOT.
ALLOCATED(zsumzen))
ALLOCATE(zsumzen(ini))
649 IF (.NOT.
ALLOCATED(zsw))
ALLOCATE(zsw(ini))
654 xtime = (mpi_wtime() - xtime0)
656 CALL wlog_mpi(
'COMPARE_OROGRAPHY SUNPOS ',plog=xtime)
667 zta,zqa,zwind,zdir_sw,zsca_sw,zlw,zsnow,zrain,zps,&
677 xtime = (mpi_wtime() - xtime0)
680 CALL wlog_mpi(
'OL_READ_ATM0 ',plog=xtime)
687 xrhoa(:) = zps(:,1) / (
xrd * zta(:,1) * ( 1.+((
xrv/
xrd)-1.)*zqa(:,1) ) +
xg * xzref )
692 xtime = (mpi_wtime() - xtime0)
694 CALL wlog_mpi(
'CO2 RHOA ',plog=xtime)
708 csv,xco2(:),xrhoa(:), xzenith(:),xazim(:),xsw_bands, &
709 xdir_alb(:,:), xsca_alb(:,:), xemis(:), xtsrad(:), &
710 xtsurf(:), iyear, imonth, iday, ztime, tdate_end, &
711 yatmfile, yatmfiletype, ytest )
722 xtime = (mpi_wtime() - xtime0)
725 CALL wlog_mpi(
'INIT_SURF_ATM ',plog=xtime)
740 xco2, xrhoa, xzenith, xazim, xsw_bands, xdir_alb, &
741 xsca_alb, xemis, xtsrad, xtsurf, iyear, imonth, &
742 iday, ztime, yatmfile, yatmfiletype, ytest )
763 xtime = (mpi_wtime() - xtime0)
765 CALL wlog_mpi(
'INIT FINISHED ',plog=xtime)
778 DO jforc_step=1,inb_step_atm
786 id_forc=jforc_step-int(jforc_step/inb_lines)*inb_lines
787 IF (id_forc==0) id_forc=inb_lines
789 IF (id_forc==1 .AND. jforc_step.NE.1)
THEN 793 idmax=inb_step_atm-jforc_step+1+1
795 zta(:,idmax) = zta(:,
SIZE(zta,2))
796 zqa(:,idmax) = zqa(:,
SIZE(zta,2))
797 zwind(:,idmax) = zwind(:,
SIZE(zta,2))
798 zdir_sw(:,idmax) = zdir_sw(:,
SIZE(zta,2))
799 zsca_sw(:,idmax) = zsca_sw(:,
SIZE(zta,2))
800 zlw(:,idmax) = zlw(:,
SIZE(zta,2))
801 zsnow(:,idmax) = zsnow(:,
SIZE(zta,2))
802 zrain(:,idmax) = zrain(:,
SIZE(zta,2))
803 zps(:,idmax) = zps(:,
SIZE(zta,2))
804 zco2(:,idmax) = zco2(:,
SIZE(zta,2))
805 zdir(:,idmax) = zdir(:,
SIZE(zta,2))
808 zta(:,1:idmax),zqa(:,1:idmax),zwind(:,1:idmax), &
809 zdir_sw(:,1:idmax),zsca_sw(:,1:idmax),zlw(:,1:idmax), &
810 zsnow(:,1:idmax),zrain(:,1:idmax),zps(:,1:idmax), &
821 DO jsurf_step = 1,inb_atm
824 IF (ztime2>86400.)
THEN 825 ztime2 = ztime2-86400
829 zlon, zlat, xtsun, xzenith, xazim)
831 zsumzen(:)= zsumzen(:) + max(cos(xzenith(:)+0.1),0.)/(inb_atm*1.0)
834 WHERE ( zsumzen<0.01 ) zsumzen = 0.0
836 DO jsurf_step=1,inb_atm
844 CALL sunpos(iyear, imonth, iday, ztime, zlon, zlat, xtsun, xzenith, xazim)
850 CALL sunpos(iyear2, imonth2, iday2, ztime2, zlon, zlat, xtsun, xzenith2, xazim)
858 zta(:,id_forc),zta(:,id_forc+1), &
859 zqa(:,id_forc),zqa(:,id_forc+1), &
860 zwind(:,id_forc),zwind(:,id_forc+1), &
861 zdir_sw(:,id_forc),zdir_sw(:,id_forc+1), &
862 zsca_sw(:,id_forc),zsca_sw(:,id_forc+1), &
863 zlw(:,id_forc),zlw(:,id_forc+1), &
864 zsnow(:,id_forc+1),zrain(:,id_forc+1), &
865 zps(:,id_forc),zps(:,id_forc+1), &
866 zco2(:,id_forc),zco2(:,id_forc+1), &
867 zdir(:,id_forc),zdir(:,id_forc+1), &
868 xzenith+0.1,zsumzen )
883 zcoef(:) = (
xpi/2. - xzenith(:) - 0.05) / 0.05
884 zcoef(:) = max(min(zcoef,1.),0.)
885 DO jloop=1,
SIZE(xdir_sw,2)
886 xsca_sw(:,jloop) = xsca_sw(:,jloop) + xdir_sw(:,jloop) * (1 - zcoef)
887 xdir_sw(:,jloop) = xdir_sw(:,jloop) * zcoef(:)
893 DO jloop=1,
SIZE(xdir_sw,2)
894 zsw(:) = zsw(:) + xdir_sw(:,jloop) + xsca_sw(:,jloop)
897 xzenith = min(xzenith ,
xpi/2.-0.01)
898 xzenith2 = min(xzenith2,
xpi/2.-0.01)
900 xzenith = max(xzenith ,
xpi/2.)
901 xzenith2 = max(xzenith2,
xpi/2.)
922 xsw_bands, xtsrad, xdir_alb, xsca_alb, xemis, xtsurf )
936 ini,
nscal, ibands, xtsun, xzenith, xzenith2, xazim, xzref, xuref, &
937 xzs, xu, xv, xqa, xta, xrhoa, xsv, xco2,
csv, xrain, xsnow, xlw, xdir_sw, &
938 xsca_sw, xsw_bands, xps, xpa, xsftq, xsfth, xsfts, xsfco2, xsfu, xsfv, &
939 xtsrad, xdir_alb, xsca_alb, xemis, xtsurf, xz0, xz0h, xqsurf, xpew_a_coef, &
940 xpew_b_coef,xpet_a_coef,xpeq_a_coef,xpet_b_coef,xpeq_b_coef, ytest )
1053 imonth_out = imonth - 1
1054 IF(imonth_out==0)
THEN 1056 iyear_out = iyear - 1
1058 SELECT CASE (imonth_out)
1061 CASE(1,3,5,7:8,10,12)
1064 IF( ((mod(iyear_out,4)==0).AND.(mod(iyear_out,100)/=0)) .OR. (mod(iyear_out,400)==0))
THEN 1075 WRITE(ytag,fmt=
'(I4.4,I2.2,I2.2,A1,I2.2,A1,I2.2)') iyear_out,imonth_out,iday_out,&
1076 '_',int(ztime_out/3600.),
'h',nint(ztime_out)/60-60*int(ztime_out/3600.)
1089 idatef(4)= floor(ztime/3600.)
1090 idatef(5)= floor(ztime/60.) - idatef(4) * 60
1091 idatef(6)= nint(ztime) - idatef(4) * 3600 - idatef(5) * 60
1097 CALL faitou(iret,
nunit_fa,.true.,
cfileout_fa,
'UNKNOWN',.true.,.false.,
iverbfa,0,inb,
cdnomc)
1141 xtime1 = mpi_wtime()
1151 xtime1 = mpi_wtime()
1156 xtime1 = mpi_wtime()
1163 CALL xios_close_context_definition()
1198 xtime1 = mpi_wtime()
1220 IF (mod(ztimec,
xday) == 0.)
THEN 1222 CALL wlog_mpi(
'SFX DAY :',klog=icount,klog2=int(zduration/
xday))
1223 WRITE(*,
'(A10,I5,A2,I5)')
'SFX DAY :',icount,
' /',int(zduration/
xday)
1278 idatef(4)= floor(ztime/3600.)
1279 idatef(5)= floor(ztime/60.) - idatef(4) * 60
1280 idatef(6)= nint(ztime) - idatef(4) * 3600 - idatef(5) * 60
1283 CALL faitou(iret,
nunit_fa,.true.,
cfileout_fa,
'UNKNOWN',.true.,.false.,
iverbfa,0,inb,
cdnomc)
1296 IF (
ASSOCIATED(
ysc%DUO%CSELECT))
DEALLOCATE(
ysc%DUO%CSELECT)
1297 ALLOCATE(
ysc%DUO%CSELECT(0))
1319 gsurf_budget = .false.
1320 grad_budget = .false.
1322 gsurf_vars = .false.
1325 gdiag_ocean = .false.
1326 gdiag_seaice = .false.
1327 gwater_profile = .false.
1328 gsurf_evap_budget = .false.
1330 gch_no_flux_isba = .false.
1331 gsurf_misc_budget_isba = .false.
1333 gsurf_misc_budget_teb = .false.
1336 gfrac, gdiag_grid, i2m, gsurf_budget, grad_budget, gcoef, &
1337 gsurf_vars, ibeq, idsteq, gdiag_ocean, gdiag_seaice, &
1338 gwater_profile, gsurf_evap_budget, gflood, gpgd_isba, &
1339 gch_no_flux_isba, gsurf_misc_budget_isba, gpgd_teb, &
1340 gsurf_misc_budget_teb )
1342 ysc%DUO%LSNOWDIMNC = .false.
1383 ALLOCATE( zsea( ini ) )
1384 ALLOCATE( zwater( ini ) )
1385 ALLOCATE( znature( ini ) )
1386 ALLOCATE( ztown( ini ) )
1387 ALLOCATE( zt2m( ini ) )
1388 ALLOCATE( zq2m( ini ) )
1389 ALLOCATE( zz0( ini ) )
1390 ALLOCATE( zz0h( ini ) )
1391 ALLOCATE( zqs_sea( ini ) )
1392 ALLOCATE( zqs_water( ini ) )
1393 ALLOCATE( zqs_nature( ini ) )
1394 ALLOCATE( zqs_town( ini ) )
1395 ALLOCATE( zqs( ini ) )
1396 ALLOCATE( zpsng( ini ) )
1397 ALLOCATE( zpsnv( ini ) )
1398 ALLOCATE( zz0eff( ini ) )
1399 ALLOCATE( zzs( ini ) )
1402 CALL get_surf_var_n(
ysc%FM,
ysc%IM,
ysc%SM,
ysc%TM,
ysc%WM,
ysc%DUO,
ysc%DU,
ysc%UG,
ysc%U,
ysc%USS, &
1403 csurf_filetype,ini,iseries,psea=zsea,pwater=zwater,pnature=znature,ptown=ztown, &
1404 pt2m=zt2m,pq2m=zq2m,pqs=zqs,pz0=zz0,pz0h=zz0h,pz0eff=zz0eff,pqs_sea=zqs_sea, &
1405 pqs_water=zqs_water,pqs_nature=zqs_nature,pqs_town=zqs_town, &
1406 ppsng=zpsng,ppsnv=zpsnv,pzs=zzs )
1410 ALLOCATE(zsea_full(isize))
1411 ALLOCATE(zwater_full(isize))
1412 ALLOCATE(znature_full(isize))
1413 ALLOCATE(ztown_full(isize))
1414 ALLOCATE(zz0_full(isize))
1415 ALLOCATE(zz0eff_full(isize))
1416 ALLOCATE(zzs_full(isize))
1418 ALLOCATE(zsea_full(0))
1419 ALLOCATE(zwater_full(0))
1420 ALLOCATE(znature_full(0))
1421 ALLOCATE(ztown_full(0))
1422 ALLOCATE(zz0_full(0))
1423 ALLOCATE(zz0eff_full(0))
1424 ALLOCATE(zzs_full(0))
1435 WRITE(iluout,
'(A32,I4,A3,I4)')
' GRID BOXES CONTAINING SEA : ',
count( zsea_full(:) > 0. ),
' / ',isize
1436 WRITE(iluout,
'(A32,I4,A3,I4)')
' GRID BOXES CONTAINING WATER : ',
count( zwater_full(:) > 0. ),
' / ',isize
1437 WRITE(iluout,
'(A32,I4,A3,I4)')
' GRID BOXES CONTAINING NATURE : ',
count( znature_full(:) > 0. ),
' / ',isize
1438 WRITE(iluout,
'(A32,I4,A3,I4)')
' GRID BOXES CONTAINING TOWN : ',
count( ztown_full(:) > 0. ),
' / ',isize
1439 WRITE(iluout,*)
'ZZ0 = ',zz0_full
1440 WRITE(iluout,*)
'ZZ0EFF = ',zz0eff_full
1441 WRITE(iluout,*)
'ZZS = ',zzs_full
1442 WRITE(iluout,*)
'MINVAL(ZZS) = ',minval(zzs_full),
' MAXVAL(ZZS) = ',maxval(zzs_full)
1446 DEALLOCATE( zwater )
1447 DEALLOCATE( znature )
1453 DEALLOCATE( zqs_sea )
1454 DEALLOCATE( zqs_water )
1455 DEALLOCATE( zqs_nature )
1456 DEALLOCATE( zqs_town )
1460 DEALLOCATE( zz0eff )
1464 DEALLOCATE(zsea_full )
1465 DEALLOCATE(zwater_full )
1466 DEALLOCATE(znature_full)
1467 DEALLOCATE(ztown_full )
1468 DEALLOCATE(zz0_full )
1469 DEALLOCATE(zz0eff_full )
1470 DEALLOCATE(zzs_full )
1478 #if ! defined in_arpege 1488 WRITE(iluout,*)
' --------------------------' 1489 WRITE(iluout,*)
' | OFFLINE ENDS CORRECTLY |' 1490 WRITE(iluout,*)
' --------------------------' 1494 WRITE(*,*)
' --------------------------' 1495 WRITE(*,*)
' | OFFLINE ENDS CORRECTLY |' 1496 WRITE(*,*)
' --------------------------' 1513 CALL xios_context_finalize()
1521 CALL mpi_finalize(infompi)
character(len=28) cnamelist
subroutine slope_radiative_effect(PTSTEP, PZENITH, PAZIM, PPS, PTA, PRAIN, PDIR_SW, PLW, PZS, PZS_XY, PSLOPANG, PSLOPAZI, PSURF_TRIANGLE)
subroutine fairme(KREP, KNUMER, CDSTTU)
integer(kind=jpim) mplusercomm
subroutine ol_read_atm(HSURF_FILETYPE, HFORCING_FILETYPE, KFORC_STEP, PTA, PQA, PWIND, PDIR_SW, PSCA_SW, PLW, PSNOW, PRAIN, PPS, PCO2, PDIR, OLIMIT_QAIR)
character(len=6) csurf_filetype
character(len=28), save cfileout_nc
character(len=6) cforcing_filetype
subroutine init_output_ol_n(YSC)
subroutine sfx_oasis_read_nam(HPROGRAM, PTSTEP_SURF, HINIT)
real, dimension(5) xtime_write
character(len=28), save cfileout_fa
integer, dimension(:), allocatable nm
character(len=28) csurffile
subroutine init_surf_atm_n(YSC, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, TPDATE_END, HATMFILE, HATMFILETYPE, HTEST)
subroutine close_fileout_ol
subroutine diag_surf_atm_n(YSC, HPROGRAM)
real, dimension(:,:), allocatable xqb_dr
subroutine sfx_oasis_send_ol(F, IM, S, U, W, HPROGRAM, KI, PTIMEC, PSTEP_SURF)
real, dimension(:,:), allocatable xqb_run
subroutine write_budget_coupl_rout
subroutine init_index_mpi(DTCO, U, UG, GCP, HPROGRAM, HINIT, HALG, PIO_FRAC, OSHADOWS)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
character(len=28), save cfilein_lfi_save
subroutine sfx_oasis_def_ol(IO, U, HPROGRAM, HALG_MPI)
character(len=28), save cluout_lfi
character(len=6), dimension(:), allocatable csv
logical ldiag_fa_nocompact
integer, dimension(:), allocatable nyear
character(len=28), save cfilepgd
subroutine abor1_sfx(YTEXT)
subroutine init_slope_param(UG, PGRID_FULL_PAR, PZS, KI, PLAT)
subroutine close_filein_ol
real, dimension(:,:), allocatable xzs_thread
character(len=28), save cfilein_save
integer, dimension(:), allocatable nh
subroutine write_diag_surf_atm_n(YSC, HPROGRAM, HWRITE)
subroutine sunpos(KYEAR, KMONTH, KDAY, PTIME, PLON, PLAT, PTSUN, PZENITH, PAZIMSOL)
real, dimension(6) xtime_calc
subroutine sfx_xios_readnam_ol(HNAMELIST)
real, dimension(:,:,:), allocatable xsurf_triangle_thread
subroutine prep_restart_coupl_topd(UG, U, HPROGRAM, KI)
subroutine goto_model(KMODEL)
subroutine surfex_deallo_list
subroutine open_close_bin_asc_forc(HACTION, HFORCING, HACTION2)
subroutine local_slope_param(JPINDX1, JPINDX2)
character(len=6) cprogname
character(len=28), save cluout_nc
character(len=28), save cfilein_fa_save
integer, parameter nundef
character(len=7) csoftware
character(len=6), save cdnomc
subroutine sfx_oasis_init(HNAMELIST, KLOCAL_COMM, HINIT)
subroutine get_surf_var_n(FM, IM, SM, TM, WM, DGO, D, UG, U, USS,
subroutine ol_time_interp_atm(KSURF_STEP, KNB_ATM, PTA1, PTA2, PQA1, PQA2, PWIND1, PWIND2, PDIR_SW1, PDIR_SW2, PSCA_SW1, PSCA_SW2, PLW1, PLW2, PSNOW2, PRAIN2, PPS1, PPS2, PCO21, PCO22, PDIR1, PDIR2, PZEN, PSUMZEN)
subroutine flag_update(DIO, DUO, ONOWRITE_CANOPY, OPGD, OPROVAR_TO_DIAG, OSELE
type(surfex_t), pointer ysc
subroutine flag_diag_update(FM, IM, SM, TM, WM, DGO, U, SV, OFRAC, ODIAG_GRID, K2M, OSURF_BUDGET, ORAD_BUDGET, OCOEF, OSURF_VARS, KBEQ, KDSTEQ, ODIAG_OCEAN, ODIAG_MISC_SEAICE, OWATER_PROFILE, OSURF_EVAP_BUDGET, OFLOOD, OPGD_ISBA, OCH_NO_FLUX_ISBA, OSURF_MISC_BUDGET_ISBA, OPGD_TEB, OSURF_MISC_BUDGET_TEB)
subroutine close_namelist(HPROGRAM, KLUNAM)
character(len=28), save cfilepgd_lfi
subroutine coupling_surf_atm_n(YSC, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, PAZIM, PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST)
subroutine read_all_namelists(YSC, HPROGRAM, HINIT, ONAM_READ)
subroutine write_discharge_file(HPROGRAM, HFILE, HFORM, KYEAR, KMONTH, KDAY, KH, KM, PQTOT)
subroutine init_output_nc_n(BDD, CHE, CHN, CHU, DTS, DTT, DTZ, IM
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine write_surf_atm_n(YSC, HPROGRAM, HWRITE, OLAND_USE)
character(len=28), save cfilepgd_fa
integer, dimension(4) ndatestop
integer, dimension(:), allocatable nsize_task
character(len=28), save cfileout_lfi
real, dimension(:,:), allocatable xzs_xy_thread
subroutine add_forecast_to_date_surf(KYEAR, KMONTH, KDAY, PSEC)
type(surfex_t), dimension(:), allocatable, target, save ysurf_list
subroutine fandar(KREP, KNUMER, KDATEF)
integer, dimension(:), allocatable nday
real, dimension(:,:,:), allocatable xslopang_thread
integer, dimension(:), allocatable nindex
real, dimension(:,:,:), allocatable xslopazi_thread
subroutine ol_read_atm_conf(DTCO, U, HGRID, HSURF_FILETYPE, HFORCING_FILETYPE, ODELAYEDSTART_NC, KDATESTOP, PDURATION, PTSTEP_FORC, KNI, KYEAR, KMONTH, KDAY, PTIME, PLAT, PLON, PZS, PZREF, PUREF, KTIMESTARTINDEX)
subroutine init_crodebug(HSNOW_SCHEME)
subroutine surfex_alloc_list(KMODEL)
character(len=4) yalg_mpi
character(len=28), save cfileout
character(len=6) ctimeseries_filetype
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
character(len=28), save cfilein
character(len=28), save cfilein_fa
subroutine sfx_oasis_recv_ol(F, IM, S, U, W, HPROGRAM, KI, KSW, PTIMEC, PTSTEP_SURF, PZENITH, PSW_BANDS, PTSRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF)
subroutine compare_orography(DTCO, U, HPROGRAM, OSURFZS, PDELT_ZSMAX)
logical, save lfanocompact
type(xios_context) txios_context
character(len=28) cpgdfile
character(len=28), save cfilepgd_nc
character(len=28) cprepfile
subroutine wlog_mpi(HLOG, PLOG, KLOG, KLOG2, OLOG)
character(len=28), save cfilein_lfi
character(len=28), save cfilein_nc_save
subroutine ol_alloc_atm(KNI, KBANDS, KSCAL)
integer, dimension(:), allocatable nmonth
subroutine init_surf_landuse_n(DTCO, OREAD_BUDGETC, U, UG, IM, SV, SLT, NDST, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
subroutine sfx_xios_setup_ol(YSC, KLUOUT, KYEAR, KMONTH, KDAY, PTIME, PSTEP)
subroutine faitou(KREP, KNUMER, LDNOMM, CDNOMF, CDSTTU, LDERFA, LDIMST, KNIMES, KNBARP, KNBARI, CDNOMC)
subroutine open_filein_ol
character(len=28), save cfilein_nc
real, dimension(:,:), allocatable xqtot