SUBROUTINE print_ui_output(nperiods, nrot_years) USE pd_dates_vars USE pd_update_vars USE pd_report_vars USE pd_var_tables USE mandate_vars IMPLICIT NONE INCLUDE 'file.fi' INTEGER, INTENT (IN) :: nperiods INTEGER, INTENT (IN) :: nrot_years INTEGER :: i,m,y ! local loop variables INTEGER :: n,p,x ! local loop variables LOGICAL :: match x = 1 ! format for header of ui output report file write (UNIT=luogui,FMT="(1(A))",ADVANCE="NO") & 'sd ed mo yr|' write (UNIT=luogui,FMT="(2(A))",ADVANCE="NO") & ' operation |', & ' crop |' write (UNIT=luogui,FMT="(16(A))",ADVANCE="NO") & ' tot_loss|',' crp+salt|',' suspen|',' pm10|', & ' cs1|',' cs2|',' cs3|',' cs4|', & ' ss1|',' ss2|',' ss3|',' ss4|', & ' pm1|',' pm2|',' pm3|',' pm4|' write (UNIT=luogui,FMT="(11(A))",ADVANCE="NO") & ' salt_loss|',' loss_area|',' loss_frac|', & ' salt_dep|',' dep_area|',' dep_frac|', & ' flux_rate|',' flux_area|',' flux_frac|', & 'shelt_area|','shelt_frac|' write (UNIT=luogui,FMT="(3(A))",ADVANCE="NO") & ' precip|',' w_energy|','snow_cover|' ! ' precip|',' w_energy|','snow_cover|',' dry_idx|' write (UNIT=luogui,FMT="(11(A))",ADVANCE="NO") & ' l_can_cov|','l_sil_area|',' l_st_mass|', & ' d_fl_cov|',' d_st_sil|',' d_fl_mass|',' d_st_mass|', & 'b_f_fl_cov|','b_f_st_sil|','b_m_fl_cov|','b_m_st_sil|' write (UNIT=luogui,FMT="(4(A))",ADVANCE="NO") & ' rdg_or|',' rdg_ht|',' rdg_sp|',' rr|' write (UNIT=luogui,FMT="(3(A))",ADVANCE="YES") & ' surf_84|',' surf_AS|',' surf_crust|' DO y = 1, nrot_years DO p = 1, nperiods IF (period_dates(p)%sy == y) THEN write (UNIT=luogui,FMT="(i2, '-',i2,'/',i2,'/',i2,'|')",ADVANCE="NO") & period_dates(p)%sd, period_dates(p)%ed, & period_dates(p)%sm, period_dates(p)%sy ! Check to see if an operation occurs on this date ! If so, set the flag and print the last operation ! done on this date (if multiple operations on same date) match = .false. DO i = size(mandate), 1, -1 IF ((mandate(i)%d == period_dates(p)%sd) .and. & (mandate(i)%m == period_dates(p)%sm) .and. & (mandate(i)%y == y)) THEN match = .true. write (UNIT=luogui,FMT="(1x,A40,'| ',A40,'|')",ADVANCE="NO") & mandate(i)%opname, mandate(i)%cropname GOTO 10 END IF END DO 10 IF (match == .false.) THEN ! No operation or crop on this date write (UNIT=luogui,FMT="(1x,A40,'|')",ADVANCE="NO") "" write (UNIT=luogui,FMT="(1x,A40,'|')",ADVANCE="NO") "" END IF write (UNIT=luogui,FMT="(16(f10.4,'|'))",ADVANCE="NO") & period_report(Eros_loss,p)%val, & period_report(Salt_loss,p)%val, & period_report(Susp_loss,p)%val, & period_report(PM10_loss,p)%val, & period_report(Salt_1,p)%val, & period_report(Salt_2,p)%val, & period_report(Salt_3,p)%val, & period_report(Salt_4,p)%val, & period_report(Susp_1,p)%val, & period_report(Susp_2,p)%val, & period_report(Susp_3,p)%val, & period_report(Susp_4,p)%val, & period_report(PM10_1,p)%val, & period_report(PM10_2,p)%val, & period_report(PM10_3,p)%val, & period_report(PM10_4,p)%val write (UNIT=luogui,FMT="(11(f10.4,'|'))",ADVANCE="NO") & period_report(Salt_loss2,p)%val, & period_report(Salt_loss2_area,p)%val, & period_report(Salt_loss2_frac,p)%val, & period_report(Salt_dep2,p)%val, & period_report(Salt_dep2_area,p)%val, & period_report(Salt_dep2_frac,p)%val, & period_report(Trans_Cap,p)%val, & period_report(Trans_Cap_area,p)%val, & period_report(Trans_Cap_frac,p)%val, & period_report(Sheltered_area,p)%val, & period_report(Sheltered_frac,p)%val ! Check to see if period is an "end of half month" period ! If so, set the flag and print the "weather" variables ! x = half_month index value that we last had a match match = .false. DO i = x, nrot_years*24 IF ((hmonth_dates(i)%ed == period_dates(p)%ed) .and. & (hmonth_dates(i)%em == period_dates(p)%em) .and. & (hmonth_dates(i)%ey == period_dates(p)%ey)) THEN match = .true. x = i write (UNIT=luogui,FMT="(3(f10.4,'|'))",ADVANCE="NO") & hmonth_report(Precipi,x)%val, & hmonth_report(Wind_energy,x)%val, & hmonth_report(Snow_cover,x)%val ! hmonth_report(Dryness_ratio,x)%val GOTO 20 END IF END DO 20 IF (match == .false.) THEN ! No climate info on this date write (UNIT=luogui,FMT="(3(A10,'|'))",ADVANCE="NO") "","","" END IF write (UNIT=luogui,FMT="(11(f10.4,'|'))",ADVANCE="NO") & period_report(Crop_canopy_cov,p)%val, & period_report(Crop_stand_sil,p)%val, & period_report(Crop_stand_mass,p)%val, & period_report(Res_flat_cov,p)%val, & period_report(Res_stand_sil,p)%val, & period_report(Res_flat_mass,p)%val, & period_report(Res_stand_mass,p)%val, & period_report(All_flat_cov,p)%val, & period_report(All_stand_sil,p)%val, & period_report(All_flat_mass,p)%val, & period_report(All_stand_mass,p)%val write (UNIT=luogui,FMT="(4(f10.4,'|'))",ADVANCE="NO") & period_report(Ridge_dir,p)%val, & period_report(Ridge_ht,p)%val, & period_report(Ridge_sp,p)%val, & period_report(Random_rough,p)%val write (UNIT=luogui,FMT="(3(f10.4,'|'))",ADVANCE="YES") & period_report(Surface_84,p)%val, & period_report(Surface_AS,p)%val, & period_report(Surface_Crust,p)%val END IF END DO ! print the rotation yearly values here write (UNIT=luogui,FMT="(1('# ',i2,'|'))",ADVANCE="NO") & yrly_dates(y)%sy write (UNIT=luogui,FMT="(1x,'N/A',A37,'|')",ADVANCE="NO") "" !skip op field write (UNIT=luogui,FMT="(1x,'N/A',A37,'|')",ADVANCE="NO") "" !skip crop field write (UNIT=luogui,FMT="(16(f10.4,'|'))",ADVANCE="NO") & yrly_report(Eros_loss,y)%val, & yrly_report(Salt_loss,y)%val, & yrly_report(Susp_loss,y)%val, & yrly_report(PM10_loss,y)%val, & yrly_report(Salt_1,y)%val, & yrly_report(Salt_2,y)%val, & yrly_report(Salt_3,y)%val, & yrly_report(Salt_4,y)%val, & yrly_report(Susp_1,y)%val, & yrly_report(Susp_2,y)%val, & yrly_report(Susp_3,y)%val, & yrly_report(Susp_4,y)%val, & yrly_report(PM10_1,y)%val, & yrly_report(PM10_2,y)%val, & yrly_report(PM10_3,y)%val, & yrly_report(PM10_4,y)%val write (UNIT=luogui,FMT="(11(f10.4,'|'))",ADVANCE="NO") & yrly_report(Salt_loss2,y)%val, & yrly_report(Salt_loss2_area,y)%val, & yrly_report(Salt_loss2_frac,y)%val, & yrly_report(Salt_dep2,y)%val, & yrly_report(Salt_dep2_area,y)%val, & yrly_report(Salt_dep2_frac,y)%val, & yrly_report(Trans_Cap,y)%val, & yrly_report(Trans_Cap_area,y)%val, & yrly_report(Trans_Cap_frac,y)%val, & yrly_report(Sheltered_area,y)%val, & yrly_report(Sheltered_frac,y)%val write (UNIT=luogui,FMT="(3(f10.4,'|'))",ADVANCE="NO") & yrly_report(Precipi,y)%val, & yrly_report(Wind_energy,y)%val, & yrly_report(Snow_cover,y)%val ! yrly_report(Dryness_ratio,y)%val DO i = 1, 18 !skip veg/surf fields write (UNIT=luogui,FMT="(A7,'N/A|')",ADVANCE="NO") "" END DO write (UNIT=luogui,FMT="(A)",ADVANCE="YES") "" END DO ! print the monthly values here y = 0 DO m = 1, 12 write (UNIT=luogui,FMT="(1(' ',i2,'|'))",ADVANCE="NO") m write (UNIT=luogui,FMT="(1x,A40,'|')",ADVANCE="NO") "" !skip op field write (UNIT=luogui,FMT="(1x,A40,'|')",ADVANCE="NO") "" !skip crop field write (UNIT=luogui,FMT="(16(f10.4,'|'))",ADVANCE="NO") & monthly_report(Eros_loss,m,y)%val, & monthly_report(Salt_loss,m,y)%val, & monthly_report(Susp_loss,m,y)%val, & monthly_report(PM10_loss,m,y)%val, & monthly_report(Salt_1,m,y)%val, & monthly_report(Salt_2,m,y)%val, & monthly_report(Salt_3,m,y)%val, & monthly_report(Salt_4,m,y)%val, & monthly_report(Susp_1,m,y)%val, & monthly_report(Susp_2,m,y)%val, & monthly_report(Susp_3,m,y)%val, & monthly_report(Susp_4,m,y)%val, & monthly_report(PM10_1,m,y)%val, & monthly_report(PM10_2,m,y)%val, & monthly_report(PM10_3,m,y)%val, & monthly_report(PM10_4,m,y)%val write (UNIT=luogui,FMT="(11(f10.4,'|'))",ADVANCE="NO") & monthly_report(Salt_loss2,m,y)%val, & monthly_report(Salt_loss2_area,m,y)%val, & monthly_report(Salt_loss2_frac,m,y)%val, & monthly_report(Salt_dep2,m,y)%val, & monthly_report(Salt_dep2_area,m,y)%val, & monthly_report(Salt_dep2_frac,m,y)%val, & monthly_report(Trans_Cap,m,y)%val, & monthly_report(Trans_Cap_area,m,y)%val, & monthly_report(Trans_Cap_frac,m,y)%val, & monthly_report(Sheltered_area,m,y)%val, & monthly_report(Sheltered_frac,m,y)%val write (UNIT=luogui,FMT="(3(f10.4,'|'))",ADVANCE="NO") & monthly_report(Precipi,m,y)%val, & monthly_report(Wind_energy,m,y)%val, & monthly_report(Snow_cover,m,y)%val ! monthly_report(Dryness_ratio,m,y)%val DO i = 1, 18 !skip veg/surf fields write (UNIT=luogui,FMT="(A7,'N/A|')",ADVANCE="NO") "" END DO write (UNIT=luogui,FMT="(A)",ADVANCE="YES") "" END DO ! print the simulation run yearly average values here write (UNIT=luogui,FMT="(2(A))",ADVANCE="NO") & '* ','|' write (UNIT=luogui,FMT="(1x,'N/A',A37,'|')",ADVANCE="NO") "" !skip op field write (UNIT=luogui,FMT="(1x,'N/A',A37,'|')",ADVANCE="NO") "" !skip crop field y = 0 write (UNIT=luogui,FMT="(16(f10.4,'|'))",ADVANCE="NO") & yrly_report(Eros_loss,y)%val, & yrly_report(Salt_loss,y)%val, & yrly_report(Susp_loss,y)%val, & yrly_report(PM10_loss,y)%val, & yrly_report(Salt_1,y)%val, & yrly_report(Salt_2,y)%val, & yrly_report(Salt_3,y)%val, & yrly_report(Salt_4,y)%val, & yrly_report(Susp_1,y)%val, & yrly_report(Susp_2,y)%val, & yrly_report(Susp_3,y)%val, & yrly_report(Susp_4,y)%val, & yrly_report(PM10_1,y)%val, & yrly_report(PM10_2,y)%val, & yrly_report(PM10_3,y)%val, & yrly_report(PM10_4,y)%val write (UNIT=luogui,FMT="(11(f10.4,'|'))",ADVANCE="NO") & yrly_report(Salt_loss2,y)%val, & yrly_report(Salt_loss2_area,y)%val, & yrly_report(Salt_loss2_frac,y)%val, & yrly_report(Salt_dep2,y)%val, & yrly_report(Salt_dep2_area,y)%val, & yrly_report(Salt_dep2_frac,y)%val, & yrly_report(Trans_Cap,y)%val, & yrly_report(Trans_Cap_area,y)%val, & yrly_report(Trans_Cap_frac,y)%val, & yrly_report(Sheltered_area,y)%val, & yrly_report(Sheltered_frac,y)%val write (UNIT=luogui,FMT="(3(f10.4,'|'))",ADVANCE="NO") & yrly_report(Precipi,y)%val, & yrly_report(Wind_energy,y)%val, & yrly_report(Snow_cover,y)%val ! yrly_report(Dryness_ratio,y)%val DO i = 1, 18 !skip veg/surf fields write (UNIT=luogui,FMT="(A7,'N/A|')",ADVANCE="NO") "" END DO write (UNIT=luogui,FMT="(A)",ADVANCE="YES") "" END SUBROUTINE print_ui_output