diff --git a/src/kernel/diffusive/diffusive.f90 b/src/kernel/diffusive/diffusive.f90 index 88f76ff01..4233e42b0 100644 --- a/src/kernel/diffusive/diffusive.f90 +++ b/src/kernel/diffusive/diffusive.f90 @@ -179,7 +179,7 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt integer, dimension(:,:), allocatable :: flag_lfrac double precision :: x double precision :: saveInterval, width - double precision :: maxCourant + !double precision :: maxCourant double precision :: dtini_given double precision :: timesDepth double precision :: t @@ -201,6 +201,7 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt double precision :: equiv_one, slopeQ, intcQ double precision :: slopeE, intcE, dst_lnk double precision :: lfrac, dst_top, dst_btm + double precision :: mindepth_nstab double precision, dimension(:), allocatable :: tarr_ql double precision, dimension(:), allocatable :: varr_ql double precision, dimension(:), allocatable :: tarr_ub @@ -215,8 +216,8 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt double precision, dimension(:,:), allocatable :: skRight double precision, dimension(:,:), allocatable :: used_lfrac double precision, dimension(:,:,:), allocatable :: temp_q_ev_g - double precision, dimension(:,:,:), allocatable :: temp_elv_ev_g - + double precision, dimension(:,:,:), allocatable :: temp_elv_ev_g + !----------------------------------------------------------------------------- ! Time domain parameters dtini = timestep_ar_g(1) ! initial timestep duration [sec] @@ -253,7 +254,8 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt so_llm = para_ar_g(9) ! lower limit of channel bed slope (default: 0.0001) theta = para_ar_g(10) ! weight for computing 2nd derivative: ! 0: explicit, 1: implicit (default: 1.0) - dsbc_option = para_ar_g(11) ! downstream water depth boundary condition option 1:given water depth data, 2:normal depth + dsbc_option = para_ar_g(11) ! downstream water depth boundary condition option 1:given water depth data, 2:normal depth + mindepth_nstab = 0.1 ! minimum water depth for numerical stability when estimated/observed downstream boundary depth data is used. !----------------------------------------------------------------------------- ! Some parameters for using natural cross section bathymetry data mxnbathy = mxnbathy_g ! maximum size of bathymetry data points @@ -360,7 +362,7 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt dimensionless_Di = -999 dimensionless_Fc = -999 dimensionless_D = -999 - dbcd = 0.0 !TODO: pass downstream boundary values from Python + dbcd = dbcd_g q_ev_g = 0.0 elv_ev_g = 0.0 temp_q_ev_g = 0.0 @@ -504,7 +506,7 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt ! time step series for downstream boundary data do n=1, nts_db_g tarr_db(n) = t0 * 60.0 + dt_db * & - real(n-1,KIND(dt_db)) / 60.0 ! [min] + real(n-1,KIND(dt_db)) / 60.0 ! [min] end do ! time step seris for data assimilation for discharge at bottom node of a related reach @@ -531,6 +533,9 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt t = t0 * 60.0 oldY(ncomp, j) = intp_y(nts_db_g, tarr_db, varr_db, t) newY(ncomp, j) = oldY(ncomp, j) + if ((newY(ncomp, j) - z(ncomp, j)).lt.mindepth_nstab) then + newY(ncomp, j) = mindepth_nstab + z(ncomp, j) + end if else if (dsbc_option == 2) then ! normal depth as TW boundary condition xcolID = 10 @@ -546,9 +551,10 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt ! compute newY(i, j) for i=1, ncomp-1 with the given newY(ncomp, j) ! ** At intial time, oldY(i,j) values at i < ncomp, used in subroutine rtsafe, are not defined. - ! ** So, let's assume the values are all equal to flow at the bottom node. + ! ** So, let's assume the depth values are all nodes equal to depth at the bottom node. + wdepth = newY(ncomp, j) - z(ncomp, j) do i = 1, ncomp -1 - oldY(i,j) = newY(ncomp, j) + oldY(i,j) = wdepth + z(i, j) end do call mesh_diffusive_backward(dtini_given, t0, t, tfin, saveInterval, j) @@ -589,7 +595,7 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt end if t = t + dtini / 60. !* [min] end do - + !----------------------------------------------------------------------------- ! Initializations and re-initializations qpx = 0. @@ -626,8 +632,9 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt ! Calculate the duration of this timestep (dtini) ! Timestep duration is selected to maintain numerical stability - if (j == mstem_frj(1)) call calculateDT(t0, t, saveInterval, cfl, & - tfin, maxCelDx, dtini_given) + if (j == mstem_frj(1)) then + call calculateDT(t0, t, saveInterval, cfl, tfin, maxCelDx, dtini_given) + end if ! estimate lateral flow at current time t do i = 1, ncomp - 1 @@ -667,7 +674,7 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt ! There are no links at the upstream of the reach (frnw_g(j,3)==0) end if - + ! Add lateral inflows to the reach head newQ(1, j) = newQ(1, j) + lateralFlow(1, j) * dx(1, j) @@ -702,12 +709,12 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt ! Downstream boundary at TAILWATER ! reach index j has NO downstream connection (it IS a tailwater reach) if (dsbc_option == 1) then - ! use downstream boundary data source to set bottom node WSEL value - ! ***** COMING SOON ***** - !do n = 1, nts_db_g <-- already executed when initial values of Q and Y are computed. - ! varr_db(n) = dbcd(n) + z(ncomp, j) !* when dbcd is water depth [m], channel bottom elev is added. - !end do + ! use downstream boundary data source to set bottom node WSEL value newY(ncomp, j) = intp_y(nts_db_g, tarr_db, varr_db, t+dtini/60.) + ! to prevent too small water depth at boundary + if ((newY(ncomp, j) - z(ncomp, j)).lt.mindepth_nstab) then + newY(ncomp, j) = mindepth_nstab + z(ncomp, j) + end if xcolID = 1 ycolID = 2 newArea(ncomp, j) = intp_xsec_tab(ncomp, j, nel, xcolID, ycolID, newY(ncomp,j)) ! area of normal elevation @@ -727,16 +734,11 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt ! Identify the maximum calculated celerity/dx ratio at this timestep ! maxCelDx is used to determine the duration of the next timestep -! if (j == mstem_frj(1)) then if (jm == 1) then maxCelDx = 0. - maxCelerity = 0. do i = 1, nmstem_rch - do kkk = 2, frnw_g(mstem_frj(i), 1) - maxCelDx = max(maxCelDx, & - celerity(kkk, mstem_frj(i)) / & - dx(kkk-1, mstem_frj(i))) - maxCelerity = max(maxCelerity, celerity(kkk,i)) + do kkk = 1, frnw_g(mstem_frj(i), 1)-1 + maxCelDx = max(maxCelDx, celerity(kkk, mstem_frj(i)) / dx(kkk, mstem_frj(i))) end do end do endif @@ -757,9 +759,9 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt courant(i) = (newQ(i, j) + newQ(i+1, j)) / (newArea(i, j) + newArea(i+1, j)) * dtini / dx(i, j) endif end do - if (maxCourant < maxval(courant(1:ncomp - 1))) then - maxCourant = maxval(courant(1:ncomp-1)) - end if + !if (maxCourant < maxval(courant(1:ncomp - 1))) then + ! maxCourant = maxval(courant(1:ncomp-1)) + !end if end do ! Advance model time @@ -773,7 +775,7 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt ! diffusive wave simulation time print print*, "diffusive simulatoin time in minute=", t - + ! write results to output arrays if ( (mod((t - t0 * 60.) * 60., saveInterval) <= TOLERANCE) .or. (t == tfin * 60.)) then do jm = 1, nmstem_rch @@ -891,8 +893,8 @@ subroutine diffnw(timestep_ar_g, nts_ql_g, nts_ub_g, nts_db_g, ntss_ev_g, nts_qt end do deallocate(used_lfrac) deallocate(flag_lfrac) - endif - + endif + deallocate(frnw_g) deallocate(area, bo, pere, areap, qp, z, depth, sk, co, dx) deallocate(volRemain, froud, courant, oldQ, newQ, oldArea, newArea, oldY, newY) @@ -932,15 +934,15 @@ subroutine calculateDT(initialTime, time, saveInterval, & ! Language: Fortran 90. ! This code is written to JULES coding standards v1. !----------------------------------------------------------------------------- - + ! Subroutine arguments double precision, intent(in) :: initialTime ! [sec] double precision, intent(in) :: time ! [hrs] double precision, intent(in) :: saveInterval ! [sec] double precision, intent(in) :: tfin ! [hrs] double precision, intent(in) :: given_dt ! [sec] - double precision, intent(in) :: maxAllowCourantNo - double precision, intent(in) :: max_C_dx + double precision, intent(in) :: maxAllowCourantNo ! = cfl + double precision, intent(in) :: max_C_dx ! = maxCelDx ! Local variables integer :: a @@ -960,7 +962,7 @@ subroutine calculateDT(initialTime, time, saveInterval, & ! if dtini extends beyond final time, then truncate it if (time + dtini / 60. > tfin * 60.) dtini = (tfin * 60. - time) * 60. - + end subroutine subroutine calc_dimensionless_numbers(j) @@ -1119,7 +1121,7 @@ subroutine mesh_diffusive_forward(dtini_given, t0, t, tfin, saveInterval,j) double precision :: currentQ double precision :: eei_ghost, ffi_ghost, exi_ghost double precision :: fxi_ghost, qp_ghost, qpx_ghost - + !----------------------------------------------------------------------------- !* change 20210228: All qlat to a river reach is applied to the u/s boundary !* Note: lateralFlow(1,j) is already added to the boundary @@ -1254,30 +1256,30 @@ subroutine mesh_diffusive_forward(dtini_given, t0, t, tfin, saveInterval,j) qpx_ghost = 0. ! when a reach has usgs streamflow data at its location, apply DA - if (usgs_da_reach(j) /= 0) then + !if (usgs_da_reach(j) /= 0) then - allocate(varr_da(nts_da)) - do n = 1, nts_da - varr_da(n) = usgs_da(n, j) - end do - qp(ncomp,j) = intp_y(nts_da, tarr_da, varr_da, t + dtini/60.) - flag_da = 1 + ! allocate(varr_da(nts_da)) + ! do n = 1, nts_da + ! varr_da(n) = usgs_da(n, j) + ! end do + ! qp(ncomp,j) = intp_y(nts_da, tarr_da, varr_da, t + dtini/60.) + ! flag_da = 1 ! check usgs_da value is in good quality - irow = locate(tarr_da, t + dtini/60.) - if (irow == nts_da) then - irow = irow-1 - endif - if ((varr_da(irow)<= -4443.999).or.(varr_da(irow+1)<= -4443.999)) then + ! irow = locate(tarr_da, t + dtini/60.) + ! if (irow == nts_da) then + ! irow = irow-1 + ! endif + ! if ((varr_da(irow)<= -4443.999).or.(varr_da(irow+1)<= -4443.999)) then ! when usgs data is missing or in poor quality qp(ncomp,j) = eei(ncomp) * qp_ghost + ffi(ncomp) flag_da = 0 - endif - deallocate(varr_da) - else + ! endif + ! deallocate(varr_da) + ! else qp(ncomp,j) = eei(ncomp) * qp_ghost + ffi(ncomp) flag_da = 0 - endif + ! endif qpx(ncomp,j) = exi(ncomp) *qpx_ghost + fxi(ncomp) @@ -1287,17 +1289,18 @@ subroutine mesh_diffusive_forward(dtini_given, t0, t, tfin, saveInterval,j) end do ! when a reach hasn't been applied to DA - if ((usgs_da_reach(j) == 0).or.(flag_da == 0)) then + ! if ((usgs_da_reach(j) == 0).or.(flag_da == 0)) then qp(1, j) = newQ(1, j) qp(1, j) = qp(1, j) + allqlat - endif + ! endif + do i = 1, ncomp if (abs(qp(i, j)) < q_llm) then - qp(i, j) = q_llm + qp(i, j) = q_llm end if end do - + ! update newQ do i = 1, ncomp newQ(i, j) = qp(i, j) @@ -1366,7 +1369,6 @@ subroutine mesh_diffusive_backward(dtini_given, t0, t, tfin, saveInterval, j) ! double precision :: tempDepthi_1 double precision :: Q_cur, Q_ds, z_cur, z_ds, y_cur, y_ds - !----------------------------------------------------------------------------- ncomp = frnw_g(j, 1) S_ncomp = (-z(ncomp, j) + z(ncomp-1, j)) / dx(ncomp-1, j) @@ -1404,15 +1406,13 @@ subroutine mesh_diffusive_backward(dtini_given, t0, t, tfin, saveInterval, j) ! topwTable = xsec_tab(6,:,i,j) skkkTable = xsec_tab(11,:,i,j) - xt=newY(i, j) - + xt=newY(i, j) ! Estimate co(i) (???? what is this?) by interpolation currentSquareDepth = (elevTable - z(i, j)) ** 2. call r_interpol(currentSquareDepth, convTable, nel, & (newY(i, j)-z(i, j)) ** 2.0, co(i)) - if (co(i) .eq. -9999) then ! test print*, t, i, j, newY(i,j), newY(i, j)-z(i, j), co(i) @@ -1452,7 +1452,7 @@ subroutine mesh_diffusive_backward(dtini_given, t0, t, tfin, saveInterval, j) ! ! chnWidth = min(chnWidth, bo(i, j)) ! ???? What exactly is happening, here ???? - if (depthCalOk(i) .eq. 1) then + !if (depthCalOk(i) .eq. 1) then ! Calculate celerity, diffusivity and velocity celerity2(i) = 5.0 / 3.0 * abs(sfi) ** 0.3 * & @@ -1462,15 +1462,15 @@ subroutine mesh_diffusive_backward(dtini_given, t0, t, tfin, saveInterval, j) ! vel = qp(i, j) / newArea(i, j) ! Check celerity value - if (celerity2(i) .gt. 3.0 * vel) celerity2(i) = vel * 3.0 - else - if (qp(i, j) .lt. 1) then - celerity2(i) = C_llm - else - celerity2(i) = 1.0 - end if - diffusivity2(i) = diffusivity(i,j) - end if + !if (celerity2(i) .gt. 3.0 * vel) celerity2(i) = vel * 3.0 + !else + ! if (qp(i, j) .lt. 1) then + ! celerity2(i) = C_llm + ! else + ! celerity2(i) = 1.0 + ! end if + ! diffusivity2(i) = diffusivity(i,j) + !end if if (i .gt. 1) then ! ==================================================== @@ -1514,7 +1514,6 @@ subroutine mesh_diffusive_backward(dtini_given, t0, t, tfin, saveInterval, j) ! if (diffusivity(i, j) > D_ulm) diffusivity(i, j) = D_ulm !!! Test if (diffusivity(i, j) < D_llm) diffusivity(i, j) = D_llm !!! Test end do - end subroutine mesh_diffusive_backward function rtsafe(i, j, Q_cur, Q_ds, z_cur, z_ds, y_ds) @@ -1547,7 +1546,7 @@ function rtsafe(i, j, Q_cur, Q_ds, z_cur, z_ds, y_ds) double precision :: x1, x2, df, dxx, dxold, f, fh, fl, temp, xh, xl double precision :: y_norm, y_ulm_multi, y_llm_multi, elv_norm, y_old double precision :: rtsafe - + y_ulm_multi = 2.0 y_llm_multi = 0.1 @@ -1566,8 +1565,8 @@ function rtsafe(i, j, Q_cur, Q_ds, z_cur, z_ds, y_ds) call funcd_diffdepth(i, j, Q_cur, Q_ds, z_cur, z_ds, x1, y_ds, fl, df) - call funcd_diffdepth(i, j, Q_cur, Q_ds, z_cur, z_ds, x2, y_ds, fh, df) - + call funcd_diffdepth(i, j, Q_cur, Q_ds, z_cur, z_ds, x2, y_ds, fh, df) + if ((fl > 0.0 .and. fh > 0.0) .or. (fl < 0.0 .and. fh < 0.0)) then rtsafe = y_norm return @@ -1600,16 +1599,16 @@ function rtsafe(i, j, Q_cur, Q_ds, z_cur, z_ds, y_ds) dxold = dxx dxx = 0.50 * (xh - xl) rtsafe = xl + dxx - if (xl == rtsafe) return ! change in root is negligible. + if (xl == rtsafe) return else ! newton step acceptable. take it. dxold = dxx dxx = f / df temp = rtsafe rtsafe = rtsafe - dxx - if (temp == rtsafe) return + if (temp == rtsafe) return end if - if (abs(dxx) < xacc) return ! convergence criterion. + if (abs(dxx) < xacc) return ! one new function evaluation per iteration. call funcd_diffdepth(i, j, Q_cur, Q_ds, z_cur, z_ds, rtsafe, y_ds, f, df) @@ -1740,11 +1739,11 @@ subroutine readXsection_natural_mann_vertices(idx_node, idx_reach, timesDepth) ! subroutine local variables integer :: i_area, i_find, num integer :: i1, i2 - integer :: ic, iel, ii, iel_start, iel_incr_start + integer :: ic, iel, ii, ii2, iv, iel_start, iel_incr_start, iel_decr_start, ndmy double precision :: el_min, el_max, el_range, el_incr, el_now, x1, y1, x2, y2, x_start, x_end double precision :: f2m, cal_area, cal_peri, cal_topW double precision :: mN_start, mN_end, cal_equiv_mann - double precision :: pos_slope, incr_rate + double precision :: pos_slope, incr_rate, max_value integer, dimension(:), allocatable :: i_start, i_end double precision, dimension(:), allocatable :: x_bathy_leftzero double precision, dimension(:), allocatable :: xcs, ycs, manncs @@ -1752,7 +1751,10 @@ subroutine readXsection_natural_mann_vertices(idx_node, idx_reach, timesDepth) double precision, dimension(:), allocatable :: redi1All double precision, dimension(:), allocatable :: conv1, tpW1 double precision, dimension(:), allocatable :: newdKdA - double precision, dimension(:), allocatable :: compoundSKK, elev + double precision, dimension(:), allocatable :: compoundSKK, elev, dmyarr + + !test + double precision :: dmy1, dmy2, dmy3 allocate(el1(nel), a1(nel), peri1(nel), redi1(nel), redi1All(nel)) allocate(equiv_mann(nel), conv1(nel), tpW1(nel)) @@ -1760,8 +1762,6 @@ subroutine readXsection_natural_mann_vertices(idx_node, idx_reach, timesDepth) allocate(compoundSKK(nel), elev(nel)) allocate(i_start(nel), i_end(nel)) - !open(unit=201, file="./output/xsec_natural.txt") - f2m = 1.0 maxTableLength = size_bathy(idx_node, idx_reach) + 2 ! 2 is added to count for a vertex on each infinite vertical wall on either side. @@ -1781,6 +1781,10 @@ subroutine readXsection_natural_mann_vertices(idx_node, idx_reach, timesDepth) xcs(ic) = x1 * f2m ycs(ic) = y1 * f2m manncs(ic) = mann_bathy(ic-1, idx_node, idx_reach) + ! avoid too large (egregiously) manning's N value + if (manncs(ic).gt.0.15) then !0.15 is typical value for Floodplain trees + manncs(ic) = 0.15 + endif end do num = maxTableLength @@ -1908,7 +1912,7 @@ subroutine readXsection_natural_mann_vertices(idx_node, idx_reach, timesDepth) newdKdA(iel) = (conv1(iel) - conv1(iel-1)) / (a1(iel) - a1(iel-1)) end if - compoundSKK(iel) = 1.0 / equiv_mann(iel) + compoundSKK(iel) = 1.0 / equiv_mann(iel) enddo ! smooth conveyance curve (a function of elevation) so as to have monotonically increasing curve @@ -1946,23 +1950,30 @@ subroutine readXsection_natural_mann_vertices(idx_node, idx_reach, timesDepth) ! smooth dKdA curve (a function of elevation) so as to have monotonically increasing curve iel_start = 2 incr_rate = 0.02 - do iel = iel_start, nel + do iel = iel_start, nel if (newdKdA(iel) <= newdKdA(iel-1)) then ! -- find j* such that conv1(j*) >> conv1(j-1) ii = iel - do while (newdKdA(ii) <= (1.0 + incr_rate) * newdKdA(iel-1)) + do while ((newdKdA(ii) <= (1.0 + incr_rate) * newdKdA(iel-1)).and.(ii < nel)) ii = ii + 1 end do - - iel_incr_start = ii - pos_slope = (newdKdA(iel_incr_start) - newdKdA(iel-1)) / (el1(iel_incr_start) - el1(iel-1)) - - do ii = iel, iel_incr_start - 1 - newdKdA(ii) = newdKdA(iel-1) + pos_slope * (el1(ii) - el1(iel-1)) - enddo - iel_start = iel_incr_start - endif + ! when there is no dK/dA values larger than the one at iel, reduce the starting value by a half to search again + if (ii.ge.nel) then + iel_incr_start = ii + + else + iel_decr_start = iel + iel_incr_start = ii + pos_slope = ( newdKdA(iel_incr_start) - newdKdA(iel_decr_start-1)) / & + (el1(iel_incr_start) - el1(iel_decr_start-1)) + + do ii = iel_decr_start, iel_incr_start - 1 + newdKdA(ii) = newdKdA(iel_decr_start-1) + pos_slope * (el1(ii) - el1(iel_decr_start-1)) + enddo + + endif + endif enddo ! finally build lookup table @@ -2610,9 +2621,14 @@ double precision function LInterpol(x1, y1, x2, y2, x) ! function arguments double precision, intent(in) :: x1, y1, x2, y2, x - - LInterpol = (y2 - y1) / (x2 - x1) * (x - x1) + y1 - + + if (abs(x2-x1).lt.0.0001) then + ! to prevent absurdly small value in the denominator + LInterpol = 0.5*(y1 + y2) + else + LInterpol = (y2 - y1) / (x2 - x1) * (x - x1) + y1 + endif + end function LInterpol double precision function intp_y(nrow, xarr, yarr, x) diff --git a/src/troute-network/troute/nhd_io.py b/src/troute-network/troute/nhd_io.py index 47bfe26e0..37e9eae1a 100644 --- a/src/troute-network/troute/nhd_io.py +++ b/src/troute-network/troute/nhd_io.py @@ -15,6 +15,8 @@ import netCDF4 from joblib import delayed, Parallel from cftime import date2num +import dateutil.parser as dparser +from datetime import datetime, timedelta from troute.nhd_network import reverse_dict @@ -78,7 +80,7 @@ def read_config_file(custom_input_file): compute_parameters (dict): Input parameters re computation settings forcing_parameters (dict): Input parameters re model forcings restart_parameters (dict): Input parameters re model restart - diffusive_parameters (dict): Input parameters re diffusive wave model + hybrid_parameters (dict): Input parameters re diffusive wave model output_parameters (dict): Input parameters re output writing parity_parameters (dict): Input parameters re parity assessment data_assimilation_parameters (dict): Input parameters re data assimilation @@ -106,7 +108,7 @@ def read_config_file(custom_input_file): compute_parameters = data.get("compute_parameters", {}) forcing_parameters = compute_parameters.get("forcing_parameters", {}) restart_parameters = compute_parameters.get("restart_parameters", {}) - diffusive_parameters = compute_parameters.get("diffusive_parameters", {}) + hybrid_parameters = compute_parameters.get("hybrid_parameters", {}) data_assimilation_parameters = compute_parameters.get( "data_assimilation_parameters", {} ) @@ -121,7 +123,7 @@ def read_config_file(custom_input_file): compute_parameters, forcing_parameters, restart_parameters, - diffusive_parameters, + hybrid_parameters, output_parameters, parity_parameters, data_assimilation_parameters, @@ -150,6 +152,30 @@ def read_diffusive_domain(domain_file): return data +def read_coastal_boundary_domain(domain_file): + ''' + Read coastal boundary domain from .ymal or .json file. + + Arguments + --------- + domain_file (str or pathlib.Path): Path of coastal boundary domain file + + Returns + ------- + data (dict int: int): diffusive domain tailwater segments: coastal domain segments + + + ''' + + if domain_file[-4:] == "yaml": + with open(domain_file) as domain: + data = yaml.load(domain, Loader=yaml.SafeLoader) + else: + with open(domain_file) as domain: + data = json.load(domain) + + return data + def read_custom_input(custom_input_file): if custom_input_file[-4:] == "yaml": with open(custom_input_file) as custom_file: @@ -201,7 +227,6 @@ def read_lakeparm( Reads LAKEPARM file and prepares a dataframe, filtered to the relevant reservoirs, to provide the parameters for level-pool reservoir computation. - Completely replaces the read_waterbody_df function from prior versions of the v02 routing code. @@ -213,7 +238,6 @@ def read_lakeparm( Returns: df1 (DataFrame): - """ # TODO: avoid or parameterize "feature_id" or ... return to name-blind dataframe version @@ -385,23 +409,17 @@ def get_ql_from_wrf_hydro_mf( value_col: column/field in the CHRTOUT files with the lateral inflow value gw_col: column/field in the CHRTOUT files with the groundwater bucket flux value runoff_col: column/field in the CHRTOUT files with the runoff from terrain routing value - In general the CHRTOUT files contain one value per time step. At present, there is no capability for handling non-uniform timesteps in the qlaterals. - The qlateral may also be input using comma delimited file -- see `get_ql_from_csv` - - Note/Todo: For later needs, filtering for specific features or times may be accomplished with one of: ds.loc[{selectors}] ds.sel({selectors}) ds.isel({selectors}) - Returns from these selection functions are sub-datasets. - For example: ``` (Pdb) ds.sel({"feature_id":[4186117, 4186169],"time":ds.time.values[:2]})['q_lateral'].to_dataframe() @@ -410,7 +428,6 @@ def get_ql_from_wrf_hydro_mf( 2018-01-01 13:00:00 4186117 41.233807 -75.413895 0.006496 2018-01-02 00:00:00 4186117 41.233807 -75.413895 0.006460 ``` - or... ``` (Pdb) ds.sel({"feature_id":[4186117, 4186169],"time":[np.datetime64('2018-01-01T13:00:00')]})['q_lateral'].to_dataframe() @@ -485,12 +502,20 @@ def write_chanobs( ------------- ''' - + # TODO: for and if statements are improvised just in case when link of gage location is not in flowveldepth, which should be fixed + link_na = [] + for link in link_gage_df.index: + if link not in flowveldepth.index: + link_na.append(link) + link_gage_df_nona = link_gage_df.drop(link_na) + # array of segment linkIDs at gage locations. Results from these segments will be written - gage_feature_id = link_gage_df.index.to_numpy(dtype = "int64") + #gage_feature_id = link_gage_df.index.to_numpy(dtype = "int64") + gage_feature_id = link_gage_df_nona.index.to_numpy(dtype = "int64") - # array of simulated flow data at gage locations - gage_flow_data = flowveldepth.loc[link_gage_df.index].iloc[:,::3].to_numpy(dtype="float32") + # array of simulated flow data at gage locations + #gage_flow_data = flowveldepth.loc[link_gage_df.index].iloc[:,::3].to_numpy(dtype="float32") + gage_flow_data = flowveldepth.loc[link_gage_df_nona.index].iloc[:,::3].to_numpy(dtype="float32") # array of simulation time gage_flow_time = [t0 + timedelta(seconds = (i+1) * dt) for i in range(nts)] @@ -571,7 +596,6 @@ def write_chanobs( fill_value = np.nan ) y[:] = gage_flow_data.T - # =========== GLOBAL ATTRIBUTES =============== f.setncatts( { @@ -743,10 +767,8 @@ def get_ql_from_wrf_hydro(qlat_files, index_col="station_id", value_col="q_later qlat_files: globbed list of CHRTOUT files containing desired lateral inflows index_col: column/field in the CHRTOUT files with the segment/link id value_col: column/field in the CHRTOUT files with the lateral inflow value - In general the CHRTOUT files contain one value per time step. At present, there is no capability for handling non-uniform timesteps in the qlaterals. - The qlateral may also be input using comma delimited file -- see `get_ql_from_csv` """ @@ -943,12 +965,10 @@ def get_usgs_df_from_csv(usgs_csv, routelink_subset_file, index_col="link"): usgs_csv - csv file with SEGMENT IDs in the left-most column labeled with "link", and date-headed values from time-slice files in the format "2018-09-18 00:00:00" - It is assumed that the segment crosswalk and interpolation have both already been performed, so we do not need to comprehend the potentially non-numeric byte-strings associated with gage IDs, nor do we need to interpolate anything here as when we read from the timeslices. - If that were necessary, we might use a solution such as proposed here: https://stackoverflow.com/a/35058538 note that explicit typing of the index cannot be done on read and @@ -1221,7 +1241,6 @@ def get_channel_restart_from_wrf_hydro( default_us_flow_column: name used in remainder of program to refer to this column of the dataset default_ds_flow_column: name used in remainder of program to refer to this column of the dataset default_depth_column: name used in remainder of program to refer to this column of the dataset - The Restart file gives hlink, qlink1, and qlink2 values for channels -- the order is simply the same as that found in the Route-Link files. *Subnote 1*: The order of these values is NOT the order found in the CHRTOUT files, @@ -1353,7 +1372,6 @@ def write_hydro_rst( ): """ Write t-route flow and depth data to WRF-Hydro restart files. - Agruments --------- data (Data Frame): t-route simulated flow, velocity and depth data @@ -1366,7 +1384,6 @@ def write_hydro_rst( troute_us_flow_var_name (str): troute_ds_flow_var_name (str): troute_depth_var_name (str): - Returns ------- """ @@ -1473,7 +1490,6 @@ def get_reservoir_restart_from_wrf_hydro( waterbody_depth_column: column in the restart file to use for downstream flow initial state default_waterbody_flow_column: name used in remainder of program to refer to this column of the dataset default_waterbody_depth_column: name used in remainder of program to refer to this column of the dataset - The Restart file gives qlakeo and resht values for waterbodies. The order of values in the file is the same as the order in the LAKEPARM file from WRF-Hydro. However, there are many instances where only a subset of waterbodies described in the lakeparm @@ -1523,7 +1539,57 @@ def build_coastal_ncdf_dataframe(coastal_ncdf): coastal_ncdf_df = ds[["elev", "depth"]] return coastal_ncdf_df.to_dataframe() +def build_coastal_ncdf_dataframe( + coastal_files, + coastal_boundary_domain, + ): + # retrieve coastal elevation, topo depth, and temporal data + ds = netCDF4.Dataset(filename = coastal_files, mode = 'r', format = "NETCDF4") + + tws = list(coastal_boundary_domain.keys()) + coastal_boundary_nodes = list(coastal_boundary_domain.values()) + + elev_NAVD88 = ds.variables['elev'][:, coastal_boundary_nodes].filled(fill_value = np.nan) + depth_bathy = ds.variables['depth'][coastal_boundary_nodes].filled(fill_value = np.nan) + timesteps = ds.variables['time'][:] + if len(timesteps) > 1: + dt_schism = timesteps[1]-timesteps[0] + else: + raise RuntimeError("schism provided less than 2 time steps") + + start_date = ds.variables['time'].units + start_date = dparser.parse(start_date,fuzzy=True) + dt_timeslice = timedelta(minutes=dt_schism/60.0) + tfin = start_date + dt_timeslice*len(timesteps) + timestamps = pd.date_range(start_date, tfin, freq=dt_timeslice) + timestamps = timestamps.strftime('%Y-%m-%d %H:%M:%S') + + # create a dataframe of water depth at coastal domain nodes + timeslice_schism_list=[] + for t in range(0, len(timesteps)+1): + timeslice= np.full(len(tws), timestamps[t]) + if t==0: + depth = np.nan + else: + depth = elev_NAVD88[t-1,:] + depth_bathy + + timeslice_schism = (pd.DataFrame({ + 'stationId' : tws, + 'datetime' : timeslice, + 'depth' : depth + }). + set_index(['stationId', 'datetime']). + unstack(1, fill_value = np.nan)['depth']) + + timeslice_schism_list.append(timeslice_schism) + + coastal_boundary_depth_df = pd.concat(timeslice_schism_list, axis=1, ignore_index=False) + + # linearly extrapolate depth value at start date + coastal_boundary_depth_df.iloc[:,0] = 2.0*coastal_boundary_depth_df.iloc[:,1] - coastal_boundary_depth_df.iloc[:,2] + return coastal_boundary_depth_df + def lastobs_df_output( lastobs_df, dt, diff --git a/src/troute-network/troute/nhd_network.py b/src/troute-network/troute/nhd_network.py index 1785ae3c3..3065f69d8 100644 --- a/src/troute-network/troute/nhd_network.py +++ b/src/troute-network/troute/nhd_network.py @@ -269,7 +269,7 @@ def reachable_network(N, sources=None, targets=None, check_disjoint=True): rv = {} for k, n in reached.items(): - rv[k] = {m: N.get(m, []) for m in n} + rv[k] = {m: N.get(m, []) for m in n} return rv diff --git a/src/troute-network/troute/nhd_network_utilities_v02.py b/src/troute-network/troute/nhd_network_utilities_v02.py index e4dfe19a1..fa9aa0a24 100644 --- a/src/troute-network/troute/nhd_network_utilities_v02.py +++ b/src/troute-network/troute/nhd_network_utilities_v02.py @@ -845,7 +845,7 @@ def build_refac_connections(diff_network_parameters): # set parameter dataframe index as segment id number, sort param_df = param_df.set_index("key").sort_index() - + # There can be an externally determined terminal code -- that's this first value terminal_codes = set() terminal_codes.update(terminal_code) @@ -865,4 +865,3 @@ def build_refac_connections(diff_network_parameters): ) return connections - diff --git a/src/troute-nwm/src/nwm_routing/__main__.py b/src/troute-nwm/src/nwm_routing/__main__.py index bd82a0ace..e907af0d6 100644 --- a/src/troute-nwm/src/nwm_routing/__main__.py +++ b/src/troute-nwm/src/nwm_routing/__main__.py @@ -73,12 +73,12 @@ def nwm_route( waterbody_parameters, waterbody_types_df, waterbody_type_specified, - diffusive_parameters, diffusive_network_data, topobathy_data, refactored_diffusive_domain, refactored_reaches, subnetwork_list, + coastal_boundary_depth_df, ): ################### Main Execution Loop across ordered networks @@ -126,16 +126,34 @@ def nwm_route( waterbody_type_specified, subnetwork_list, ) - + # returns list, first item is run result, second item is subnetwork items subnetwork_list = results[1] results = results[0] - if diffusive_network_data: # run diffusive side of a hybrid simulation - + # run diffusive side of a hybrid simulation + if diffusive_network_data: LOG.debug("MC computation complete in %s seconds." % (time.time() - start_time_mc)) start_time_diff = time.time() - + ''' + # retrieve MC-computed streamflow value at upstream boundary of diffusive mainstem + qvd_columns = pd.MultiIndex.from_product( + [range(nts), ["q", "v", "d"]] + ).to_flat_index() + + flowveldepth = pd.concat( + [pd.DataFrame(r[1], index=r[0], columns=qvd_columns) for r in results], + copy=False, + ) + ''' + #upstream_boundary_flow={} + #for tw,v in diffusive_network_data.items(): + # upstream_boundary_link = diffusive_network_data[tw]['upstream_boundary_link'] + # flow_ = flowveldepth.loc[upstream_boundary_link][0::3] + # the very first value at time (0,q) is flow value at the first time step after initial time. + # upstream_boundary_flow[tw] = flow_ + + # call diffusive wave simulation and append results to MC results results.extend( compute_diffusive_routing( @@ -151,11 +169,11 @@ def nwm_route( usgs_df, lastobs_df, da_parameter_dict, - diffusive_parameters, waterbodies_df, topobathy_data, refactored_diffusive_domain, refactored_reaches, + coastal_boundary_depth_df, ) ) LOG.debug("Diffusive computation complete in %s seconds." % (time.time() - start_time_diff)) @@ -307,12 +325,12 @@ def main_v03(argv): compute_parameters, forcing_parameters, restart_parameters, - diffusive_parameters, + hybrid_parameters, output_parameters, parity_parameters, data_assimilation_parameters, ) = _input_handler_v03(args) - + showtiming = log_parameters.get("showtiming", None) if showtiming: task_times = {} @@ -391,7 +409,7 @@ def main_v03(argv): segment_index = segment_index.append( pd.Index(diffusive_network_data[tw]['mainstem_segs']) ) - + # TODO: This function modifies one of its arguments (waterbodies_df), which is somewhat poor practice given its otherwise functional nature. Consider refactoring waterbodies_df, q0, t0, lastobs_df, da_parameter_dict = nwm_initial_warmstate_preprocess( break_network_at_waterbodies, @@ -401,7 +419,7 @@ def main_v03(argv): waterbodies_df, link_lake_crosswalk, ) - + if showtiming: ic_end_time = time.time() task_times['initial_condition_time'] += ic_end_time - network_end_time @@ -433,10 +451,12 @@ def main_v03(argv): reservoir_usgs_df, reservoir_usgs_param_df, reservoir_usace_df, - reservoir_usace_param_df + reservoir_usace_param_df, + coastal_boundary_depth_df ) = nwm_forcing_preprocess( run_sets[0], forcing_parameters, + hybrid_parameters, da_sets[0] if data_assimilation_parameters else {}, data_assimilation_parameters, break_network_at_waterbodies, @@ -459,7 +479,7 @@ def main_v03(argv): # on first iteration of for loop only. For additional loops this will be passed # to function from inital loop. subnetwork_list = [None, None, None] - + for run_set_iterator, run in enumerate(run_sets): t0 = run.get("t0") @@ -503,12 +523,12 @@ def main_v03(argv): waterbody_parameters, waterbody_types_df, waterbody_type_specified, - diffusive_parameters, diffusive_network_data, topobathy_data, refactored_diffusive_domain, refactored_reaches, subnetwork_list, + coastal_boundary_depth_df, ) # returns list, first item is run result, second item is subnetwork items @@ -543,9 +563,11 @@ def main_v03(argv): _, reservoir_usace_df, _, + coastal_boundary_depth_df, ) = nwm_forcing_preprocess( run_sets[run_set_iterator + 1], forcing_parameters, + hybrid_parameters, da_sets[run_set_iterator + 1] if data_assimilation_parameters else {}, data_assimilation_parameters, break_network_at_waterbodies, @@ -700,7 +722,7 @@ async def main_v03_async(argv): compute_parameters, forcing_parameters, restart_parameters, - diffusive_parameters, + hybrid_parameters, output_parameters, parity_parameters, data_assimilation_parameters, @@ -847,7 +869,6 @@ async def main_v03_async(argv): waterbody_parameters, waterbody_types_df, waterbody_type_specified, - diffusive_parameters, ) forcings_task = loop.run_in_executor( @@ -936,7 +957,6 @@ async def main_v03_async(argv): waterbody_parameters, waterbody_types_df, waterbody_type_specified, - diffusive_parameters, ) # nwm_final_output_generator() diff --git a/src/troute-nwm/src/nwm_routing/input.py b/src/troute-nwm/src/nwm_routing/input.py index 1a862bbf5..0dbd16390 100644 --- a/src/troute-nwm/src/nwm_routing/input.py +++ b/src/troute-nwm/src/nwm_routing/input.py @@ -10,6 +10,7 @@ LOG = logging.getLogger('') def _input_handler_v03(args): + ''' Read user inputs from configuration file and set logging level @@ -26,16 +27,15 @@ def _input_handler_v03(args): compute_parameters (dict): Input parameters re computation settings forcing_parameters (dict): Input parameters re model forcings restart_parameters (dict): Input parameters re model restart - diffusive_parameters (dict): Input parameters re diffusive wave model + hybrid_parameters (dict): Input parameters re MC/diffusive wave model output_parameters (dict): Input parameters re output writing parity_parameters (dict): Input parameters re parity assessment data_assimilation_parameters (dict): Input parameters re data assimilation ''' - # get name of user configuration file (e.g. test.yaml) custom_input_file = args.custom_input_file - + # read data from user configuration file ( log_parameters, @@ -45,7 +45,7 @@ def _input_handler_v03(args): compute_parameters, forcing_parameters, restart_parameters, - diffusive_parameters, + hybrid_parameters, output_parameters, parity_parameters, data_assimilation_parameters, @@ -65,7 +65,7 @@ def _input_handler_v03(args): compute_parameters, forcing_parameters, restart_parameters, - diffusive_parameters, + hybrid_parameters, output_parameters, parity_parameters, data_assimilation_parameters @@ -79,7 +79,7 @@ def _input_handler_v03(args): compute_parameters, forcing_parameters, restart_parameters, - diffusive_parameters, + hybrid_parameters, output_parameters, parity_parameters, data_assimilation_parameters, diff --git a/src/troute-nwm/src/nwm_routing/output.py b/src/troute-nwm/src/nwm_routing/output.py index 23b135e50..acbbb93db 100644 --- a/src/troute-nwm/src/nwm_routing/output.py +++ b/src/troute-nwm/src/nwm_routing/output.py @@ -383,9 +383,9 @@ def nwm_output_generator( ) start_time = time.time() - + parity_check( parity_set, results, ) - LOG.debug("parity check complete in %s seconds." % (time.time() - start_time)) + LOG.debug("parity check complete in %s seconds." % (time.time() - start_time)) \ No newline at end of file diff --git a/src/troute-nwm/src/nwm_routing/preprocess.py b/src/troute-nwm/src/nwm_routing/preprocess.py index 7d9b007cb..de46da342 100644 --- a/src/troute-nwm/src/nwm_routing/preprocess.py +++ b/src/troute-nwm/src/nwm_routing/preprocess.py @@ -138,6 +138,10 @@ def nwm_network_preprocess( # ... dataframe returned from read_netcdf, then the code would break here. topobathy_data = (nhd_io.read_netcdf(topobathy_file).set_index('link')) + # TODO: Request GID make comID variable an integer in their product, so + # we do not need to change variable types, here. + topobathy_data.index = topobathy_data.index.astype(int) + else: topobathy_data = pd.DataFrame() LOG.debug('No natural cross section topobathy data provided. Hybrid simualtion will run on compound trapezoidal geometry.') @@ -201,7 +205,7 @@ def nwm_network_preprocess( connections, param_df, wbody_conn, gages = nnu.build_connections( supernetwork_parameters, ) - + link_gage_df = pd.DataFrame.from_dict(gages) link_gage_df.index.name = 'link' break_network_at_waterbodies = waterbody_parameters.get( @@ -326,29 +330,36 @@ def nwm_network_preprocess( # if diffusive_domain: + rconn_diff0 = nhd_network.reverse_network(connections) + refactored_reaches = {} - rconn = nhd_network.reverse_network(connections) - refactored_reaches={} for tw in diffusive_domain: - - mainstem_segs = diffusive_domain[tw]['links'] + mainstem_segs = diffusive_domain[tw]['links'] + # we want mainstem_segs start at a mainstem link right after the upstream boundary mainstem link, which is + # in turn not under any waterbody. This boundary mainstem link should be turned into a tributary segment. + upstream_boundary_mainstem_link = diffusive_domain[tw]['upstream_boundary_link_mainstem'] + if upstream_boundary_mainstem_link[0] in mainstem_segs: + mainstem_segs.remove(upstream_boundary_mainstem_link[0]) # ===== build diffusive network data objects ==== diffusive_network_data[tw] = {} # add diffusive domain segments diffusive_network_data[tw]['mainstem_segs'] = mainstem_segs + # diffusive domain tributary segments trib_segs = [] + for seg in mainstem_segs: - us_list = rconn[seg] + us_list = rconn_diff0[seg] for u in us_list: if u not in mainstem_segs: - trib_segs.append(u) - + trib_segs.append(u) + diffusive_network_data[tw]['tributary_segments'] = trib_segs # diffusive domain connections object diffusive_network_data[tw]['connections'] = {k: connections[k] for k in (mainstem_segs + trib_segs)} + # diffusive domain reaches and upstream connections. # break network at tributary segments _, reaches, rconn_diff = nnu.organize_independent_networks( @@ -356,6 +367,7 @@ def nwm_network_preprocess( set(trib_segs), set(), ) + diffusive_network_data[tw]['rconn'] = rconn_diff diffusive_network_data[tw]['reaches'] = reaches[tw] @@ -365,17 +377,30 @@ def nwm_network_preprocess( axis = 0, ) + diffusive_network_data[tw]['upstream_boundary_link'] = upstream_boundary_mainstem_link + if refactored_diffusive_domain: diffusive_parameters = {'geo_file_path': refactored_topobathy_file} refactored_connections = nnu.build_refac_connections(diffusive_parameters) + + # list of stream segments of a single refactored diffusive domain + rlinks_tw = refactored_diffusive_domain[tw]['rlinks'] + refactored_connections_tw = {} + + # Subset a connection dictionary (upstream segment as key : downstream segments as values) from refactored_connections + # for a single refactored diffusive domain defined by a current tw. + for k in rlinks_tw: + if k in refactored_connections.keys(): + refactored_connections_tw[k] = refactored_connections[k] + refac_tw = refactored_diffusive_domain[tw]['refac_tw'] refactored_diffusive_network_data[refac_tw] = {} refactored_diffusive_network_data[refac_tw]['tributary_segments'] = trib_segs + refactored_diffusive_network_data[refac_tw]['connections'] = refactored_connections_tw + + for k in trib_segs: + refactored_diffusive_network_data[refac_tw]['connections'][k]= [refactored_diffusive_domain[tw]['incoming_tribs'][k]] - # Build connections with rlink mainstem and link tributaries - refactored_diffusive_network_data[refac_tw]['connections'] = refactored_connections - refactored_diffusive_network_data[refac_tw]['connections'].update({k: [refactored_diffusive_domain[tw]['incoming_tribs'][k]] for k in (trib_segs)}) - # diffusive domain reaches and upstream connections. # break network at tributary segments _, refactored_reaches_batch, refactored_conn_diff = nnu.organize_independent_networks( @@ -386,15 +411,14 @@ def nwm_network_preprocess( refactored_reaches[refac_tw] = refactored_reaches_batch[refac_tw] refactored_diffusive_network_data[refac_tw]['mainstem_segs'] = refactored_diffusive_domain[tw]['rlinks'] - + refactored_diffusive_network_data[refac_tw]['upstream_boundary_link'] = diffusive_network_data[tw]['upstream_boundary_link'] else: refactored_reaches={} - - + # ==== remove diffusive domain segs from MC domain ==== # drop indices from param_df param_df = param_df.drop(mainstem_segs) - + # remove keys from connections dictionary for s in mainstem_segs: connections.pop(s) @@ -406,8 +430,7 @@ def nwm_network_preprocess( #============================================================================ # Identify Independent Networks and Reaches by Network LOG.info("organizing connections into reaches ...") - start_time = time.time() - + start_time = time.time() gage_break_segments = set() wbody_break_segments = set() if break_network_at_waterbodies: @@ -415,7 +438,7 @@ def nwm_network_preprocess( if break_network_at_gages: gage_break_segments = gage_break_segments.union(gages['gages'].keys()) - + independent_networks, reaches_bytw, rconn = nnu.organize_independent_networks( connections, wbody_break_segments, @@ -685,7 +708,7 @@ def nwm_initial_warmstate_preprocess( restart_parameters['lite_channel_restart_file'] ) t0_str = None - + # build initial states from user-provided restart parameters else: q0 = nnu.build_channel_initial_state(restart_parameters, segment_index) @@ -704,7 +727,7 @@ def nwm_initial_warmstate_preprocess( # convert timestamp from string to datetime t0 = datetime.strptime(t0_str, "%Y-%m-%d_%H:%M:%S") - + # get initial time from user inputs if restart_parameters.get("start_datetime", None): t0_str = restart_parameters.get("start_datetime") @@ -765,6 +788,7 @@ def _try_parsing_date(text): def nwm_forcing_preprocess( run, forcing_parameters, + hybrid_parameters, da_run, data_assimilation_parameters, break_network_at_waterbodies, @@ -1213,18 +1237,26 @@ def nwm_forcing_preprocess( #--------------------------------------------------------------------------- # Assemble coastal coupling data [WIP] - - coastal_boundary_elev = forcing_parameters.get("coastal_boundary_elev_data", None) - coastal_ncdf = forcing_parameters.get("coastal_ncdf", None) + coastal_boundary_elev_files = forcing_parameters.get('coastal_boundary_input_file', None) + coastal_boundary_domain_files = hybrid_parameters.get('coastal_boundary_domain', None) - if coastal_boundary_elev: + if coastal_boundary_elev_files: + start_time = time.time() LOG.info("creating coastal dataframe ...") - coastal_df = nhd_io.build_coastal_dataframe(coastal_boundary_elev) - - if coastal_ncdf: - LOG.info("creating coastal ncdf dataframe ...") - coastal_ncdf_df = nhd_io.build_coastal_ncdf_dataframe(coastal_ncdf) - + + coastal_boundary_domain = nhd_io.read_coastal_boundary_domain(coastal_boundary_domain_files) + coastal_boundary_depth_df = nhd_io.build_coastal_ncdf_dataframe( + coastal_boundary_elev_files, + coastal_boundary_domain, + ) + + LOG.debug( + "coastal boundary elevation observation DataFrame creation complete in %s seconds." \ + % (time.time() - start_time) + ) + else: + coastal_boundary_depth_df = pd.DataFrame() + #--------------------------------------------------------------------------- # Trim the time-extent of the streamflow_da usgs_df # what happens if there are timeslice files missing on the front-end? @@ -1233,4 +1265,4 @@ def nwm_forcing_preprocess( if not usgs_df.empty: usgs_df = usgs_df.loc[:,t0:] - return qlats_df, usgs_df, reservoir_usgs_df, reservoir_usgs_param_df, reservoir_usace_df, reservoir_usace_param_df + return qlats_df, usgs_df, reservoir_usgs_df, reservoir_usgs_param_df, reservoir_usace_df, reservoir_usace_param_df, coastal_boundary_depth_df diff --git a/src/troute-routing/troute/routing/compute.py b/src/troute-routing/troute/routing/compute.py index 96c40be2b..a6b2e7395 100644 --- a/src/troute-routing/troute/routing/compute.py +++ b/src/troute-routing/troute/routing/compute.py @@ -271,13 +271,13 @@ def compute_nhd_routing_v02( subnetworks_only_ordered_jit[order].update(subnet_sets) for subn_tw, subnetwork in subnet_sets.items(): subnetworks[subn_tw] = {k: intw[k] for k in subnetwork} - + reaches_ordered_bysubntw = defaultdict(dict) for order, ordered_subn_dict in subnetworks_only_ordered_jit.items(): for subn_tw, subnet in ordered_subn_dict.items(): conn_subn = {k: connections[k] for k in subnet if k in connections} rconn_subn = {k: rconn[k] for k in subnet if k in rconn} - + if not waterbodies_df.empty and not usgs_df.empty: path_func = partial( nhd_network.split_at_gages_waterbodies_and_junctions, @@ -350,6 +350,7 @@ def compute_nhd_routing_v02( "tw": [], "subn_reach_list": [], } + # save subnetworks_only_ordered_jit and reaches_ordered_bysubntw_clustered in a list # to be passed on to next loop. Create a deep copy of this list to prevent it from being @@ -390,7 +391,7 @@ def compute_nhd_routing_v02( #Declare empty dataframe waterbody_types_df_sub = pd.DataFrame() - + if not waterbodies_df.empty: lake_segs = list(waterbodies_df.index.intersection(segs)) waterbodies_df_sub = waterbodies_df.loc[ @@ -425,8 +426,12 @@ def compute_nhd_routing_v02( #check if any DA reservoirs are offnetwork. if so change reservoir type to #1: levelpool - #tmp_lake_ids = list(set(waterbody_types_df_sub.index).intersection(offnetwork_upstreams)) - #waterbody_types_df_sub.at[tmp_lake_ids,'reservoir_type'] = 1 + tmp_lake_ids = list(set(waterbody_types_df_sub.index).intersection(offnetwork_upstreams)) + + if tmp_lake_ids: + #waterbody_types_df_sub.at[tmp_lake_ids,'reservoir_type'] = 1 + for idx in tmp_lake_ids: + waterbody_types_df_sub.at[idx,'reservoir_type'] = 1 param_df_sub = param_df.loc[ common_segs, @@ -445,7 +450,7 @@ def compute_nhd_routing_v02( flowveldepth_interorder[us_subn_tw][ "position_index" ] = subn_tw_sortposition - + subn_reach_list = clustered_subns["subn_reach_list"] upstreams = clustered_subns["upstreams"] @@ -549,7 +554,7 @@ def compute_nhd_routing_v02( ) results_subn[order] = parallel(jobs) - + if order > 0: # This is not needed for the last rank of subnetworks flowveldepth_interorder = {} for ci, (cluster, clustered_subns) in enumerate( @@ -576,7 +581,7 @@ def compute_nhd_routing_v02( if 1 == 1: LOG.info("PARALLEL TIME %s seconds." % (time.time() - start_para_time)) - + elif parallel_compute_method == "by-subnetwork-jit": # Create subnetwork objects if they have not already been created if not subnetwork_list[0] or not subnetwork_list[1] or not subnetwork_list[2]: @@ -1077,7 +1082,7 @@ def compute_nhd_routing_v02( waterbody_types_df_sub, t0 ) - + results.append( compute_func( nts, @@ -1140,15 +1145,17 @@ def compute_diffusive_routing( usgs_df, lastobs_df, da_parameter_dict, - diffusive_parameters, waterbodies_df, topobathy_data, refactored_diffusive_domain, refactored_reaches, + coastal_boundary_depth_df, ): + results_diffusive = [] for tw in diffusive_network_data: # <------- TODO - by-network parallel loop, here. - + trib_segs = None + trib_flow = None # extract junction inflows from results array for j, i in enumerate(results): x = np.in1d(i[0], diffusive_network_data[tw]['tributary_segments']) @@ -1157,9 +1164,13 @@ def compute_diffusive_routing( trib_segs = i[0][x] trib_flow = i[1][x, ::3] else: - trib_segs = np.append(trib_segs, i[0][x]) - trib_flow = np.append(trib_flow, i[1][x, ::3], axis = 0) - + if trib_segs is None: + trib_segs = i[0][x] + trib_flow = i[1][x, ::3] + else: + trib_segs = np.append(trib_segs, i[0][x]) + trib_flow = np.append(trib_flow, i[1][x, ::3], axis = 0) + # create DataFrame of junction inflow data junction_inflows = pd.DataFrame(data = trib_flow, index = trib_segs) @@ -1187,7 +1198,13 @@ def compute_diffusive_routing( else: refactored_diffusive_domain_bytw = None refactored_reaches_byrftw = None - + + # coastal boundary depth input data at TW + if tw in coastal_boundary_depth_df.index: + coastal_boundary_depth_bytw_df = coastal_boundary_depth_df.loc[tw].to_frame().T + else: + coastal_boundary_depth_bytw_df = pd.DataFrame() + # build diffusive inputs diffusive_inputs = diff_utils.diffusive_input_data_v02( tw, @@ -1195,6 +1212,7 @@ def compute_diffusive_routing( diffusive_network_data[tw]['rconn'], diffusive_network_data[tw]['reaches'], diffusive_network_data[tw]['mainstem_segs'], + diffusive_network_data[tw]['tributary_segments'], None, # place holder for diffusive parameters diffusive_network_data[tw]['param_df'], qlats, @@ -1209,10 +1227,9 @@ def compute_diffusive_routing( diff_usgs_df, refactored_diffusive_domain_bytw, refactored_reaches_byrftw, - #refactored_diffusive_domain[tw], - #refactored_reaches[refactored_tw], + coastal_boundary_depth_bytw_df, ) - + # run the simulation out_q, out_elv = diffusive.compute_diffusive(diffusive_inputs) diff --git a/src/troute-routing/troute/routing/diffusive_utils.py b/src/troute-routing/troute/routing/diffusive_utils.py index 9a8048d2b..98d09a215 100644 --- a/src/troute-routing/troute/routing/diffusive_utils.py +++ b/src/troute-routing/troute/routing/diffusive_utils.py @@ -55,7 +55,15 @@ def adj_alt1( def fp_network_map( - mainstem_seg_list, mx_jorder, ordered_reaches, rchbottom_reaches, nrch_g, frnw_col, dbfksegID, pynw + mainstem_seg_list, + mx_jorder, + ordered_reaches, + rchbottom_reaches, + nrch_g, + frnw_col, + dbfksegID, + pynw, + #upstream_boundary_link, ): """ Channel network mapping between Python and Fortran @@ -74,6 +82,7 @@ def fp_network_map( Returns ------- frnw_g -- (nparray of int) Fortran-Python network mapping array + ub_idx_fr -- (int) Fortran reach index marking a link of mainstem at the upstream boundary """ # Store headwater reach and upstream reaches above a junction @@ -87,10 +96,10 @@ def fp_network_map( ncomp = reach["number_segments"] frj = frj + 1 frnw_g[frj, 0] = ncomp - + if not reach["upstream_bottom_segments"]: - # headwater reach - frnw_g[frj, 2] = 0 # the number of upstream reaches + # for diffusive mainstem, this case can be tributaries at the conflunces with the mainstem or mainstem link at its upstream boundary + frnw_g[frj, 2] = 0 # to mark these tributaries else: # reaches before a junction nusrch = len(reach["upstream_bottom_segments"]) @@ -141,8 +150,8 @@ def fp_network_map( frnw_g[frj, 3 + i] = ( frnw_g[frj, 3 + i] + 1 ) # upstream reach indicds for frj reach - - return frnw_g + + return frnw_g def fp_chgeo_map( @@ -270,7 +279,6 @@ def fp_qlat_map( return qlat_g - def fp_ubcd_map(frnw_g, pynw, nts_ub_g, nrch_g, ds_seg, upstream_inflows): """ Upstream boundary condition mapping between Python and Fortran @@ -287,24 +295,8 @@ def fp_ubcd_map(frnw_g, pynw, nts_ub_g, nrch_g, ds_seg, upstream_inflows): ------- ubcd_g -- (ndarray of float32) upstream boundary data (m3/sec) """ - - ubcd_g = np.zeros((nts_ub_g, nrch_g)) - frj = -1 - - #loop over every segment in network - for frj in range(nrch_g): - - #if this is a head segment - if frnw_g[frj, 2] == 0: # the number of upstream reaches is zero. - - head_segment = pynw[frj] - - if head_segment in set(ds_seg): - - idx_dssegID = np.where(np.asarray(list(set(ds_seg))) == head_segment) - for tsi in range(0, nts_ub_g): - ubcd_g[tsi, frj] = upstream_inflows[idx_dssegID, tsi] # [m^3/s] - + ubcd_g = np.zeros((nts_ub_g, nrch_g)) + return ubcd_g @@ -566,8 +558,12 @@ def fp_refactored_network_map( nrch_g, frnw_g, pynw, + mainstem_seg_list, + trib_seg_list, refactored_diffusive_domain, - refactored_reaches): + refactored_reaches, + #upstream_boundary_link +): """ Data assimilatoin data mapping between Python and Fortran @@ -598,16 +594,57 @@ def fp_refactored_network_map( head_rlink_frequency = Counter(refactored_diffusive_domain['incoming_tribs'].values()) head_rlink_multi_trib_links = {key: value for key,value in head_rlink_frequency.items() if value>1} + # make sure multiple tributaries into a single rlink are seperated out by a mainstem link inbetween. Refer to edge cases,p52,RM6 + reversed_pynw = {pynw[k]:k for k in pynw} + head_rlink_trial = list(head_rlink_multi_trib_links.keys()) + head_rlink_2b_removed = [] + + for i in range(len(head_rlink_trial)): + rlnk = head_rlink_trial[i] + trib_link = [k for k, v in refactored_diffusive_domain['incoming_tribs'].items() if v == rlnk] + # place tributary links in junction order + trib_link_ordered = [] + for lnk in trib_seg_list: + if lnk in trib_link: + trib_link_ordered.append(lnk) + + n_mseg = 0 + for i2 in range(len(trib_link_ordered)-1): + junct_order1 = reversed_pynw[trib_link_ordered[i2]] + junct_order2 = reversed_pynw[trib_link_ordered[i2+1]] + if abs(junct_order1 - junct_order2) == 1: + # when no mainstem link is between these two tribs. That is, the two tribs both enter a mainstem link at the upper end. + head_rlink_2b_removed.append(rlnk) + #if rlnk in head_rlink_trial: + # head_rlink_multi_trib_links.pop(rlnk) + # head_rlink_trial.remove(rlnk) + else: + # make sure a mainstem link exist inbetween related tribs + for odr in range(junct_order1+1, junct_order2): + lnk = pynw[odr] + if lnk in mainstem_seg_list: + n_mseg = n_mseg + 1 + + if n_mseg == 0: + # when no mainstem link between multiple trib links + head_rlink_2b_removed.append(rlnk) + #if rlnk in head_rlink_trial: + # head_rlink_multi_trib_links.pop(rlnk) + + unique_rlinks = list(set(head_rlink_2b_removed)) + for rlnk in unique_rlinks: + head_rlink_multi_trib_links.pop(rlnk) + # make a dictionary of rlink head (as a key): [rlinks] in the reach (as a value) rordered_reaches = {} for frj in range(0, nrch_g): rreach = [x for x in refactored_reaches if rpynw[frj] in x][0] rordered_reaches[rpynw[frj]] = rreach - + # find the number of nodes for refactored hydrofabric for frj in range(0, nrch_g): rfrnw_g[frj, 0] = len(rordered_reaches[rpynw[frj]]) + 1 - + frj = -1 while frj < nrch_g-1: frj = frj + 1 @@ -643,7 +680,7 @@ def fp_refactored_network_map( i = i + 1 rfrnw_g[rfrj, i] = frj2 + 1 # +1 becasue python row index + 1 = fortran row index frj = rfrj - + return rfrnw_g, rpynw, rordered_reaches def fp_refactored_qlat_iniq_dx_map( @@ -887,7 +924,6 @@ def fp_crosswalk_map( """ crosswalk_nrow = len(refactored_diffusive_domain['lengthMap'].keys()) crosswalk_ncol = 15 + 3 - #crosswalk_g = np.zeros((crosswalk_nrow, crosswalk_ncol), dtype="float32") crosswalk_g = np.zeros((crosswalk_nrow, crosswalk_ncol)) irow = -1 @@ -895,16 +931,13 @@ def fp_crosswalk_map( if rfrnw_g[frj, 2] > 0: # mainstem only rncomp = rfrnw_g[frj, 0] - for rseg in range(0, rncomp-1): #qlat at bottom node is not used in diffusive.f90 so set it zero. irow = irow + 1 - rlinkid = rordered_reaches[rpynw[frj]][rseg] crosswalk_g[irow, 0] = rseg + 1 # fortran index of [rseg, ] for refactored crosswalk_g[irow, 1] = frj + 1 # fortran index of [ , frj] for refactored linkid_frac_list = refactored_diffusive_domain['lengthMap'][rlinkid].split(',') - linkid_list=[] linkid_frac_float_list=[] for seg in range(len(linkid_frac_list)): @@ -912,7 +945,7 @@ def fp_crosswalk_map( linkid,dxfrac = int(linkid_frac),linkid_frac-int(linkid_frac) linkid_list.append(linkid) linkid_frac_float_list.append(linkid_frac) - + # order linkid_frac list from upstream to downstream linkid_ordered = [x for x in linkid_mainstem_ordered if x in linkid_list] linkid_frac_float_ordered =[] @@ -922,7 +955,6 @@ def fp_crosswalk_map( # sometimes rlink goes further downstream of TW link so as to include more links that are not in diffusive domain. idx = linkid_ordered.index(int(linkid_frac)) linkid_frac_float_ordered.insert(idx, linkid_frac) - crosswalk_g[irow, 2] = len(linkid_frac_float_ordered) # number of links to cover a rlink jcol = 3 @@ -940,6 +972,84 @@ def fp_crosswalk_map( jcol = jcol + 3 return crosswalk_nrow, crosswalk_ncol, crosswalk_g + +def fp_coastal_boundary_input_map( + tw, + coastal_boundary_depth_df, + nrch_g, + t0, + t0_g, + tfin_g): + """ + Data assimilatoin data mapping between Python and Fortran + Parameters + ---------- + tw -- (int) Tailwater segment ID + coastal_boundary_depth_df -- (DataFrame) coastal boundary depth data at one hour time steps + t0 -- (datetime) initial date + t0_g -- (float) diffusive model's initial simulation time [hr] (by default, zero) + tfin_g -- (float) diffusive model's final simulation time [hr] + + Returns + ------- + dt_db_g -- (int) coastal boundary input data timestep in sec + dsbd_option -- (int) 1 or 2 for coastal boundary depth data or normal depth data, respectively + nts_db_g -- (int) number of coastal boundary input data timesteps + dbcd_g -- (float) coastal boundary input data time series [m] + """ + + date_time_obj1 = datetime.strptime(coastal_boundary_depth_df.columns[1], '%Y-%m-%d %H:%M:%S') + date_time_obj0 = datetime.strptime(coastal_boundary_depth_df.columns[0], '%Y-%m-%d %H:%M:%S') + dt_db_g = (date_time_obj1 - date_time_obj0).total_seconds() + nts_db_g = int((tfin_g - t0_g) * 3600.0 / dt_db_g) + 1 # include initial time 0 to the final time + dbcd_g = np.ones(nts_db_g) + + if not coastal_boundary_depth_df.empty: + dt_timeslice = timedelta(minutes=dt_db_g/60.0) + tfin = t0 + dt_timeslice*(nts_db_g-1) + timestamps = pd.date_range(t0, tfin, freq=dt_timeslice) + + timeslice_dbcd_list = [] + tws = coastal_boundary_depth_df.index.values.tolist() + for i in range(len(timestamps)): + timeslice = np.full(len(tws), timestamps[i]) + if str(timestamps[i]) in coastal_boundary_depth_df.columns: + depth = coastal_boundary_depth_df[str(timestamps[i])].tolist() + else: + depth = np.nan + + timeslice_dbcd = (pd.DataFrame({ + 'stationId' : tws, + 'datetime' : timeslice, + 'depth' : depth + }).set_index(['stationId', 'datetime']). + unstack(1, fill_value = np.nan)['depth']) + + timeslice_dbcd_list.append(timeslice_dbcd) + + dbcd_df = pd.concat(timeslice_dbcd_list, axis=1, ignore_index=False) + + # replace zero or negative water depth by the smallest postive value + psmindepth = dbcd_df.where(dbcd_df>0).min(1).loc[tw] + dbcd_df.loc[tw, dbcd_df.loc[tw]<= 0] = psmindepth + + # interpolate missing value in NaN (np.nan) inbetween available values. For extrapolation, the result is the same as + # a last available value either in the left or right. + dbcd_df_interpolated = dbcd_df.interpolate(axis='columns', limit_direction='both', limit=6) + + # if still missing data exists, do not use the coastal depth data as diffusive downstream boundary condition + if dbcd_df_interpolated.isnull().values.any(): + dsbd_option = 2 # instead, use normal depth as the downstream boundary condition + dbcd_g[:] = 0.0 + else: + dsbd_option = 1 # use the data as prepared + dbcd_g[:] = dbcd_df_interpolated.loc[tw].values + + else: + dsbd_option = 2 # instead, use normal depth as the downstream boundary condition + dbcd_g[:] = 0.0 + + return dt_db_g, dsbd_option, nts_db_g, dbcd_g def diffusive_input_data_v02( tw, @@ -947,6 +1057,7 @@ def diffusive_input_data_v02( rconn, reach_list, mainstem_seg_list, + trib_seg_list, diffusive_parameters, param_df, qlat, @@ -961,6 +1072,7 @@ def diffusive_input_data_v02( usgs_df, refactored_diffusive_domain, refactored_reaches, + coastal_boundary_depth_df, ): """ @@ -988,20 +1100,19 @@ def diffusive_input_data_v02( ------- diff_ins -- (dict) formatted inputs for diffusive wave model """ - # lateral inflow timestep (sec) - dt_ql_g = dt * qts_subdivisions - # upstream boundary condition timestep (sec) - dt_ub_g = dt - # downstream boundary condition timestep (sec) - dt_db_g = dt * qts_subdivisions - # tributary inflow timestep (sec) - dt_qtrib_g = dt + + # lateral inflow timestep (sec). Currently, lateral flow in CHAROUT files at one hour time step + dt_ql_g = 3600.0 + # upstream boundary condition timestep = MC simulation time step (sec) + dt_ub_g = 300.0 + # tributary inflow timestep (sec) - currently, MC simulation time step = 5 min + dt_qtrib_g = 300.0 # usgs_df time step used for data assimilation. The original timestep of USGS streamflow is 15 min but later interpolated at every dt in min. dt_da_g = dt # [sec] # time interval at which flow and depth simulations are written out by Tulane diffusive model saveinterval_tu = dt # time interval at which depth is written out by cnt model - saveinterval_cnt = dt * (qts_subdivisions) + #saveinterval_cnt = dt * (qts_subdivisions) # time interval at which flow is computed and written out by cnt model # initial timestep interval used by Tulane diffusive model dtini_g = dt @@ -1016,7 +1127,7 @@ def diffusive_input_data_v02( timestep_ar_g[3] = saveinterval_tu timestep_ar_g[4] = dt_ql_g timestep_ar_g[5] = dt_ub_g - timestep_ar_g[6] = dt_db_g + # timestep_ar_g[6] = dt_db_g <- defined after calling fp_coastal_boundary_input_map timestep_ar_g[7] = dt_qtrib_g timestep_ar_g[8] = dt_da_g @@ -1025,8 +1136,8 @@ def diffusive_input_data_v02( para_ar_g = np.zeros(paradim) para_ar_g[0] = 0.95 # Courant number (default: 0.95) para_ar_g[1] = 0.5 # lower limit of celerity (default: 0.5) - para_ar_g[2] = 50.0 # lower limit of diffusivity (default: 50) - para_ar_g[3] = 5000.0 # upper limit of diffusivity (default: 1000) + para_ar_g[2] = 10.0 # lower limit of diffusivity (default: 10) + para_ar_g[3] = 10000.0 # upper limit of diffusivity (default: 10000) para_ar_g[4] = -15.0 # lower limit of dimensionless diffusivity, used to determine b/t normal depth and diffusive depth para_ar_g[5] = -10.0 #upper limit of dimensionless diffusivity, used to determine b/t normal depth and diffusive depth para_ar_g[6] = 1.0 # 0:run Bisection to compute water level; 1: Newton Raphson (default: 1.0) @@ -1158,12 +1269,20 @@ def diffusive_input_data_v02( pynw[frj] = head_segment frnw_col = 8 - frnw_g = fp_network_map( - mainstem_seg_list, mx_jorder, ordered_reaches, rchbottom_reaches, nrch_g, frnw_col, dbfksegID, pynw - ) + frnw_g = fp_network_map( + mainstem_seg_list, + mx_jorder, + ordered_reaches, + rchbottom_reaches, + nrch_g, + frnw_col, + dbfksegID, + pynw, + #upstream_boundary_link, + ) # covert data type from integer to float for frnw - dfrnw_g = frnw_g.astype('float') + dfrnw_g = frnw_g.astype('float') # --------------------------------------------------------------------------------- # Step 0-5 @@ -1187,7 +1306,7 @@ def diffusive_input_data_v02( mxncomp_g, nrch_g, ) - + # --------------------------------------------------------------------------------- # Step 0-6 # Prepare initial conditions data @@ -1231,47 +1350,48 @@ def diffusive_input_data_v02( qlat, qlat_g, ) - + # --------------------------------------------------------------------------------- # Step 0-8 # Prepare upstream boundary (top segments of head basin reaches) data # --------------------------------------------------------------------------------- - ds_seg = [] - upstream_flow_array = np.zeros((len(ds_seg), nsteps+1)) # <- this is a place holder until we figure out what to do with upstream boundary - nts_ub_g = int((tfin_g - t0_g) * 3600.0 / dt_ub_g) - ubcd_g = fp_ubcd_map(frnw_g, pynw, nts_ub_g, nrch_g, ds_seg, upstream_flow_array) - + # currently all zeroes by default. + nts_ub_g = int((tfin_g - t0_g) * 3600.0 / dt_ub_g) + ubcd_g = np.zeros((nts_ub_g, nrch_g)) # --------------------------------------------------------------------------------- # Step 0-9 # Prepare downstrea boundary (bottom segments of TW reaches) data - # --------------------------------------------------------------------------------- - - # this is a place holder that uses normal depth and the lower boundary. - # we will need to revisit this - nts_db_g = int((tfin_g - t0_g) * 3600.0 / dt_db_g)+1 - dbcd_g = np.zeros(nts_db_g) - + # --------------------------------------------------------------------------------- + dt_db_g, dsbd_option, nts_db_g, dbcd_g = fp_coastal_boundary_input_map( + tw, + coastal_boundary_depth_df, + nrch_g, + t0, + t0_g, + tfin_g) + + timestep_ar_g[6] = dt_db_g + para_ar_g[10] = dsbd_option # downstream water depth boundary condition: 1: given water depth data, 2: normal depth + # --------------------------------------------------------------------------------------------- # Step 0-9-2 # Prepare tributary q time series data generated by MC that flow into a juction boundary # --------------------------------------------------------------------------------------------- - nts_qtrib_g = int((tfin_g - t0_g) * 3600.0 / dt_qtrib_g) + 1 - + nts_qtrib_g = int((tfin_g - t0_g) * 3600.0 / dt_qtrib_g) + 1 # Even MC-computed flow start from first 5 min, t0 is coverd by initial_conditions. qtrib_g = np.zeros((nts_qtrib_g, nrch_g)) frj = -1 for x in range(mx_jorder, -1, -1): for head_segment, reach in ordered_reaches[x]: frj = frj + 1 if head_segment not in mainstem_seg_list: - qtrib_g[1:,frj] = junction_inflows.loc[head_segment] - + qtrib_g[1:,frj] = junction_inflows.loc[head_segment] # TODO - if one of the tributary segments is a waterbody, it's initial conditions # will not be in the initial_conditions array, but rather will be in the waterbodies_df array - qtrib_g[0,frj] = initial_conditions.loc[head_segment, 'qu0'] - + qtrib_g[0,frj] = initial_conditions.loc[head_segment, 'qu0'] + # --------------------------------------------------------------------------------- # Step 0-10 @@ -1279,7 +1399,7 @@ def diffusive_input_data_v02( # --------------------------------------------------------------------------------- if not refactored_diffusive_domain: x_bathy_g, z_bathy_g, mann_bathy_g, size_bathy_g, mxnbathy_g = fp_naturalxsec_map( - ordered_reaches, + ordered_reaches, mainstem_seg_list, topobathy_data_bytw, param_df, @@ -1287,7 +1407,7 @@ def diffusive_input_data_v02( mxncomp_g, nrch_g, dbfksegID) - + # --------------------------------------------------------------------------------------------- # Step 0-11 @@ -1304,7 +1424,6 @@ def diffusive_input_data_v02( t0_g, tfin_g) - # --------------------------------------------------------------------------------------------- # Step 0-12-1 @@ -1315,12 +1434,16 @@ def diffusive_input_data_v02( # increase min.lenght of segment) # --------------------------------------------------------------------------------------------- if refactored_diffusive_domain: - rfrnw_g, rpynw, rordered_reaches = fp_refactored_network_map( - nrch_g, - frnw_g, - pynw, - refactored_diffusive_domain, - refactored_reaches) + rfrnw_g, rpynw, rordered_reaches = fp_refactored_network_map( + nrch_g, + frnw_g, + pynw, + mainstem_seg_list, + trib_seg_list, + refactored_diffusive_domain, + refactored_reaches, + #upstream_boundary_link, + ) # --------------------------------------------------------------------------------- # Step 0-12-2 @@ -1382,7 +1505,7 @@ def diffusive_input_data_v02( rordered_reaches, refactored_diffusive_domain, ) - + # --------------------------------------------------------------------------------------------- # Step 0-12-3 @@ -1423,7 +1546,7 @@ def diffusive_input_data_v02( else: crosswalk_nrow = int(0) crosswalk_ncol = int(0) - crosswalk_g = np.array([]).reshape(0,0) + crosswalk_g = np.array([]).reshape(0,0) # --------------------------------------------------------------------------------- # Step 0-13 @@ -1485,7 +1608,7 @@ def diffusive_input_data_v02( diff_ins["rdx_ar_g"] = rdx_ar_g diff_ins["cwnrow_g"] = crosswalk_nrow diff_ins["cwncol_g"] = crosswalk_ncol - diff_ins["crosswalk_g"] = crosswalk_g + diff_ins["crosswalk_g"] = crosswalk_g else: # for refactored hydrofabric # model time steps @@ -1537,8 +1660,8 @@ def diffusive_input_data_v02( diff_ins["rdx_ar_g"] = rdx_ar_g diff_ins["cwnrow_g"] = crosswalk_nrow diff_ins["cwncol_g"] = crosswalk_ncol - diff_ins["crosswalk_g"] = crosswalk_g - + diff_ins["crosswalk_g"] = crosswalk_g + return diff_ins def unpack_output(pynw, ordered_reaches, out_q, out_elv): diff --git a/test/HurricaneLaura/test_AnA.yaml b/test/HurricaneLaura/test_AnA.yaml new file mode 100644 index 000000000..6440833f2 --- /dev/null +++ b/test/HurricaneLaura/test_AnA.yaml @@ -0,0 +1,96 @@ +# $ python -m nwm_routing -f -V3 test_AnA.yaml +#-------------------------------------------------------------------------------- +log_parameters: + #---------- + showtiming: True + log_level : DEBUG +#-------------------------------------------------------------------------------- +network_topology_parameters: + #---------- + supernetwork_parameters: + #---------- + geo_file_path: domain/RouteLink_NWMv2.1.nc + mask_file_path: domain/coastal_10diffusive.txt + waterbody_parameters: + #---------- + break_network_at_waterbodies: True + level_pool: + #---------- + level_pool_waterbody_parameter_file_path: domain/LAKEPARM_NWMv2.1.nc + rfc: + #---------- + reservoir_parameter_file : domain/reservoir_index_AnA.nc + reservoir_rfc_forecasts : False + reservoir_rfc_forecasts_time_series_path: rfc_TimeSeries/ + reservoir_rfc_forecasts_lookback_hours : 48 +#-------------------------------------------------------------------------------- +compute_parameters: + #---------- + parallel_compute_method: by-subnetwork-jit-clustered #serial + compute_kernel : V02-structured + assume_short_ts : True + subnetwork_target_size : 10000 + cpu_pool : 36 + restart_parameters: + #---------- + wrf_hydro_channel_restart_file : restart/HYDRO_RST.2020-08-26_00:00_DOMAIN1 + #lite_channel_restart_file : restart/RESTART.2020082600_DOMAIN1 + wrf_hydro_channel_ID_crosswalk_file : domain/RouteLink_NWMv2.1.nc + wrf_hydro_waterbody_restart_file : restart/HYDRO_RST.2020-08-26_00:00_DOMAIN1 + #lite_waterbody_restart_file : restart/waterbody_restart_202006011200 + wrf_hydro_waterbody_ID_crosswalk_file : domain/LAKEPARM_NWMv2.1.nc + wrf_hydro_waterbody_crosswalk_filter_file: domain/RouteLink_NWMv2.1.nc + hybrid_parameters: + run_hybrid_routing: True + diffusive_domain : domain/coastal_domain_subset.yaml + use_natl_xsections: True + topobathy_domain : domain/final_diffusive_natural_xs.nc + run_refactored_network: True + refactored_domain: domain/refactored_coastal_domain_subset.yaml + refactored_topobathy_domain: domain/refac_final_diffusive_natural_xs.nc + coastal_boundary_domain: domain/coastal_boundary_domain.yaml + forcing_parameters: + #---------- + qts_subdivisions : 12 + dt : 300 # [sec] + qlat_input_folder : channel_forcing + qlat_file_pattern_filter : "*.CHRTOUT_DOMAIN1" + coastal_boundary_input_file : boundary_forcing + nts : 2592 # 288 for 1day; 2592 for 9 days + max_loop_size : 24 # [hr] + data_assimilation_parameters: + #---------- + usgs_timeslices_folder : usgs_TimeSlice/ + usace_timeslices_folder : usace_TimeSlice/ + timeslice_lookback_hours : 48 + qc_threshold : 1 + streamflow_da: + #---------- + streamflow_nudging : False + diffusive_streamflow_nudging : False + gage_segID_crosswalk_file : domain/RouteLink_NWMv2.1.nc + crosswalk_gage_field : 'gages' + crosswalk_segID_field : 'link' + wrf_hydro_lastobs_file : lastobs/nudgingLastObs.2020-06-01_12:00:00.nc + lastobs_output_folder : lastobs/ + reservoir_da: + #---------- + reservoir_persistence_usgs : False + reservoir_persistence_usace : False + gage_lakeID_crosswalk_file : domain/reservoir_index_AnA.nc +#-------------------------------------------------------------------------------- +output_parameters: + #---------- + test_output: output/HurricaneLaura_flowveldepth.pkl + lite_restart: + #---------- + lite_restart_output_directory: restart/ + chrtout_output: + #---------- + wrf_hydro_channel_output_source_folder: channel_forcing/ + chanobs_output: + #---------- + chanobs_output_directory: output/ + chanobs_filepath : HurricaneLaura_chanobs.nc + lakeout_output: lakeout/ + \ No newline at end of file diff --git a/test/LowerColorado_TX/domain/coastal_boundary_domain.yaml b/test/LowerColorado_TX/domain/coastal_boundary_domain.yaml new file mode 100644 index 000000000..05e983497 --- /dev/null +++ b/test/LowerColorado_TX/domain/coastal_boundary_domain.yaml @@ -0,0 +1,11 @@ +1643861: 2525678 # Guadaupe River +3766342: 252935 # Lower Colorado River +3125212: 1964002 # in TX +1440477: 2525679 # Brays Bayou +1558954: 3774175 # Goose Creek +1559026: 5247955 # Cedar Bayou +18122654: 5331418 # Pascagoular River +7703046: 798675 +6134087: 2088390 # Pawtuxet River +1737140: 815369 # Penobacot River + diff --git a/test/LowerColorado_TX/domain/diffusive_domain_new.yaml b/test/LowerColorado_TX/domain/coastal_domain_subset.yaml similarity index 94% rename from test/LowerColorado_TX/domain/diffusive_domain_new.yaml rename to test/LowerColorado_TX/domain/coastal_domain_subset.yaml index a3992d8dc..5c60bb2e7 100644 --- a/test/LowerColorado_TX/domain/diffusive_domain_new.yaml +++ b/test/LowerColorado_TX/domain/coastal_domain_subset.yaml @@ -1,26 +1,125 @@ -3766334: +3766342: links: + - 5781919 + - 5781917 + - 5781901 + - 5781963 + - 5781923 + - 5781929 + - 5789878 + - 5790024 + - 5790026 + - 5790134 + - 5790150 + - 5790132 + - 5790152 + - 5790130 + - 5790128 + - 5793588 + - 5790228 + - 5790230 + - 5790126 + - 5790154 + - 5790124 + - 5790120 + - 5790122 + - 5790118 + - 5790116 + - 5790148 + - 5790114 + - 5790220 + - 5790112 + - 5793618 + - 5790110 + - 5790158 + - 5790034 + - 5790218 + - 5790106 + - 5790104 + - 5790164 + - 5790102 + - 5790100 + - 5790172 + - 5790108 + - 5790098 + - 5790166 + - 5790096 + - 5790094 + - 5790092 + - 5790182 + - 5790180 + - 5790090 + - 5790088 + - 5790086 + - 5790084 + - 5790188 + - 5790080 + - 5790032 + - 5790216 + - 5790028 + - 5790030 + - 5790082 + - 5790204 + - 5790078 + - 5790076 + - 5790194 + - 5790074 + - 5790072 + - 5790070 + - 5790068 + - 5793586 + - 5790066 + - 5790064 + - 5793592 + - 5790062 + - 5790208 + - 5790212 + - 5790060 + - 5790058 + - 5790056 + - 5790054 + - 5790200 + - 5790052 + - 5790050 + - 5790186 + - 5790048 + - 5790046 + - 5790044 + - 5790040 + - 5790038 + - 5790036 + - 5793582 + - 5791174 + - 5791178 + - 5791198 + - 5791176 + - 5791186 + - 5791184 + - 5791180 + - 5791182 + - 5791188 + - 5793584 - 5791828 - 5791830 - - 5791834 - 5791836 + - 5791834 - 5791838 - 5791840 - 5791846 - 5791848 + - 5791864 - 5791854 - 5791856 - 5791858 - 5791860 - - 5791864 - 5791872 - 5791874 - 5791878 - 5791880 - 5791886 - 5791888 - - 5791894 - 5791896 + - 5791894 - 5791898 - 5791904 - 5791908 @@ -28,32 +127,26 @@ - 5791912 - 5791916 - 5791918 + - 5791942 + - 5791940 - 5791924 - - 5791926 - 5791928 + - 5791926 - 5791930 - 5791932 - 5791934 - - 5791940 - - 5791942 - - 5793582 - - 5793584 - - 5793586 - - 5793588 - - 5793592 - - 5793618 - - 3763130 - - 3763132 - 3763134 + - 3763132 + - 3763130 - 3763140 - 3763142 - 3763144 - 3763148 - 3763150 - 3763154 + - 3763162 - 3763158 - 3763160 - - 3763162 - 3763164 - 3763166 - 3764148 @@ -63,8 +156,8 @@ - 3764162 - 3764168 - 3764170 - - 3764172 - 3764174 + - 3764172 - 3764176 - 3764178 - 3764180 @@ -72,25 +165,29 @@ - 3764184 - 3764186 - 3764188 - - 3764190 - 3764192 - - 3764194 + - 3764190 - 3764196 + - 3764194 - 3764198 + - 3764314 + - 3766986 + - 3767012 - 3764200 + - 3767010 - 3764228 - - 3764230 - 3764232 - - 3764234 - - 3764238 - - 3764240 - - 3764242 + - 3764230 + - 3764248 - 3764244 - 3764246 - - 3764248 + - 3764240 + - 3764242 + - 3764234 + - 3764238 - 3764254 - - 3764256 - 3764258 + - 3764256 - 3764260 - 3764268 - 3764270 @@ -99,144 +196,57 @@ - 3764282 - 3764284 - 3764286 - - 3764288 - - 3764290 - - 3764292 - 3764294 + - 3764292 + - 3764290 + - 3764288 - 3764296 - - 3764314 - - 3765732 - - 3765740 - - 3765742 - - 3765748 - - 3765750 - 3765756 - - 3765758 + - 3766380 + - 3766382 - 3765764 + - 3765748 - 3765768 - 3765770 - 3765774 - 3765780 + - 3765750 - 3765782 - 3765784 + - 3765740 - 3765786 + - 3765742 - 3765790 + - 3765758 + - 3765732 - 3765792 - - 3765794 - - 3765796 - - 3765798 - - 3765800 - - 3766334 - 3766354 - 3766356 + - 3765800 - 3766360 - 3766362 - 3766368 + - 3765794 + - 3765796 + - 3765798 - 3766370 - - 3766372 - - 3766376 - - 3766378 - - 3766380 - - 3766382 - 3766384 - 3766386 - - 5789878 - - 5790024 - - 5790026 - - 5790028 - - 5790030 - - 5790032 - - 5790034 - - 5790036 - - 5790038 - - 5790040 - - 5790044 - - 5790046 - - 5790048 - - 5790050 - - 5790052 - - 5790054 - - 5790056 - - 5790058 - - 5790060 - - 5790062 - - 5790064 - - 5790066 - - 5790068 - - 5790070 - - 5790072 - - 5790074 - - 5790076 - - 5790078 - - 5790080 - - 5790082 - - 5790084 - - 5790086 - - 5790088 - - 5790090 - - 5790092 - - 5781901 - - 5790094 - - 5790096 - - 5790098 - - 5790100 - - 5790102 - - 5790104 - - 5790106 - - 5790108 - - 5781917 - - 5790110 - - 5781919 - - 5790112 - - 5790114 - - 5781923 - - 5790116 - - 5790118 - - 5790120 - - 5781929 - - 5790122 - - 5790124 - - 5790126 - - 5790128 - - 5790130 - - 5790132 - - 5790134 - - 5790148 - - 5790150 - - 5790152 - - 5790154 - - 5781963 - - 5790158 - - 5790164 - - 5790166 - - 5790172 - - 5790180 - - 5790182 - - 5790186 - - 5790188 - - 5790194 - - 5790200 - - 5790204 - - 5790208 - - 5790212 - - 5790216 - - 5790218 - - 5790220 - - 5790228 - - 5790230 - - 3766986 - - 3767010 - - 3767012 - - 5791174 - - 5791176 - - 5791178 - - 5791180 - - 5791182 - - 5791184 - - 5791186 - - 5791188 - - 5791198 + - 3766372 + - 3766378 + - 3766376 + - 3766334 + - 3766336 + - 3766324 + - 3766326 + - 3766332 + - 3766330 + - 3766348 + - 3766346 + - 3766342 rfc: - wgrfc rpu: - 12c + upstream_boundary_link_mainstem: + - 5781329 diff --git a/test/LowerColorado_TX/domain/coastal_subset.txt b/test/LowerColorado_TX/domain/coastal_subset.txt new file mode 100644 index 000000000..6b9893467 --- /dev/null +++ b/test/LowerColorado_TX/domain/coastal_subset.txt @@ -0,0 +1,11248 @@ +942080008 +942080009 +942080010 +942080011 +942080012 +942080013 +942080014 +942080015 +942080016 +942080017 +942080018 +942080040 +942080041 +942080042 +942080043 +942080044 +942080045 +5734453 +5734455 +5734457 +5636245 +5636247 +5701785 +5636249 +5701787 +5636251 +5701789 +5636253 +5701791 +5636255 +5701793 +5636257 +5701795 +5636259 +5701797 +5636261 +5701799 +5636263 +5701801 +5636265 +5701803 +5636267 +5701805 +5636269 +5701807 +5636271 +5701809 +5636273 +5701811 +5636275 +5701813 +5636277 +5701815 +5701817 +5701819 +5701821 +5701823 +5701825 +5701827 +5701829 +5701831 +5701833 +5701835 +5701837 +5701839 +5701841 +5734637 +5734639 +5702221 +5702223 +5702225 +5702227 +5702229 +5702231 +5702233 +5702235 +5702237 +5702239 +5702241 +5702243 +5702245 +5702247 +5702251 +5702253 +5702255 +5702257 +5702259 +5702261 +5702263 +5702265 +5702267 +5702269 +5702271 +5702273 +5702275 +5702277 +5702279 +5702281 +5702283 +5702285 +5702287 +5702289 +5702291 +5702293 +5702295 +5702297 +5702299 +5702301 +5702303 +5702305 +5702307 +5702309 +5702311 +5702313 +5702315 +5702317 +5702319 +5702321 +5702323 +5702325 +5702327 +5702329 +5702331 +5702333 +5702335 +5702337 +5702339 +5702341 +5702343 +5702345 +5702347 +5702349 +5702351 +5702353 +5702355 +5702357 +5702359 +5702361 +5702363 +5702365 +5702367 +5702369 +5702371 +5702373 +5702375 +5702377 +5702379 +5702381 +5702383 +5702385 +5702387 +5702389 +5735159 +5702391 +5735161 +5702393 +5735163 +5702395 +5735165 +5702397 +5735167 +5702399 +5735169 +5702401 +5735171 +5702403 +5735173 +5702405 +5735175 +5702407 +5735177 +5702409 +5735179 +5702411 +5735181 +5702413 +5735183 +5702415 +5735185 +5702417 +5735187 +5702419 +5735189 +5702421 +5735191 +5702423 +5735193 +5702425 +5735195 +5702427 +5735197 +5702429 +5735199 +5702431 +5735201 +5702433 +5735203 +5702435 +5735205 +5702437 +5735207 +5702439 +5735209 +5735211 +5735213 +5735215 +5735217 +5735219 +5735221 +5735223 +5735225 +5735227 +5735229 +5735231 +5735233 +5735235 +5735237 +5735239 +5735241 +5735243 +5735245 +5735247 +5735249 +5735251 +5735253 +5735255 +5735257 +5735259 +5735261 +5735263 +5735265 +5735267 +5735269 +5735273 +5735275 +5735277 +5735279 +5735281 +5735283 +5735285 +5735287 +5735289 +5735291 +5735293 +5735295 +5735301 +5735307 +5735309 +5735311 +5735313 +5735317 +5768085 +5735321 +5735329 +5735331 +5735333 +5735335 +5735337 +5705496 +5705498 +5735493 +5735495 +5735497 +5735505 +5735507 +5735509 +5735511 +5735513 +5735515 +5735517 +5735519 +5735521 +5735523 +5735525 +5702757 +5735527 +5702759 +5735529 +5702761 +5735531 +5702763 +5735533 +5702765 +5735535 +5702767 +5735537 +5702769 +5735539 +5702771 +5735541 +5702773 +5735543 +5702775 +5735545 +5702777 +5735547 +5702779 +5735549 +5702781 +5735551 +5702783 +5735553 +5702785 +5735555 +5702787 +5735557 +5702789 +5735559 +5702791 +5735561 +5702793 +5735563 +5702795 +5735565 +5702797 +5735567 +5702799 +5735569 +5702801 +5735571 +5735573 +5735575 +5702807 +5702809 +5702811 +5702813 +5702815 +5702817 +5702819 +5702821 +5702823 +5702825 +5702827 +5702829 +5702833 +5702835 +5702837 +5702839 +5702841 +5702843 +5702845 +5702847 +5702849 +5702851 +5702853 +5702855 +5702857 +5702859 +5702861 +5702863 +5702865 +5702867 +5702869 +5702871 +5702873 +5702875 +5702877 +5702879 +5702881 +5702883 +5702885 +5702887 +5702889 +5702891 +5702893 +5702895 +5702897 +5702899 +5702901 +5702903 +5702909 +5702911 +5702913 +5702915 +5702917 +5702919 +5702921 +5702925 +5702927 +5702929 +5702931 +5702933 +5702935 +5735801 +5735803 +5735805 +5735807 +5735809 +5735811 +5735813 +5735815 +5735817 +5735819 +5735821 +5735823 +5735825 +5735827 +5735829 +5735831 +5735833 +5735835 +5735837 +5735839 +5735841 +5735843 +5735845 +5735847 +5735849 +5735851 +5735853 +5735855 +5735857 +5735859 +5735861 +5735863 +5735865 +5735867 +5735869 +5735871 +5735873 +5735875 +5735877 +5735879 +5735881 +5735883 +5735885 +5735887 +5735889 +5735891 +5735893 +5735895 +5735897 +5735899 +5735901 +5735903 +5735905 +5735907 +5735909 +5735911 +5735913 +5735915 +5735917 +5735919 +5735921 +5735923 +5735925 +5735927 +5735929 +5735933 +5735935 +5735937 +5735939 +5735941 +5735943 +5735947 +5735949 +5735951 +5735953 +5735955 +5735957 +5735959 +5735963 +5735965 +5735967 +5735969 +5735971 +5735973 +5735975 +5735977 +5735981 +5735983 +5735985 +5735987 +5735991 +5735993 +5703227 +5735997 +5703229 +5735999 +5703231 +5736001 +5703233 +5736003 +5703235 +5736005 +5703237 +5736007 +5703239 +5736009 +5703241 +5736011 +5703243 +5736013 +5703245 +5736015 +5703247 +5736017 +5703249 +5736019 +5703251 +5736021 +5703253 +5736023 +5703255 +5736025 +5703257 +5736027 +5703259 +5736029 +5703261 +5736031 +5703263 +5736033 +5703265 +5736035 +5703267 +5736037 +5703269 +5736039 +5703271 +5736041 +5703273 +5736043 +5703275 +5736045 +5703277 +5736047 +5703279 +5736049 +5703281 +5736051 +5736053 +5736055 +5736057 +5736059 +5736061 +5736063 +5736065 +5736067 +5736069 +5736071 +5736073 +5736075 +5736077 +5736079 +5736081 +5736083 +5736085 +5736087 +5736089 +5736091 +5736093 +5736095 +5736097 +5736099 +5736101 +5736103 +5736105 +5736107 +5736109 +5736111 +5736113 +5736115 +5736117 +5736119 +5736121 +5736123 +5736125 +5736127 +5736129 +5736131 +5736133 +5736135 +5736137 +5736139 +5736141 +5736143 +5736145 +5736147 +5736149 +5736151 +5736153 +5736155 +5736157 +5736159 +5736161 +5736163 +5736165 +5736167 +5736169 +5736171 +5736173 +5736175 +5736177 +5736179 +5703411 +5736181 +5736183 +5736185 +5736187 +5736189 +5736191 +5736193 +5736195 +5736197 +5736199 +5736201 +5736203 +5736205 +5736207 +5736209 +5736211 +5736493 +5736495 +5736497 +5736499 +5736501 +5736503 +5736505 +5736507 +5736509 +5736511 +5736513 +5736515 +5736517 +5736519 +5736521 +5736525 +5736527 +5736529 +5736531 +5736533 +5736535 +5736537 +5736539 +5736541 +5736543 +5736545 +5736547 +5736549 +5736551 +5736553 +5736555 +5736557 +5736559 +5736561 +5736563 +5736565 +5703797 +5736567 +5703799 +5736569 +5703801 +5736571 +5736573 +5736577 +5736579 +5736581 +5736583 +5736585 +5736587 +5736589 +5736591 +5736593 +5736595 +5736597 +5736599 +5736601 +5736603 +5736605 +5736607 +5736609 +5736611 +5736613 +5736615 +5736617 +5736619 +5769387 +5736621 +5769389 +5736623 +5769391 +5736625 +5769393 +5736627 +5769395 +5736629 +5769397 +5736631 +5769399 +5736633 +5769401 +5736635 +5769403 +5736637 +5769405 +5736639 +5769407 +5736641 +5769409 +5736643 +5769411 +5736645 +5769413 +5736647 +5769415 +5736649 +5769417 +5736651 +5769419 +5736653 +5769421 +5736655 +5769423 +5736657 +5769425 +5736659 +5769427 +5736661 +5769429 +5736663 +5769431 +5736665 +5769433 +5736667 +5769435 +5736669 +5769437 +5736671 +5769439 +5736673 +5769441 +5736675 +5769443 +5736677 +5769445 +5736679 +5769447 +5736681 +5769449 +5736683 +5769451 +5736685 +5769453 +5736687 +5769455 +5736689 +5769457 +5736691 +5769459 +5736693 +5769461 +5736695 +5769463 +5736697 +5769465 +5736699 +5769467 +5736701 +5769469 +5736703 +5769471 +5736705 +5769473 +5736707 +5769475 +5736709 +5769477 +5736711 +5769479 +5736713 +5769481 +5736715 +5769483 +5769485 +5686217 +5736719 +5769487 +5736721 +5769489 +5736723 +5769491 +5736725 +5769493 +5736727 +5769495 +5736729 +5769497 +5736731 +5769499 +5736733 +5769501 +5736735 +5769503 +5736737 +5769505 +5769507 +5769509 +5769511 +5769513 +5769515 +5769517 +5769519 +5769521 +5769523 +5769525 +5769527 +5769529 +5769531 +5769533 +5769535 +5769537 +5769539 +5769541 +5769543 +5769545 +5769547 +5769549 +5769551 +5769553 +5769555 +5769557 +5769559 +5769561 +5769563 +5769565 +5769567 +5769569 +5769571 +5769573 +5769575 +5769577 +5769579 +5769581 +5769583 +5769585 +5769587 +5769589 +5769591 +5769593 +5769595 +5769597 +5769599 +5769601 +5769603 +5769605 +5769607 +5769609 +5769611 +5769613 +5769615 +5769617 +5769619 +5769621 +5769623 +5769625 +5769627 +5769629 +5769631 +5769633 +5769635 +5769637 +5769639 +5769641 +5769643 +5769645 +5769647 +5769649 +5769651 +5769653 +5769655 +5769657 +5769659 +5769661 +5769663 +5769665 +5769667 +5769669 +5769671 +5769673 +5769675 +5769677 +5769679 +5769681 +5769683 +5769685 +5769687 +5769689 +5769691 +5769693 +5769695 +5769697 +5769699 +5769701 +5769703 +5769705 +5769707 +5769709 +5769711 +5769713 +5769715 +5769717 +5769719 +5769721 +5769723 +5769725 +5769727 +5736961 +5769729 +5736963 +5769731 +5736965 +5769733 +5736967 +5769735 +5736969 +5769737 +5736971 +5769739 +5736973 +5769741 +5736975 +5769743 +5736977 +5769745 +5736979 +5769747 +5736981 +5769749 +5736983 +5769751 +5736985 +5769753 +5736987 +5769755 +5736989 +5769757 +5736991 +5769759 +5736993 +5769761 +5736995 +5769763 +5736997 +5769765 +5736999 +5769767 +5737001 +5769769 +5737003 +5769771 +5737005 +5769773 +5769775 +5769777 +5769779 +5769781 +5769783 +5769785 +5769787 +5769789 +5769791 +5769793 +5769795 +5769797 +5769799 +5769801 +5769803 +5769805 +5769807 +5769809 +5769811 +5769813 +5769815 +5769817 +5769819 +5769821 +5769823 +5769825 +5769827 +5769829 +5769831 +5769833 +5769835 +5769837 +5769839 +5769841 +5769843 +5769845 +5769847 +5769849 +5769851 +5769853 +5769855 +5769857 +5769859 +5769861 +5769863 +5769865 +5769867 +5769869 +5769871 +5769873 +5769875 +5769877 +5769879 +5769881 +5769883 +5769885 +5769887 +5769889 +5769891 +5769893 +5769895 +5769897 +5769899 +5769901 +5769903 +5769905 +5769907 +5769909 +5769911 +5769913 +5769915 +5769917 +5769919 +5769921 +5769923 +5769925 +5769927 +5769929 +5769931 +5769933 +5769935 +5769937 +5769939 +5769941 +5769943 +5769945 +5769947 +5769949 +5769951 +5769953 +5769955 +5769957 +5769959 +5769961 +5769963 +5769965 +5769967 +5769969 +5769971 +5769973 +5769975 +5769977 +5769979 +5769981 +5769983 +5769985 +5769987 +5769989 +5769991 +5769993 +5769995 +5769997 +5769999 +5770001 +5770003 +5770005 +5770007 +5770009 +5770011 +5770013 +5770015 +5770017 +5770019 +5770021 +5770023 +5770025 +5770027 +5770029 +5770031 +5770033 +5770035 +5770037 +5770039 +5770041 +5770043 +5770045 +5770047 +5770049 +5770051 +5737285 +5770053 +5737287 +5770055 +5737289 +5770057 +5770059 +5770061 +5770063 +5770065 +5770067 +5770069 +5770071 +5770073 +5770075 +5770077 +5770079 +5770081 +5770083 +5770085 +5770087 +5770089 +5770091 +5770093 +5770095 +5770097 +5770099 +5770101 +5770103 +5770105 +5770107 +5770109 +5770111 +5770113 +5770115 +5770117 +5770119 +5770121 +5770123 +5770125 +5770127 +5770129 +5770131 +5770133 +5770135 +5770137 +5770139 +5770141 +5770143 +5770145 +5770147 +5770149 +5770151 +5770153 +5770155 +5770157 +5770159 +5770161 +5770163 +5770165 +5770167 +5770169 +5770171 +5770173 +5770175 +5770177 +5770179 +5770181 +5770183 +5770185 +5770187 +5770189 +5770191 +5770193 +5770195 +5770197 +5770199 +5770201 +5770203 +5770205 +5770207 +5770209 +5770213 +5770215 +5770217 +5770219 +5770221 +5770223 +5770225 +5770227 +5770229 +5770231 +5770233 +5770235 +5770237 +5770239 +5770241 +5770243 +5770245 +5770465 +5770467 +5770469 +5770471 +5770473 +5770475 +5770477 +5770479 +5770481 +5770483 +5770485 +5770487 +5770489 +5770491 +5770493 +5770495 +5770497 +5770499 +5770501 +5770503 +5770505 +5770507 +5770509 +5770511 +5770513 +5770515 +5770517 +5770519 +5770521 +5770523 +5770525 +5770527 +5770529 +5770531 +5770533 +5770535 +5770537 +5770539 +5770541 +5770543 +5770545 +5770547 +5770549 +5770551 +5770553 +5770555 +5770557 +5770559 +5770561 +5770563 +5770565 +5770567 +5770569 +5770571 +5770573 +5770575 +24677713 +5770577 +24677715 +5770579 +24677717 +5770581 +5770583 +5770585 +24677723 +5770587 +5770589 +5770591 +5770593 +24677769 +24677775 +24677777 +24677779 +24677781 +24677783 +24677785 +24677787 +24677789 +5770767 +5770769 +5770771 +5770773 +5770775 +5770777 +5770779 +5770781 +5770783 +5770785 +5770787 +5770789 +5770791 +5770793 +5770795 +5770797 +24677933 +5770799 +5770801 +5770803 +5770805 +5770807 +5770809 +5770811 +5770813 +5770815 +5770817 +5770819 +5770821 +5770823 +5770825 +5770827 +5770829 +5770831 +5770833 +5770835 +5770837 +5770839 +5764641 +5770841 +5770843 +5770845 +5770847 +5770849 +5764643 +5770851 +5770853 +5770855 +5770857 +5770859 +5770861 +5770863 +5770865 +5770867 +5770869 +5770871 +5770873 +5770875 +5770877 +5770879 +5770881 +5770883 +5770885 +5770887 +5770889 +5770891 +5770893 +5770895 +5770897 +5770899 +5770901 +5770903 +5770905 +5770907 +5770909 +5764655 +5770911 +5770913 +5770915 +5770917 +5770919 +5770921 +5770923 +5770925 +5770927 +5770929 +5770931 +5770933 +5770935 +5770937 +5770939 +5770941 +5770943 +5770945 +5770947 +5770949 +5770951 +5770953 +5770955 +5770957 +5770959 +5770961 +5770963 +5770965 +5770967 +5770969 +5770971 +5770973 +5770979 +5770981 +5770983 +5770985 +5770987 +5770991 +5770993 +5770995 +5705460 +5770997 +5705462 +5770999 +5705464 +5771001 +24678135 +5771003 +5705468 +5771005 +5705470 +5771007 +5705472 +5771009 +5705474 +5771011 +5705476 +5771013 +5705478 +5771015 +5705480 +5771017 +5705482 +5771019 +24678156 +5771021 +5705484 +5771023 +24678160 +5771025 +5705488 +5771027 +5705486 +5771029 +5705492 +5771031 +5705490 +5771033 +5705494 +5771035 +5705500 +5771037 +5705502 +5771039 +5705504 +5771041 +5705506 +5771043 +5705508 +5771045 +5705510 +5771047 +5705512 +5771049 +5705514 +5771051 +5705516 +5771053 +5771057 +5771059 +5771061 +5771063 +5771065 +5771067 +5771069 +5771071 +5771073 +5771075 +5771077 +5771079 +5771081 +5771083 +5771085 +5771087 +5771089 +5771091 +5771093 +5771095 +5771097 +5771099 +5771101 +5771103 +5771105 +5771107 +5771109 +5771111 +5771113 +5771115 +5771117 +5771119 +5771121 +5771123 +5771125 +5771127 +5771129 +5771131 +5771133 +5771135 +5771137 +5771139 +5771141 +5771143 +5771145 +5771147 +5771149 +5771151 +5771153 +5771155 +5771157 +5771159 +5771161 +5771163 +5771165 +5771167 +5771169 +5771171 +5771173 +5771175 +5771177 +5771179 +5771181 +5771183 +5771185 +5771187 +5771189 +5771191 +5771193 +5771195 +5771197 +5771199 +5771201 +5738435 +5771203 +5738437 +5771205 +5738439 +5771207 +5771209 +5738441 +5771211 +5771213 +5771215 +5771217 +5771219 +24678356 +5771221 +24678358 +5771223 +5771227 +5771231 +5771233 +5771235 +5771237 +5771239 +5771241 +5771243 +5771245 +5771247 +5771249 +5771251 +5771253 +5771255 +5771257 +5771259 +5771261 +5771263 +5771265 +5771267 +5771269 +5771271 +5771273 +5771275 +5771277 +5771279 +5771281 +5771283 +5771285 +5771287 +5771289 +5771291 +5771293 +5771295 +5771297 +5771299 +5771301 +5771303 +5771305 +5771307 +5771309 +5771311 +5771313 +5771315 +5771317 +5771319 +5771321 +5771323 +5771325 +5771327 +5771329 +5771331 +5771333 +5771335 +5771337 +5771339 +5771341 +5771343 +5771345 +5771347 +5771349 +5771351 +5771353 +5771355 +5771357 +5771359 +5771361 +5771363 +5771365 +5771367 +5771369 +5771371 +5771373 +5771375 +5771377 +5771379 +5771381 +5771383 +5771385 +5771387 +5771389 +5771391 +5771393 +5771395 +5771397 +5771399 +5771401 +5771403 +5771405 +5771407 +5771409 +5771411 +5771413 +5771415 +5771417 +5771419 +5771421 +5771423 +5771425 +5771427 +5771429 +5771431 +5771433 +5771435 +5771437 +5771439 +5771441 +5771443 +5771445 +5771447 +5771449 +5771451 +5771453 +5771455 +5771457 +5771459 +5771461 +5771463 +5771465 +5771467 +5771469 +5771471 +5771473 +5771475 +5771477 +5771479 +5771481 +5771483 +5771487 +5771489 +5771491 +5771493 +5771495 +5771497 +5771499 +5771501 +5771503 +5771505 +5771507 +5705972 +5771509 +5705974 +5771511 +5771513 +5771515 +5771517 +5771519 +5771521 +5706126 +5706128 +5706130 +5706132 +5706134 +5706136 +5706138 +5706140 +5771693 +5771695 +5771697 +5771699 +5771701 +5771703 +5771709 +5771711 +5771713 +5771715 +5771717 +5771719 +5771721 +5771723 +5771725 +5771727 +5771729 +5771731 +5771733 +5771735 +5771737 +5771739 +5771741 +5771745 +5771747 +5771749 +5771751 +5771753 +5771755 +5771757 +5771759 +5771761 +5771763 +5771765 +5771767 +5771769 +5771771 +5771773 +5771775 +5771777 +5771779 +5771781 +5771783 +5771785 +5771787 +5771789 +5771791 +5771793 +5771795 +5771797 +5771799 +5771801 +5771803 +5771805 +5771807 +5771809 +5771811 +5771813 +5771815 +5771817 +5771819 +5771821 +5771823 +5771825 +5771827 +5771829 +5771831 +5771833 +5771835 +5771837 +5771839 +5771841 +5771843 +5771845 +5771847 +5771849 +5771851 +5771853 +5772101 +5772105 +5772107 +5772109 +5772111 +5772113 +5772115 +5772117 +5772119 +5772121 +5772123 +5772125 +5772127 +5772129 +5772131 +5772133 +5772135 +5772137 +5772139 +5772141 +5772143 +5772145 +5772147 +5706612 +5772149 +5772151 +5772153 +5772155 +5772157 +5772159 +5772161 +5772163 +5772165 +5772167 +5772169 +5772171 +5772173 +5772175 +5772177 +5772179 +5772181 +5772183 +5772185 +5772187 +5772189 +5772191 +5772193 +5772195 +5772197 +5772199 +5772201 +5772203 +5772205 +5772207 +5772209 +5772211 +5772213 +5772215 +5772217 +5772219 +5772221 +5772223 +5772225 +5772227 +5772229 +5772231 +5772233 +5772235 +5772237 +5772239 +5772241 +5772243 +5772245 +5772247 +5772249 +5772251 +5772253 +5772255 +5772257 +5772259 +5772261 +5772263 +5772265 +5772267 +5772269 +5772271 +5772273 +5772275 +5772277 +5772279 +5772281 +5772283 +5772285 +5772287 +5772289 +5772291 +5772293 +5772295 +5772297 +5772299 +5772301 +5772303 +5772305 +5772307 +5772309 +5772311 +5772313 +5772315 +5772317 +5772319 +5772321 +5772323 +5772325 +5772327 +5772329 +5772331 +5772333 +5772335 +5772337 +5772339 +5772341 +5772343 +5772345 +5772347 +5772349 +5772351 +5772353 +5772355 +5772357 +5772359 +5772361 +5772363 +5772365 +5772367 +5772369 +5772371 +5772373 +5706838 +5772375 +5706840 +5772377 +5706842 +5772379 +5706844 +5772381 +5706846 +5772383 +5706848 +5772385 +5706850 +5772387 +5706852 +5772389 +5706854 +5772391 +5706856 +5772393 +5706858 +5772395 +5706860 +5772397 +5706862 +5706864 +5772401 +5706866 +5772403 +5706868 +5772405 +5706870 +5772407 +5706872 +5772409 +5706874 +5772411 +5706876 +5772413 +5706878 +5772415 +5706880 +5772417 +5706882 +5772419 +5706884 +5772421 +5706886 +5772423 +5706888 +5772425 +5706890 +5772427 +5706892 +5772429 +5706894 +5772431 +5706896 +5772433 +5706898 +5772435 +5706900 +5772437 +5706902 +5772439 +5706904 +5772441 +5706906 +5772443 +5706908 +5772445 +5706910 +5772447 +5706912 +5772449 +5706914 +5772451 +5706916 +5772453 +5706918 +5772455 +5706920 +5772457 +5706922 +5772459 +5706924 +5772461 +5706926 +5772463 +5706928 +5772465 +5706930 +5772467 +5706932 +5772469 +5706934 +5772471 +5706936 +5772473 +5706938 +5772475 +5706940 +5772477 +5706942 +5772479 +5706944 +5772481 +5706946 +5772483 +5706948 +5772485 +5706950 +5772487 +5706952 +5772489 +5706954 +5772491 +5706956 +5772493 +5772495 +5706960 +5772497 +5706962 +5772499 +5706964 +5772501 +5706966 +5772503 +5706968 +5772505 +5706970 +5772507 +5706972 +5772509 +5706974 +5772511 +5706976 +5772513 +5706978 +5772515 +5706980 +5772517 +5706982 +5772519 +5706984 +5772521 +5706986 +5772523 +5706988 +5772525 +5706990 +5772527 +5706992 +5772529 +5706994 +5772531 +5706996 +5772533 +5706998 +5772535 +5725901 +5772537 +5707002 +5772539 +5707004 +5772541 +5707006 +5772543 +5707008 +5772545 +5725903 +5772547 +5707010 +5772549 +5707014 +5772551 +5707012 +5772553 +5707018 +5772555 +5725905 +5772557 +5707020 +5772559 +5707024 +5772561 +5707022 +5772563 +5772565 +5707030 +5772567 +5772569 +5707034 +5772571 +5707036 +5772573 +5707038 +5772575 +5725909 +5772577 +5707040 +5772579 +5707044 +5772581 +5707046 +5772583 +5772585 +5725911 +5772587 +5772589 +5772591 +5772593 +5772595 +5725913 +5772597 +5772599 +5772601 +5772603 +5772605 +5772607 +5772609 +5772611 +5772613 +5772615 +5772617 +5772619 +5772621 +5772623 +5772625 +5725919 +5772627 +5772629 +5772631 +5772633 +5772635 +5725921 +5772637 +5772639 +5772641 +5772643 +5772645 +5772647 +5772649 +5772651 +5772653 +5772655 +5772657 +5772659 +5772661 +5772663 +5772665 +5772667 +5772669 +5772671 +5772673 +5772675 +5725929 +5772677 +5772679 +5772681 +5725931 +5725933 +5725935 +5725945 +5725951 +5725953 +5707286 +5707288 +5707290 +5707292 +5707294 +5707296 +5707298 +5707300 +5707302 +5707304 +5707306 +5707308 +5707310 +5707312 +5707314 +5707316 +5707320 +5707324 +5707326 +5707328 +5707330 +5725967 +5707332 +5707334 +5707336 +5707338 +5707342 +5707346 +5707348 +24778327 +5707352 +5707354 +5707356 +5707358 +5725981 +5772947 +5725983 +5772949 +5772951 +5772953 +5772955 +5772957 +5725985 +5772959 +5772961 +5772963 +5772965 +5772967 +5772969 +5772971 +5772973 +5772975 +5772977 +5772979 +5772981 +5772983 +5772985 +5772987 +5725991 +5772989 +5772991 +5772993 +5772995 +5772997 +5772999 +5773001 +5773003 +5773005 +5773007 +5707472 +5725995 +5773009 +5707474 +5707476 +5707478 +5707480 +5707482 +5725997 +5707484 +5707486 +5707488 +5707490 +5707492 +5725999 +5707494 +24778469 +5707496 +5707498 +5707500 +5707502 +5707504 +5707506 +5707508 +5707510 +5707512 +5707514 +5707516 +5707520 +5707522 +5726005 +5707524 +5707526 +5707528 +5707530 +5707532 +5726007 +5707534 +5726009 +5654368 +5726011 +5654370 +5654372 +5654374 +5726017 +5654376 +5726019 +5654378 +5726021 +5654382 +5654384 +5654386 +5726029 +5726033 +1611674 +5726035 +1611676 +5726039 +5726041 +5726043 +5726045 +5726047 +5773275 +5773277 +5773279 +5773281 +5726049 +5773283 +5773285 +5773287 +5773289 +5773291 +5773293 +5773295 +5773297 +5773299 +5773301 +5726053 +5773303 +5726055 +5726059 +5726063 +5726065 +5726067 +5707852 +5707854 +5707856 +5707858 +5707862 +5707864 +5740666 +5740668 +5740670 +5740672 +5740674 +5740676 +5740678 +5740680 +5740682 +5740684 +5740686 +5740688 +5740690 +5740692 +5740694 +5740696 +5740698 +5740700 +5740702 +5740704 +5740706 +5740708 +5740710 +5740712 +5740714 +5740716 +5740718 +5740720 +5740722 +5740724 +5740726 +5740728 +5740730 +5740732 +5740734 +5740736 +5740738 +5740740 +5740742 +5740744 +5740746 +5740748 +5740750 +5740752 +5740754 +5740756 +5740758 +5740760 +5740762 +5740764 +5740766 +5740768 +5740770 +5740772 +5740774 +5740776 +5740778 +5740780 +5740782 +5740784 +5740786 +5740788 +5740790 +5740792 +5740794 +5740796 +5740798 +5740800 +5740802 +5740804 +5740806 +5758678 +5740860 +5740862 +5740864 +5740866 +5740868 +5740870 +5740872 +5740874 +5740876 +5740878 +5740880 +5740882 +5740884 +5740886 +5740888 +5740890 +5740892 +5740894 +5740896 +5758690 +5740898 +5740900 +5740902 +5740904 +5740906 +5740908 +5740910 +5740912 +5740914 +5740916 +5740918 +5740920 +5740922 +5740924 +5740926 +5740928 +5740930 +5740932 +5740934 +5740936 +5740938 +5740940 +5740942 +5740944 +5740946 +5740948 +5740950 +5740952 +5740954 +5740956 +5758702 +5758706 +5758708 +5758710 +5758712 +5758716 +5758720 +5758724 +5758728 +5758730 +5758732 +5758734 +5758736 +5758738 +5758748 +5758750 +5758752 +5758754 +5758756 +5758760 +5758764 +5758782 +5741364 +5741366 +5741368 +5741370 +5758784 +5741372 +5741374 +5741376 +5741378 +5741380 +5758786 +5741382 +5741384 +5741386 +5741388 +5741390 +5741392 +5741394 +5741396 +5741398 +5741400 +5741402 +5741404 +5741406 +5741408 +5741410 +5741412 +5741414 +5741416 +5741418 +5741420 +5741422 +5741424 +5741426 +5741428 +5741430 +5741432 +5741434 +5741436 +5741438 +5741440 +5758798 +5741442 +5741444 +5741446 +5741448 +5741450 +5758800 +5741452 +5675917 +5741454 +5675915 +5741456 +5741458 +5741460 +5758802 +5741462 +5741464 +5741466 +5741468 +5741470 +5741472 +5741474 +5741476 +5741478 +5741480 +5758806 +5741482 +5741484 +5741486 +5741488 +5741490 +5741492 +5741494 +5741496 +5741498 +5741500 +5741502 +5741504 +5741506 +5741508 +5741510 +5741512 +5741514 +5741516 +5741518 +5741520 +5741522 +5741524 +5741526 +5741528 +5741530 +5741532 +5741534 +5741536 +5741538 +5741540 +5758818 +5741542 +5741544 +5741546 +5741548 +5741550 +5741552 +5741554 +5741556 +5741558 +5741560 +5741562 +5741564 +5741566 +5741568 +5741570 +5741572 +5741574 +5741576 +5741578 +5741580 +5741582 +5741584 +5741586 +5741588 +5741590 +5741592 +5741594 +5741596 +5741598 +5741600 +5741602 +5741604 +5741606 +5741608 +5741610 +5741616 +5741618 +5741620 +5741622 +5741624 +5741626 +5741628 +5741630 +5741632 +5741634 +5741636 +5741638 +5741640 +5741642 +5741644 +5741646 +5741648 +5741650 +5741652 +5741654 +5741658 +5741660 +5741662 +5741664 +5741666 +5741668 +5741670 +5741672 +5741674 +5741676 +5741678 +5741680 +5741682 +5741684 +5741686 +5741842 +5741844 +5741846 +5741848 +5741850 +5741852 +5741854 +5741856 +5741858 +5741860 +5741862 +5741864 +5741866 +5741868 +5741870 +5741872 +5741874 +5741876 +5741878 +5741880 +5741882 +5741884 +5741886 +5741888 +5741890 +5741892 +5741894 +5741896 +5741898 +5741900 +5741902 +5741904 +5741906 +5741908 +5741910 +5726327 +5741912 +5741914 +5741916 +5741918 +5741920 +5726329 +5741922 +5741924 +5741926 +5741928 +5741930 +5741932 +5741934 +5741936 +5741940 +5741942 +5741944 +5741946 +5741948 +5741950 +5726335 +5741952 +5741954 +5741956 +5741958 +5741960 +5741962 +5741964 +5741966 +5741968 +5741970 +5741972 +5741974 +5741976 +5741978 +5741980 +5741982 +5741984 +5741986 +5741988 +5741990 +5741994 +5741996 +5741998 +5742000 +5791474 +5742002 +5742004 +5742006 +5742008 +5742012 +5742014 +5742016 +5742018 +5742020 +5742022 +5742024 +5676489 +5742026 +5742028 +5742030 +24616399 +5742032 +24616401 +5742034 +5742036 +5742038 +5742040 +5742042 +5742044 +5742046 +5742048 +5742050 +5742052 +24616421 +5742054 +5742056 +24616425 +5742058 +5742060 +5742062 +5742064 +5742066 +5742068 +5742070 +5742072 +5742074 +5742076 +5742078 +5742080 +5742082 +5742084 +5742086 +5742088 +5742090 +5742092 +5742094 +5742096 +5742098 +5742100 +5742102 +5742104 +5742106 +5742108 +5742110 +5742112 +5742114 +5742116 +5742118 +5742120 +5676585 +5742122 +5676587 +5742124 +5742126 +5742128 +5742130 +5791502 +24616544 +24616546 +24616548 +24616550 +24616552 +24616558 +24616560 +24616562 +165912379 +165912380 +5791552 +165912381 +5709799 +5709801 +5709803 +5709805 +5709807 +5709809 +5709811 +5709813 +5709815 +5709817 +5709819 +5709821 +5775729 +5775731 +5775737 +5707000 +5775751 +5775753 +5775755 +5775757 +5775763 +5743056 +5743064 +5743066 +5711075 +5711077 +5711079 +5711081 +5711083 +5711085 +5711087 +5711089 +5711091 +5711093 +5711095 +5711097 +5711099 +5711101 +5711103 +5711105 +5711107 +5711109 +5711111 +5711113 +5711115 +5711117 +5711119 +5711121 +5711123 +5711125 +5711127 +5711129 +5711131 +5711133 +5711135 +5711137 +5711139 +5711141 +5711143 +5711145 +5711147 +5711149 +5711151 +5711153 +5711155 +5711157 +5711159 +5711161 +5711163 +5711165 +5711167 +5711169 +5711171 +5711173 +5711175 +5711177 +5711179 +5711633 +5711635 +5711637 +5711639 +5711641 +942090009 +5711643 +5711645 +5711647 +5711649 +5711651 +5711653 +5711655 +5711657 +5711659 +5711811 +5711813 +5711815 +5711817 +5711819 +5711821 +5711823 +5711825 +5711827 +5711829 +5711831 +5711833 +5711835 +5711837 +5711839 +5711841 +5711843 +5711845 +5711847 +5711849 +5711851 +5711853 +5711855 +5711857 +5711859 +5711861 +5711863 +5744632 +5711865 +5744634 +5711867 +5744636 +5711869 +5744638 +5711871 +5744640 +5711873 +5744642 +5711875 +5744644 +5711877 +5744646 +5711879 +5744648 +5711881 +5744650 +5711883 +5744652 +5711885 +5711887 +5711889 +5711891 +5711893 +5711895 +5711897 +5679129 +5711899 +5711901 +5711903 +5711905 +5711907 +5711909 +5711911 +5711913 +5711915 +5711917 +5711919 +5711921 +5711923 +5711925 +5711927 +5711929 +5711931 +5711933 +5711935 +5711937 +5711939 +5711941 +5711943 +5711945 +5711947 +5711949 +5711951 +5711953 +5711955 +5711957 +5711959 +5711961 +5711963 +5711965 +5711967 +5711969 +5711971 +5711973 +5711975 +5712367 +5712369 +5712371 +5712373 +5745142 +5712375 +5745144 +5712377 +5745146 +5712379 +5745148 +5712381 +5745150 +5712383 +5745152 +5712385 +5745154 +5712387 +5745156 +5712389 +5745158 +5712391 +5745160 +5712393 +5745162 +5712395 +5745164 +5712397 +5745166 +5712399 +5745168 +5712401 +5712403 +5745172 +5712405 +5745174 +5745176 +5712409 +5745178 +5712411 +5745180 +5712413 +5745182 +5712415 +5745184 +5712417 +5745186 +5712419 +5745188 +5712421 +5745190 +5745192 +5745194 +5745196 +5745198 +5745200 +5745202 +5745204 +5745206 +5745208 +5745210 +5745212 +5745214 +5745216 +5745218 +5745220 +5745222 +5745224 +5745226 +5745228 +5745230 +5745232 +5745234 +5745236 +5745238 +5745240 +5745242 +5745244 +5745246 +5745248 +5745250 +5745252 +5745254 +5745256 +5745258 +5745260 +5745262 +5745264 +5745266 +5745268 +5745270 +5745272 +5745274 +5745276 +5745278 +5745280 +5745282 +5745284 +5745286 +5745288 +5745290 +5745292 +5745294 +5745296 +5745298 +5712531 +5745300 +5712533 +5745302 +5712535 +5745304 +5712537 +5745306 +5745308 +5745310 +5745312 +5745314 +5745316 +5745318 +5745320 +5745322 +5745324 +5745326 +5745328 +5745330 +5745332 +5745334 +5745336 +5745338 +5745340 +5745342 +5745344 +5745346 +5745348 +5745350 +5745352 +5745354 +5745356 +5745612 +5745614 +5745616 +5745618 +5745620 +5745622 +5745624 +5712857 +5745626 +5712859 +5745628 +5712861 +5745630 +5712863 +5712865 +5745634 +5745636 +5712869 +5745638 +5712871 +5745640 +5712873 +5745642 +5712875 +5745644 +5712877 +5745646 +5712879 +5745648 +5745652 +5745654 +5745656 +5745658 +5745660 +5745662 +5745664 +5745666 +5745668 +5745670 +5745672 +5745676 +5745678 +5745680 +5745682 +5745684 +5745686 +5680181 +5680185 +5680187 +5680189 +5680191 +5680193 +5745904 +5745906 +5745910 +5745912 +5745914 +5745916 +5745918 +5745920 +5745922 +5745924 +5745926 +5745928 +5745930 +5745932 +5745934 +5745936 +5745938 +5745940 +5745942 +5745944 +5745948 +5745950 +5745952 +5745954 +5745956 +5745958 +5745960 +5745962 +5745964 +5745966 +5745968 +5745970 +5745972 +5745974 +5745976 +5745978 +5745980 +5745982 +5745984 +5745986 +5745988 +5745990 +5745992 +5745994 +5745996 +5745998 +5746000 +5746002 +5746004 +5746006 +5746008 +5746010 +5746012 +5746014 +5746016 +5746018 +5746020 +5746022 +5746024 +5746026 +5746028 +5746030 +5746032 +5746034 +5746036 +5746038 +5746040 +5746042 +5746044 +5746046 +5746048 +5746050 +5746052 +5746054 +5746056 +5746058 +5746060 +5746062 +5746064 +5746066 +5746068 +5746070 +5746072 +5746074 +5746076 +5746078 +5746080 +5746082 +5746084 +5746086 +5746088 +5778857 +5746090 +5746092 +5746094 +5746096 +5746098 +5778867 +5746100 +5778869 +5746102 +5778871 +5746104 +5778873 +5746106 +5778875 +5746108 +5778877 +5746110 +5778879 +5746112 +5778881 +5746114 +5778883 +5746116 +5778885 +5746118 +5778887 +5746120 +5778889 +5746122 +5778891 +5746124 +5778893 +5746126 +5778895 +5746128 +5778897 +5746130 +5778899 +5746132 +5778901 +5746134 +5778903 +5746136 +5778905 +5746138 +5778907 +5746140 +5778909 +5746142 +5778911 +5746144 +5778913 +5746146 +5778915 +5746148 +5778917 +5746150 +5778919 +5746152 +5778921 +5746154 +5778923 +5746156 +5778925 +5746158 +5778927 +5746160 +5778929 +5746162 +5778931 +5746164 +5778933 +5746166 +5778935 +5746168 +5778937 +5746170 +5778939 +5746172 +5778941 +5746174 +5778943 +5746176 +5778945 +5746178 +5778947 +5746180 +5778949 +5746182 +5778951 +5746184 +5778953 +5746186 +5778955 +5746188 +5778957 +5746190 +5778959 +5746192 +5778961 +5746194 +5778963 +5746196 +5778965 +5746198 +5778967 +5746200 +5778969 +5746202 +5778971 +5746204 +5778973 +5746206 +5778975 +5746208 +5778977 +5746210 +5778979 +5778981 +5778983 +5778985 +5778987 +5778989 +5778991 +5778993 +5778995 +5778997 +5779001 +5779003 +5779005 +5779007 +5779009 +5779011 +5779013 +5779015 +5779017 +5779019 +5779021 +5779023 +5779025 +5779027 +5779029 +5779031 +5779033 +5779035 +5779037 +5779039 +5779041 +5779043 +5779045 +5779047 +5714175 +5779219 +5779221 +5779223 +5779229 +5779231 +5779233 +5779235 +5779237 +5779239 +5779241 +5779243 +5779247 +5779249 +5779251 +5779253 +5779255 +5779257 +5746490 +5779259 +5746492 +5779261 +5746494 +5779263 +5746496 +5779265 +5746498 +5779267 +5746500 +5779269 +5746502 +5779271 +5746504 +5779273 +5746506 +5779275 +5746508 +5779277 +5746510 +5779279 +5746512 +5746514 +5779283 +5746516 +5779285 +5746518 +5779287 +5746520 +5779289 +5746522 +5779291 +5746524 +5779293 +5746526 +5779295 +5746528 +5779297 +5746530 +5779299 +5746532 +5779301 +5746534 +5779303 +5746536 +5779305 +5746538 +5779307 +5746540 +5779309 +5779311 +5746544 +5779313 +5746546 +5779315 +5746548 +5779317 +5746550 +5779319 +5746552 +5779321 +5746554 +5779323 +5746556 +5779325 +5746558 +5779327 +5746560 +5779329 +5746562 +5648259 +5746564 +5648255 +5746566 +5648263 +5746568 +5648265 +5746570 +5746572 +5746574 +5746576 +5746578 +5746580 +5746582 +5746584 +5746586 +5746588 +5746590 +5746592 +5746594 +5779363 +5746596 +5779365 +5746598 +5779367 +5746600 +5779369 +5779371 +5779373 +5779375 +5779377 +5779379 +5779381 +5779383 +5779385 +5779387 +5779389 +5779391 +5779393 +5779395 +5779397 +5779399 +5779401 +5779403 +5779405 +5779407 +5779409 +5779411 +5779413 +5779415 +5779417 +5779419 +5779421 +5779423 +5779425 +5779427 +5779429 +5746690 +5746692 +5746694 +5746696 +5746698 +5746700 +5746702 +5746704 +5746706 +5746708 +5746710 +5746712 +5746714 +5746716 +5746718 +5746720 +5746722 +5746724 +5746726 +5746728 +5746730 +5746732 +5746734 +5746736 +5746738 +5746740 +5746742 +5746744 +5746746 +5746748 +5746750 +5746752 +5746754 +5746756 +5746758 +5746760 +5746762 +5746764 +5746766 +5746768 +5746770 +5746772 +5746774 +5746776 +5746778 +5746780 +5746782 +5746784 +5746786 +5746788 +5746790 +5746792 +5746794 +5746796 +5746798 +5746800 +5746802 +5746804 +5746806 +5746808 +5746810 +5714043 +5746812 +5746814 +5714047 +5746816 +5714049 +5746818 +5746820 +5746822 +5746824 +5714057 +5746826 +5746828 +5714061 +5746830 +5714063 +5746832 +5714065 +5746834 +5714067 +5746836 +5714069 +5746838 +5714071 +5746840 +5714073 +5746842 +5714075 +5746844 +5714077 +5746846 +5714079 +5746848 +5714081 +5746850 +5714083 +5746852 +5714085 +5746854 +5714087 +5746856 +5714089 +5746858 +5714091 +5746860 +5746862 +5714095 +5746864 +5714097 +5746866 +5714099 +5746868 +5714101 +5746870 +5714103 +5746872 +5714105 +5746874 +5714107 +5746876 +5714109 +5746878 +5714111 +5746880 +5714113 +5746882 +5714115 +5746884 +5714117 +5746886 +5714119 +5746888 +5714121 +5746890 +5714123 +5746892 +5714125 +5746894 +5714127 +5746896 +5714129 +5746898 +5714131 +5746900 +5714133 +5746902 +5714135 +5746904 +5714137 +5746906 +5714139 +5746908 +5714141 +5746910 +5714143 +5746912 +5714145 +5746914 +5714147 +5746916 +5714149 +5746918 +5746920 +5714153 +5746922 +5714155 +5746924 +5714157 +5746926 +5714159 +5746928 +5714161 +5746930 +5779699 +5746932 +5714163 +5746934 +5714165 +5746936 +5714169 +5746938 +5714171 +5746940 +5714173 +5746942 +5714167 +5746944 +5714177 +5746946 +5714179 +5746948 +5714181 +5746950 +5714183 +5746952 +5714185 +5746954 +5714187 +5746956 +5714189 +5746958 +5746960 +5746962 +5747092 +5747094 +5648791 +5747096 +5648793 +5747098 +5648795 +5747100 +5648797 +5747102 +5648799 +5747104 +5648801 +5747106 +5648803 +5747108 +5648805 +5747110 +5747112 +5747114 +5747116 +5747118 +5747120 +5747122 +5747124 +5747126 +5747128 +5747130 +5747132 +5747134 +5648831 +5747136 +5648833 +5747138 +5747140 +5648837 +5747142 +5648839 +5747144 +5648841 +5747146 +5648843 +5747148 +5648845 +5747150 +5648847 +5747152 +5648849 +5747154 +5648851 +5747156 +5648853 +5747158 +5648855 +5747160 +5747162 +5747164 +5747166 +5747168 +5747170 +5747172 +5747174 +5747176 +5747178 +5747180 +5747182 +5779965 +5779967 +5779969 +5779971 +5779973 +5779975 +5779977 +5779979 +5779981 +5779983 +5779985 +5779987 +5779989 +5779991 +5779993 +5779995 +5780023 +5780025 +5780027 +5780029 +5780031 +5780033 +5780035 +5780037 +5780039 +5780041 +5780043 +5780045 +5780047 +5780049 +5780051 +5780053 +5780055 +5780057 +5780059 +5780061 +5780063 +5780065 +5780067 +5780069 +5780071 +5780073 +5780075 +5780077 +5780079 +5780081 +5780083 +5780085 +5780087 +5780089 +5780091 +5780093 +5780095 +5780097 +5780099 +5780101 +5747354 +5747356 +5747358 +5747360 +5747362 +5747364 +5747366 +5747368 +5747370 +5747372 +5747374 +5747376 +5747378 +5747380 +5747382 +5747384 +5747386 +5747388 +5747390 +5747392 +5747394 +5747396 +5747398 +5747400 +5747402 +5747404 +5747406 +5747408 +5747410 +5747412 +5747414 +5747416 +5747418 +5747420 +5747422 +5747424 +5747426 +5747428 +5747430 +5747432 +5747434 +5747436 +5747438 +5747440 +5747442 +5747444 +5747446 +5747448 +5747450 +5747452 +5747454 +5747456 +5747458 +5747460 +5747462 +5747464 +5747466 +5747468 +5747470 +5747472 +5747474 +5747476 +5747478 +5747480 +5747482 +5747484 +5747486 +5747488 +5747490 +5747492 +5747494 +5747496 +5747498 +5747500 +5747502 +5747504 +5747506 +5747508 +5747510 +5747512 +5747514 +5747516 +5747518 +5747520 +5747522 +5747524 +5747526 +5747528 +5747530 +5747532 +5747534 +5747536 +5747538 +5747540 +5747542 +5747546 +5747548 +5747550 +5747552 +5714785 +5747554 +5747556 +5747558 +5747560 +5714793 +5747562 +5747564 +5714797 +5747566 +5714799 +5747568 +5714801 +5747570 +5747572 +5714805 +5747574 +5714807 +5747576 +5714809 +5747578 +5780347 +5747580 +5780349 +5747582 +5780351 +5747584 +5780353 +5747586 +5780355 +5747588 +5714813 +5747590 +5780359 +5747592 +5780361 +5747594 +5780363 +5747596 +5780365 +5747598 +5780367 +5747600 +5780369 +5747602 +5780371 +5747604 +5780373 +5747606 +5780375 +5747608 +5780377 +5747610 +5780379 +5747612 +5780381 +5747614 +5780383 +5747616 +5780385 +5747618 +5780387 +5747620 +5780389 +5747622 +5780391 +5747624 +5780393 +5747626 +5780395 +5747628 +5780397 +5747630 +5780399 +5747632 +5780401 +5747634 +5780403 +5747636 +5780405 +5747638 +5780407 +5747640 +5780409 +5747642 +5780411 +5747644 +5780413 +5747646 +5780415 +5747648 +5780417 +5747650 +5780419 +5747652 +5714879 +5747654 +5714883 +5747656 +5714885 +5747658 +5714891 +5747660 +5714889 +5747662 +5714887 +5747664 +5714897 +5747666 +5714893 +5747668 +5714895 +5747670 +5747672 +5747674 +5747676 +5747678 +5747680 +5747682 +5747684 +5747686 +5747688 +5747690 +5747692 +5747694 +5747696 +5747698 +5747700 +5747702 +5747704 +5747706 +5747708 +5747710 +5747712 +5747716 +5747718 +5747720 +5747722 +5747724 +5747728 +5747730 +5747732 +5747734 +5747736 +5747738 +5747740 +5747742 +5747744 +5747746 +5747748 +5747750 +5747752 +5747754 +5747756 +5747758 +5747760 +5747762 +5747764 +5747766 +5747768 +5747770 +5747772 +5747774 +5747776 +5747778 +5747780 +5747782 +5747784 +5747786 +5747788 +5747790 +5747792 +5747794 +5747796 +5747798 +5747800 +5747802 +5747804 +5747806 +5747808 +5747810 +5747812 +5747814 +5747816 +5747818 +5747820 +5747822 +5747824 +5747828 +5747830 +5747832 +5747834 +5747836 +5747838 +5747840 +5747842 +5747844 +5747846 +5747848 +5747850 +5747852 +5747854 +5747856 +5747858 +5747860 +5747862 +5747864 +5747866 +5747868 +5747870 +5715103 +5747872 +5715105 +5747874 +5715107 +5747876 +5715109 +5747878 +5715111 +5747880 +5715113 +5747882 +5715115 +5747884 +5715117 +5747886 +5715119 +5747888 +5715121 +5747890 +5715123 +5747892 +5747894 +5747896 +5747898 +5747900 +5747902 +5747904 +5747906 +5747908 +5747910 +5747912 +5747914 +5747916 +5747918 +5747920 +5747922 +5747924 +5747926 +5747930 +5747932 +5747934 +5747936 +5747938 +5747940 +5747942 +5747944 +5747946 +5747948 +5747950 +5747952 +5747954 +5747956 +5747958 +5747960 +5747962 +5747964 +5747966 +5747968 +5747970 +5747972 +5747974 +5747976 +5747978 +5747980 +5747982 +5747984 +5747986 +5747988 +5747990 +5747992 +5747994 +5747996 +5747998 +5748000 +5748002 +5748004 +5748006 +5748008 +5748010 +5748012 +5748014 +5748016 +5748018 +5748020 +5748022 +5748024 +5748026 +5748028 +5748030 +5748032 +5748034 +5748036 +5748038 +5748040 +5748042 +5748044 +5748046 +5748048 +5748050 +5748052 +5748054 +5748056 +5748058 +5748060 +5748062 +5748064 +5748066 +5748068 +5748070 +5748072 +5748074 +5748076 +5748078 +5748080 +5748082 +5748084 +5748086 +5748088 +5748090 +5748092 +5748094 +5748096 +5748098 +5748100 +5748102 +5748104 +5748106 +5748108 +5748110 +5748112 +5748114 +5748116 +5748118 +5748120 +5748122 +5748124 +5748126 +5715441 +5715443 +5715467 +5682745 +5682749 +5682751 +5682753 +5682755 +5682757 +5682759 +5682761 +5682763 +5682765 +5682767 +5682769 +5682771 +5781095 +5781097 +5781099 +5781101 +5781103 +5781105 +5781107 +5781109 +5781111 +5781113 +5748346 +5781115 +5748348 +5781117 +5748350 +5781119 +5748352 +5781121 +5748354 +5781123 +5748356 +5781125 +5748358 +5781127 +5748360 +5781129 +5748362 +5781131 +5748364 +5781133 +5748366 +5781135 +5748368 +5781137 +5748370 +5781139 +5748372 +5781141 +5748374 +5781143 +5748376 +5781145 +5748378 +5781147 +5748380 +5781149 +5748382 +5781151 +5748384 +5781153 +5748386 +5781155 +5748388 +5781157 +5748390 +5781159 +5748392 +5781161 +5748394 +5781163 +5748396 +5781165 +5748398 +5781167 +5748400 +5781169 +5748402 +5781171 +5748404 +5781173 +5748406 +5781175 +5748408 +5781177 +5748410 +5781179 +5748412 +5781181 +5748414 +5781183 +5748416 +5781185 +5748418 +5781187 +5748420 +5781189 +5748422 +5781191 +5748424 +5781193 +5748426 +5781195 +5748428 +5781197 +5748430 +5781199 +5748432 +5781201 +5781203 +5781205 +5781207 +5781209 +5781211 +5781213 +5781215 +5781217 +5781219 +5781221 +5781223 +5781225 +5781227 +5781229 +5781231 +5781233 +5781235 +5781237 +5781239 +5781241 +5781243 +5781245 +5781247 +5781249 +5781251 +5781253 +5781255 +5781257 +5781259 +5781261 +5781263 +5781265 +5781267 +5781269 +5781271 +5781273 +5781275 +5781277 +5781279 +5781281 +5781283 +5781285 +5781287 +5781289 +5781291 +5781293 +5781295 +5781297 +5781299 +5781301 +5781303 +5781305 +5781307 +5781309 +5781311 +5781313 +5781315 +5781317 +5781319 +5781323 +5781325 +5781327 +5781329 +5781331 +5781333 +5781335 +5781337 +5781339 +5781341 +5781343 +5781345 +5781347 +5781349 +5781351 +5781353 +5781355 +5781357 +5781359 +5781361 +5781363 +5781365 +5781367 +5781369 +5781371 +5781373 +5781375 +5781377 +5781379 +5781381 +5781383 +5781385 +5781387 +5781389 +5781391 +5781393 +5781395 +5781397 +5781399 +5781401 +5781403 +5781405 +5781407 +5748640 +5781409 +5748642 +5781411 +5748644 +5781413 +5748646 +5781415 +5748648 +5781417 +5748650 +5781419 +5748652 +5781421 +5781423 +5781425 +5781427 +5781429 +5781431 +5781433 +5781435 +5781437 +5781439 +5781441 +5781443 +5781445 +5781447 +5781449 +5781451 +5781453 +5781455 +5781457 +5683153 +5781459 +5683155 +5781461 +5683157 +5781463 +5683159 +5781465 +5683161 +5781467 +5781469 +5781471 +5781473 +5781475 +5781477 +5781479 +5781481 +5781483 +5781485 +5781487 +5781489 +5781699 +5781703 +5781709 +5781711 +5781713 +5781715 +5781717 +5781719 +5781721 +5781723 +5781725 +5781727 +5781729 +5781731 +5781733 +5781735 +5781737 +5781739 +5781741 +5781743 +5781745 +5781747 +5781749 +5781751 +5781753 +5781755 +5781757 +5781759 +5781761 +5781763 +5781765 +5781767 +5781769 +5781771 +5781773 +5781775 +5781777 +5781779 +5781781 +5781783 +5781785 +5781787 +5781789 +5781791 +5781793 +5781795 +5781797 +5781799 +5781801 +5781803 +5781805 +5781807 +5781809 +5781811 +5781813 +5781815 +5781817 +5781819 +5781821 +5781823 +5781825 +5781827 +5781829 +5781831 +5781833 +5781835 +5781837 +5781839 +5781841 +5781843 +5781845 +5781847 +5781849 +5781851 +5781853 +5781855 +5781857 +5781859 +5781861 +5781863 +5781865 +5781867 +5781869 +5781871 +5781873 +5781875 +5781877 +5781879 +5781881 +5781883 +5781885 +5781887 +5781889 +5781891 +5781893 +5781895 +5781897 +5781899 +5781901 +5781903 +5781905 +5781907 +5781909 +5781911 +5781913 +5781915 +5781917 +5781919 +5781921 +5781923 +5781925 +5781927 +5781929 +5781931 +5781933 +5781935 +5781937 +5781939 +5781941 +5781943 +5781945 +5781947 +5781949 +5781951 +5781953 +5781955 +5781957 +5683653 +5781959 +5781961 +5781963 +5683659 +5781965 +5766889 +5716681 +5716683 +5721317 +5714811 +5721327 +5714819 +5714821 +5714823 +5714825 +5714827 +5714829 +5714831 +5714833 +5714835 +5714837 +5714839 +5714841 +5714843 +5714845 +5714849 +5714851 +5651407 +5651409 +5651411 +5651413 +5651417 +5651419 +5651421 +5651423 +5714855 +5651425 +5651427 +5714857 +5714859 +5714861 +5714863 +5714865 +5714867 +5714869 +5714871 +5714873 +5714875 +5714877 +5684311 +5684313 +5684315 +5684317 +5684319 +5684321 +5684323 +5714881 +5684325 +5684327 +5684329 +5684331 +5684333 +5684335 +5782719 +5717266 +5717268 +5717270 +5717272 +5717274 +5717276 +5717278 +5717280 +5717282 +5717284 +5717286 +5717288 +5717290 +5717292 +5717294 +5717296 +5717298 +5717300 +5717302 +5717304 +5717306 +5717308 +5717310 +5717312 +5717314 +5717316 +5717318 +5717320 +5717322 +5717324 +5717326 +5717328 +5717330 +5717332 +5717334 +5717336 +5717338 +5717340 +5717342 +5717344 +5717346 +5717348 +5717350 +5717352 +5717354 +5717356 +5717358 +5717360 +5717362 +5717366 +5717368 +5717370 +5717372 +5651989 +5750396 +5750406 +5750408 +5750410 +5750412 +5750414 +5750416 +5750418 +5750420 +5750422 +5750424 +5750426 +5750430 +5684933 +5684935 +5684941 +5684945 +5684947 +5684949 +5684951 +5684953 +5684955 +5684957 +5684959 +5684961 +5684963 +5684965 +5684967 +5684969 +5684971 +5684973 +5684975 +5684977 +5684979 +5684981 +5684983 +5717764 +5717766 +5717768 +5717770 +5717772 +5717774 +5717776 +5717778 +5652493 +5685731 +5685733 +5685735 +5685737 +5685739 +5685741 +5685743 +5685745 +5685747 +5685749 +9355766 +5685751 +5685753 +5685757 +9355824 +9355838 +9355854 +9355856 +9355902 +9355904 +9355906 +9355910 +9355942 +9355954 +9355964 +5718718 +5718720 +5718722 +5718724 +5718726 +9355976 +5718728 +5718730 +5718732 +5718734 +5718736 +5718738 +5718740 +5718742 +5718744 +5718746 +5718748 +5718750 +9356000 +5718752 +5718754 +5718756 +5718758 +5718760 +5718762 +9356012 +5718764 +9356014 +5718766 +5718768 +9356018 +5718770 +9356020 +5718772 +5718774 +5718776 +5718778 +9356028 +5718780 +9356030 +5718782 +9356032 +5718784 +5718786 +5718788 +5718790 +9356040 +5718792 +9356042 +5718794 +5718796 +5718798 +5718800 +9356050 +5718802 +5718804 +9356056 +5686219 +9356064 +9356066 +9356076 +9356078 +9356088 +9356092 +9356094 +9356112 +9356116 +9356118 +5784413 +5784415 +5784417 +5784419 +9356132 +5784421 +9356134 +5784423 +9356136 +5784425 +5784427 +5784429 +9356142 +5784431 +5784433 +9356146 +5784435 +9356148 +5784437 +5784439 +9356152 +5784441 +5784443 +5784445 +5784447 +5784449 +5784451 +5784453 +5784455 +5784457 +5784459 +5784461 +5784463 +5784465 +5784467 +5784469 +5784471 +9356184 +5784473 +5784475 +5784477 +5784479 +5784481 +5784483 +5784485 +5784487 +5784489 +5784491 +5784493 +5784495 +5718960 +5784497 +5718962 +5784499 +5718964 +5784501 +5718966 +5784503 +5718968 +5784505 +5718970 +5784507 +5718972 +5784509 +5718974 +5784511 +5718976 +5784513 +5718978 +5784515 +5718980 +5784517 +5718982 +5784519 +5718984 +5784521 +5718986 +5784523 +5686215 +5784525 +5686221 +5784527 +5686223 +5784529 +5686225 +5784531 +5686227 +5784533 +5686229 +5784535 +5686231 +5784537 +5686233 +5784539 +5686235 +5784541 +5784543 +5784545 +5784547 +5784549 +5784551 +5784553 +5784555 +5784557 +5784559 +5784561 +5784563 +5784565 +5784567 +5784569 +5784571 +5784573 +5784575 +5784577 +5784579 +5784581 +5784583 +5784585 +5784587 +5784589 +5784591 +5784593 +5719092 +5719094 +5719096 +5719100 +5719106 +5719110 +5719112 +5719118 +5719120 +5719122 +5686355 +5719124 +5719130 +5686363 +5719132 +5686365 +5719134 +5719138 +5719140 +5719142 +5719144 +5653608 +5719146 +5653610 +5719148 +5653612 +5719150 +5653614 +5653616 +5719152 +5653618 +5719154 +5719156 +5653620 +5719158 +5653622 +5719160 +5653624 +5653626 +5719162 +5653628 +5719164 +5719166 +5653630 +5719168 +5653632 +5719170 +5653634 +5719172 +5653636 +5719174 +5653638 +5719176 +5653640 +5719178 +5653642 +5719180 +5653644 +5719182 +5653646 +5653648 +5719184 +5653650 +5653652 +5653654 +5653656 +5653658 +5653660 +5653662 +5653664 +5653666 +5653668 +5653670 +5653672 +5653674 +5653676 +5653678 +5653680 +5653682 +5653684 +9356530 +9356532 +9356562 +5784859 +5784861 +9356574 +5784863 +9356576 +5784865 +9356578 +5784867 +5784869 +5784871 +9356584 +5784873 +5784875 +9356588 +5784877 +5784879 +5784881 +9356594 +5784883 +5784885 +5784887 +5784889 +5784891 +5784893 +9356618 +9356672 +9356674 +9356676 +9356684 +9356686 +9356692 +9356700 +9356714 +9356720 +9356722 +9356724 +9356726 +9356730 +9356732 +9356738 +5719510 +5719512 +5719514 +5719516 +5719518 +5719520 +5719522 +5719524 +5719526 +5719528 +5719530 +5719532 +5719534 +5719536 +5654000 +5654002 +5719540 +5654004 +5719542 +5654006 +5719544 +5654008 +5654010 +5719546 +5654012 +5719548 +5719550 +5654014 +5719552 +5654016 +5719554 +5654018 +5654020 +5719556 +5719558 +5654022 +5719560 +5654024 +5719562 +5654026 +5719564 +5654028 +5719566 +5654030 +5719568 +5654032 +5719570 +5654034 +5719572 +5654036 +5719574 +5654038 +5719576 +5654040 +5719578 +5654042 +5654044 +5654046 +5654048 +9356834 +5654050 +5654052 +5654054 +5654056 +5654058 +5654060 +5654062 +5785141 +5785143 +5785145 +5785147 +5785149 +5785151 +5785153 +5785155 +5785157 +5785159 +5785161 +5785163 +5785165 +5785167 +5785169 +5785171 +5785173 +5785175 +5785177 +5785179 +5785181 +5785183 +5785185 +5785187 +5785189 +5785191 +5785193 +5785195 +5785197 +5785199 +5785201 +5785203 +5785205 +5785207 +5785209 +5785211 +5785213 +5785215 +5785217 +5785219 +5785221 +5785223 +5785225 +5785227 +5785229 +5785231 +5785233 +5785235 +5785237 +5785239 +5785241 +5785243 +5785245 +5785247 +5785249 +5785251 +5785253 +5785255 +9356972 +9356974 +9356976 +5785273 +5785275 +5785277 +5785279 +5785281 +5785283 +5785285 +5785287 +9357000 +5785289 +9357002 +5785291 +9357004 +5785293 +5785295 +9357008 +5785297 +5785299 +9357016 +9357018 +9357020 +5785309 +9357022 +9357024 +5785313 +9357026 +5785315 +9357028 +5785317 +5785319 +5785321 +9357034 +5785323 +9357036 +5785325 +9357038 +5785327 +9357040 +5785329 +9357042 +5785331 +5785333 +5785335 +5785337 +5785339 +5785341 +5785347 +5785349 +5785351 +5785353 +5785355 +5785357 +5785359 +5785361 +5785363 +5785365 +5785367 +5785369 +5785371 +5785373 +5785375 +5785377 +5785379 +5785381 +5785383 +5785385 +5785387 +5785389 +5785391 +5785393 +5654322 +5785395 +5654324 +5785397 +5654326 +5785399 +5654328 +5785401 +5654330 +5785403 +5654332 +5785405 +5654334 +5785407 +5654336 +5785409 +5654338 +5785411 +5654340 +5785413 +5654342 +5785415 +5654344 +5785417 +5654346 +5785419 +5654348 +5785421 +5654350 +5785423 +5654352 +5785425 +5654354 +5785427 +5654356 +5785429 +5654358 +5785431 +5654360 +5785433 +5654362 +5785435 +5654364 +5785437 +5654366 +5785439 +5719904 +5785441 +5719906 +5785443 +5719908 +5785445 +5719910 +5785447 +5719912 +5785449 +5719914 +5785451 +5719916 +5785453 +5719918 +5785455 +5719920 +5785457 +5719922 +5785459 +5719924 +5785461 +5719926 +5785463 +5719928 +5785465 +5719930 +5785467 +5719932 +5785469 +5719934 +5785471 +5719936 +5785473 +5719938 +5785475 +5719940 +5785477 +5719942 +5785479 +5719944 +5785481 +5719946 +5785483 +5719948 +5785485 +5785487 +5785489 +5785491 +5785493 +5785495 +5785497 +5785499 +5785501 +5785503 +5785505 +5785507 +5785509 +5785511 +5785513 +5654442 +5785515 +5654444 +5785517 +5654446 +5785519 +5654448 +5785521 +5785523 +5785525 +5785527 +5785529 +5785531 +5785533 +5785535 +5785537 +5785539 +5785541 +5785543 +5785545 +5785547 +5785549 +5785551 +5785553 +5785555 +5785557 +5785559 +5785561 +5785563 +5785565 +5785567 +5785569 +5785571 +5785573 +5785575 +5785577 +5785579 +5785581 +5785583 +5785585 +5785587 +5785589 +5785591 +5785593 +5785595 +5785597 +5785599 +5785601 +5785603 +5785605 +5785607 +5785609 +5785611 +5785613 +5785615 +5785617 +5785619 +5785621 +5785623 +5785625 +5785627 +5785629 +5785631 +5785633 +5785635 +5785637 +5785639 +5785641 +5785643 +5785645 +5785647 +9357360 +9357364 +9357368 +9357370 +5752896 +5752898 +9357392 +5654634 +5654636 +5654638 +5654640 +5654642 +5654644 +5654646 +5654648 +5654650 +5654652 +5654654 +5654656 +5654658 +5654660 +5654662 +5654664 +5654666 +5654668 +5720206 +5654670 +5654672 +5720210 +5654674 +5720212 +5654676 +5720214 +5654678 +5720216 +5654680 +5720218 +5654682 +5654684 +5654686 +5654688 +5654690 +5654692 +5654694 +5654696 +5654698 +5654700 +5654702 +5654704 +5654706 +5654708 +5654710 +5654712 +5654714 +5654716 +5654718 +5654720 +5654722 +5654724 +5654726 +5654728 +5654730 +5654732 +5654734 +5654736 +5654738 +5654740 +9357540 +9357542 +9357544 +9357546 +9357548 +5687540 +5687542 +5687544 +5687546 +5687548 +5687550 +5687554 +5785893 +5785895 +5785897 +5785899 +5785901 +5785903 +5785905 +5785907 +5785909 +5785913 +5785915 +5785919 +5785921 +5785923 +5785925 +5785927 +5785929 +5785931 +5785933 +5785935 +5785937 +5785939 +5785941 +5785943 +5785945 +5785947 +5785949 +5785951 +5785953 +5785955 +5785957 +5785959 +5785961 +5785963 +5785965 +5785967 +5785969 +5785971 +5785973 +5785975 +5785977 +5785979 +5785981 +5753214 +5785983 +5785985 +5785987 +5785989 +5785991 +5785993 +5785995 +5785997 +5785999 +5786001 +5786003 +5786005 +5786007 +5786009 +5786011 +5786013 +5786015 +5786017 +5786019 +5786021 +5786023 +5786025 +5786027 +5786029 +5786031 +5786033 +5786035 +5786037 +5786039 +5786041 +5786043 +5786045 +5786047 +5786049 +5786051 +5786053 +5786055 +5786057 +5786059 +5786061 +5786063 +5786065 +5786067 +5786069 +5786071 +5786073 +5786075 +5786077 +5786079 +5786081 +5786083 +5786085 +5786087 +5786089 +5786091 +5786093 +5786095 +5786097 +5786099 +5786101 +5786103 +5786105 +5786107 +5786109 +5786111 +5786113 +5786115 +5786117 +5786119 +5786121 +5786123 +5786125 +5786127 +5786129 +5786131 +5786133 +5786135 +5753368 +5786137 +5753370 +5786139 +5753372 +5786141 +5753374 +5786143 +5753376 +5786145 +5753378 +5786147 +5753380 +5786149 +5753382 +5786151 +5753384 +5753386 +5753388 +5753390 +5753392 +5753394 +5753396 +5753398 +5753400 +5753402 +5753404 +5753406 +5753408 +5753410 +5753412 +5753414 +5753416 +5753418 +5753420 +5753422 +5753424 +5753426 +5753428 +5753430 +5753432 +5753434 +5753436 +5655132 +5753438 +5655134 +5753440 +5655136 +5753442 +5655138 +5753444 +5655140 +5655142 +5753446 +5753448 +5655144 +5753450 +5655146 +5753452 +5655148 +5753454 +5655150 +5753456 +5655152 +5753458 +5655154 +5655156 +5753460 +5753462 +5655158 +5753464 +5655160 +5753466 +5655162 +5753468 +5753470 +5753472 +5753474 +5753476 +5753478 +5753480 +5753482 +5753484 +5753486 +5753488 +5753490 +5753492 +5753494 +5753496 +5753498 +5753500 +5753502 +5753504 +5753506 +5753508 +5753510 +5753512 +5753514 +5753516 +5753518 +5753520 +5753522 +5753524 +5753526 +5753528 +5753530 +5753532 +5753534 +5753536 +5753538 +5753540 +5753542 +5753544 +5753546 +5753548 +5753550 +5753552 +5753554 +5753556 +5753558 +5753560 +5753562 +5753564 +5753566 +5753568 +5753570 +5753572 +5753574 +5753576 +5753578 +5688042 +5753580 +5753582 +5753584 +5753586 +5688050 +5753588 +5688052 +5753590 +5753592 +5753594 +5753596 +5753598 +5753600 +5753602 +5753604 +5753606 +5753608 +5753610 +5753612 +5753614 +5753616 +5753618 +5753620 +5753622 +5753624 +5753626 +5753628 +5753630 +5753632 +5753634 +5753636 +5753638 +5753640 +5753642 +5753644 +5753646 +5753648 +5753650 +5753652 +5753654 +5753656 +5753658 +5753660 +5753662 +5753664 +5753666 +5753670 +5753672 +5753674 +5753676 +5753678 +5753680 +5753682 +5753684 +5753688 +5753690 +5753692 +5753694 +5753950 +5753952 +5753954 +5753956 +5753958 +5753960 +5753962 +5753964 +5753966 +5753968 +5753970 +5753972 +5753974 +5753976 +5753978 +5753980 +5753982 +5753984 +5753986 +5753988 +5753990 +5753992 +5753994 +5753996 +5753998 +5754000 +5754002 +5754004 +5754006 +5754008 +5754010 +5754012 +5754014 +5754018 +5754020 +5754022 +5754024 +5754026 +5754028 +5754030 +5754032 +5754034 +5754036 +5754038 +5754040 +5754042 +5754044 +5754046 +5754048 +5754050 +5754052 +5754054 +5754056 +5754058 +5754060 +5754062 +5754064 +5754066 +5754068 +5754072 +5754074 +5721307 +5754076 +5721309 +5754078 +5721311 +5754080 +5721313 +5754082 +5721315 +5754084 +5786853 +5754086 +5721319 +5754088 +5721321 +5754090 +5786859 +5754092 +5721323 +5754094 +5721325 +5754096 +5721329 +5754098 +5721331 +5754100 +5721333 +5754102 +5721335 +5754104 +5721337 +5754106 +5721339 +5754108 +5721341 +5754110 +5721343 +5754112 +5721345 +5754114 +5721347 +5754116 +5721349 +5754118 +5754120 +5721353 +5721355 +5754124 +5721357 +5754126 +5721359 +5754128 +5721361 +5754130 +5721363 +5754132 +5721365 +5754134 +5721367 +5754136 +5721369 +5754138 +5721371 +5754140 +5721373 +5754142 +5721375 +5754144 +5721377 +5754146 +5721379 +5754148 +5721381 +5754150 +5721383 +5754152 +5721385 +5754154 +5721387 +5754156 +5721389 +5754158 +5721391 +5754160 +5721393 +5754162 +5721395 +5754164 +5721397 +5754166 +5721399 +5754168 +5721401 +5754170 +5721403 +5754172 +5721405 +5754174 +5721407 +5754176 +5721409 +5754178 +5721411 +5754180 +5721413 +5754182 +5721415 +5754184 +5721417 +5754186 +5721419 +5754188 +5721421 +5754190 +5721423 +5754192 +5721425 +5754194 +5721427 +5754196 +5721429 +5754198 +5721431 +5754200 +5721433 +5754202 +5721435 +5754204 +5721437 +5754206 +5721439 +5754208 +5721441 +5754210 +5721443 +5754212 +5721445 +5754214 +5721447 +5754216 +5721449 +5754218 +5721451 +5754220 +5721453 +5754222 +5721455 +5754224 +5721457 +5754226 +5721459 +5754228 +5721461 +5754230 +5721463 +5754232 +5721465 +5754234 +5721467 +5721469 +5721471 +5721473 +5721475 +5721477 +5721479 +5721481 +5721483 +5721485 +5721487 +5721489 +5721491 +5721493 +5721495 +5721497 +5721499 +5721501 +5721505 +5721507 +5721509 +5721511 +5721513 +5721515 +5721517 +5721519 +5721521 +5721523 +5721525 +5721527 +5721529 +5721531 +5721533 +5721535 +5721537 +5721539 +5721541 +5721543 +5721545 +5721547 +5721549 +5721551 +5721553 +5721555 +5721557 +5721559 +5721561 +5721563 +5721565 +5721567 +5721569 +5721571 +5721573 +5721575 +5721577 +5721579 +5754384 +5754386 +5754388 +5754390 +5754392 +5656242 +5656244 +5656246 +5656248 +5656250 +5656252 +5656254 +5656256 +5656258 +5656260 +5656262 +5656264 +5656266 +5656268 +5656270 +5656272 +5656274 +5656276 +5656278 +5656280 +5656282 +5656284 +5656286 +5656288 +5656290 +5656292 +5656294 +5656296 +5656298 +5656300 +5656302 +5656304 +5656306 +5656308 +5656310 +5656312 +5656314 +5656316 +5656318 +5656320 +5656322 +5656324 +5656326 +5656328 +5656330 +5656332 +5656334 +5656336 +5656338 +5656340 +5656342 +5656344 +5656346 +5656348 +5656350 +5656352 +5656354 +5721895 +5656360 +5721897 +5656362 +5721899 +5656364 +5721901 +5656366 +5721903 +5656368 +5656370 +5721907 +5656372 +5721909 +5656374 +5721911 +5656376 +5721913 +5656378 +5721915 +5656380 +5721917 +5656382 +5721919 +5656384 +5721921 +5656386 +5721923 +5656388 +5721925 +5656390 +5656392 +5721929 +5656394 +5721931 +5656396 +5721933 +5656398 +5721935 +5656400 +5721937 +5656402 +5721939 +5656404 +5721941 +5656406 +5721943 +5656408 +5721945 +5656410 +5721947 +5656412 +5721949 +5656414 +5721951 +5656416 +5721953 +5656418 +5721955 +5656420 +5721957 +5656422 +5721959 +5656424 +5721961 +5656426 +5721963 +5656428 +5721965 +5656430 +5721967 +5656432 +5721969 +5656434 +5721971 +5656436 +5721973 +5656438 +5721975 +5656440 +5721977 +5656442 +5721979 +5656444 +5721981 +5656446 +5721983 +5656448 +5721985 +5656450 +5721987 +5656452 +5721989 +5656454 +5721991 +5656456 +5721993 +5656458 +5721995 +5656460 +5721997 +5656462 +5721999 +5656464 +5656466 +5656468 +5656470 +5656472 +5656474 +5656476 +5656478 +5656480 +5656482 +5656484 +5656486 +5656488 +5656490 +5656492 +5656494 +5656496 +5656498 +5656500 +5656502 +5656504 +5656506 +5656508 +5656510 +5656512 +5656514 +5656516 +5656518 +5656520 +5656522 +5656524 +5656526 +5656528 +5656530 +5656532 +5656534 +5656536 +5656538 +5656540 +5656542 +5656544 +5656546 +5656548 +5656550 +5656552 +5722119 +5722121 +5722123 +5722125 +5722127 +5722129 +5722131 +5722133 +5722135 +5722137 +5722139 +5722141 +5722143 +5722145 +5722147 +5722149 +5722151 +5722153 +5722155 +5722157 +5722159 +5722161 +5722163 +5722165 +5722167 +5722169 +5722171 +5722173 +5722175 +5722177 +5722179 +5722181 +5722183 +5722185 +5722187 +5722189 +5722191 +5722193 +5722195 +5722197 +5722199 +5722201 +5722203 +5722205 +5722207 +5722209 +5722211 +5722213 +5722215 +5722217 +5722219 +5722221 +5722223 +5722225 +5722227 +5722229 +5722231 +5722233 +5722235 +5722237 +5722239 +5722241 +5722243 +5656708 +5722245 +5656710 +5722247 +5656712 +5722249 +5656714 +5722251 +5656716 +5722253 +5656718 +5722255 +5656720 +5722257 +5656722 +5722259 +5656724 +5722261 +5656726 +5722263 +5656728 +5722265 +5656730 +5722267 +5656732 +5722269 +5656734 +5722271 +5656736 +5722273 +5656738 +5722275 +5656740 +5722277 +5656742 +5722279 +5656744 +5722281 +5656746 +5722283 +5656748 +5722285 +5656750 +5722287 +5656752 +5722289 +5656754 +5722291 +5656756 +5722293 +5656758 +5722295 +5656760 +5722297 +5656762 +5722299 +5656764 +5722301 +5656766 +5722303 +5656768 +5722305 +5656770 +5722307 +5656772 +5722309 +5656774 +5722311 +5656776 +5722313 +5656778 +5722315 +5656780 +5722317 +5656782 +5722319 +5656784 +5722321 +5656786 +5722323 +5656788 +5722325 +5656790 +5722327 +5656792 +5722329 +5656794 +5722331 +5656796 +5722333 +5656798 +5722335 +5656800 +5722337 +5656802 +5722339 +5656804 +5722341 +5656806 +5722343 +5656808 +5722345 +5656810 +5722347 +5656812 +5722349 +5656814 +5722351 +5656816 +5722353 +5656818 +5722355 +5656820 +5722357 +5656822 +5722359 +5656824 +5722361 +5656826 +5722363 +5656828 +5722365 +5722367 +5722369 +5722371 +5722373 +5722375 +5722377 +5722379 +5722381 +5722383 +5722385 +5722387 +5755204 +5689856 +5689858 +5689864 +5689868 +5689870 +5689872 +5689874 +5689876 +5689880 +5689882 +5689884 +5689886 +5689888 +5689890 +5689892 +5689894 +5689896 +5689900 +5722779 +5722781 +5722783 +5722785 +5722787 +5722789 +5722791 +5722793 +5722795 +5722797 +5722799 +5722801 +5722803 +5722805 +5722807 +5722809 +5722811 +5722813 +5722815 +5722817 +5722819 +5722821 +5722823 +5722825 +5722827 +5722829 +5722831 +5722833 +5722835 +5722837 +5722839 +5722841 +5722843 +5722845 +5722847 +5722849 +5722851 +5722853 +5722855 +5722857 +5722859 +5722861 +5722863 +5722865 +5722867 +5722869 +5722871 +5722873 +5722875 +5722877 +5722879 +5722881 +5722883 +5722885 +5722887 +5722889 +5722891 +5722893 +5722895 +5722897 +5722899 +5722901 +5722903 +5722905 +5722907 +5722909 +5722911 +5722913 +5722915 +5722917 +5722919 +5722921 +5690186 +5690192 +5690194 +5690196 +5690200 +5690202 +5690204 +5690206 +5690208 +5788804 +5788806 +5788808 +5788810 +5788812 +5788814 +5788816 +5788818 +5788820 +5788822 +5788824 +5788826 +5788828 +5788830 +5788832 +5788834 +5788836 +5788838 +5788840 +5788842 +5788844 +5788846 +5788848 +5788850 +5788852 +5788854 +5788856 +5788858 +5788860 +5788862 +5788864 +5788866 +5788868 +5788870 +5788872 +5788874 +5788876 +5788878 +5788880 +5788882 +5788884 +5788886 +5788888 +5788890 +5788892 +5788894 +5788896 +5788898 +5788900 +5788902 +5788904 +5788906 +5788908 +5788910 +5788912 +5788914 +5788916 +5788918 +5788920 +5788922 +5788924 +5788926 +5756158 +5788928 +5756160 +5788930 +5756162 +5788932 +5756164 +5788934 +5756166 +5788936 +5756168 +5788938 +5756170 +5788940 +5756172 +5788942 +5756174 +5788944 +5756176 +5788946 +5756178 +5788948 +5756180 +5788950 +5756182 +5788952 +5756184 +5788954 +5756186 +5788956 +5756188 +5788958 +5756190 +5788960 +5756192 +5788962 +5756194 +5788964 +5756196 +5788966 +5756198 +5788968 +5756200 +5788970 +5756202 +5788972 +5756204 +5788974 +5756206 +5788976 +5756208 +5788978 +5756210 +5788980 +5756212 +5788982 +5756214 +5788984 +5756216 +5788986 +5756218 +5788988 +5756220 +5788990 +5756222 +5788992 +5756224 +5788994 +5756226 +5788996 +5756228 +5788998 +5756230 +5789000 +5756232 +5789002 +5756234 +5789004 +5756236 +5789006 +5756238 +5789008 +5756240 +5789010 +5756242 +5789012 +5756244 +5789014 +5756246 +5789016 +5756248 +5789018 +5756250 +5789020 +5756252 +5789022 +5756254 +5789024 +5756256 +5789026 +5756258 +5789028 +5756260 +5789030 +5756262 +5789032 +5756264 +5789034 +5756266 +5789036 +5756268 +5789038 +5756270 +5789040 +5756272 +5789042 +5756274 +5789044 +5756276 +5789046 +5756278 +5756280 +5789048 +5789050 +5756282 +5789052 +5756284 +5789054 +5756286 +5789056 +5756288 +5789058 +5756290 +5789060 +5756292 +5789062 +5756294 +5789064 +5756296 +5789066 +5756298 +5789068 +5756300 +5789070 +5756302 +5789072 +5756304 +5789074 +5756306 +5789076 +5756308 +5789078 +5756310 +5789080 +5756312 +5789082 +5756314 +5789084 +5756316 +5789086 +5756318 +5789088 +5756320 +5789090 +5756322 +5789092 +5756324 +5789094 +5756326 +5789096 +5756328 +5789098 +5756330 +5789100 +5756332 +5789102 +5756334 +5789104 +5756336 +5789106 +5756338 +5789108 +5756340 +5789110 +5756342 +5789112 +5756344 +5789114 +5756346 +5789116 +5756348 +5789118 +5756350 +5789120 +5756352 +5789122 +5756354 +5789124 +5756356 +5789126 +5756358 +5789128 +5756360 +5789130 +5756362 +5789132 +5756364 +5789134 +5756366 +5789136 +5756368 +5789138 +5756370 +5789140 +5756372 +5789142 +5756374 +5789144 +5756376 +5789146 +5756378 +5789148 +5756380 +5789150 +5756382 +5789152 +5756384 +5756386 +5789154 +5756388 +5789156 +5789158 +5756392 +5789160 +5756394 +5789162 +5756396 +5789164 +5756398 +5789166 +5756400 +5789168 +5756402 +5789170 +5789172 +5789174 +5789176 +5789178 +5789180 +5789182 +5789184 +5789186 +5789188 +5789190 +5789192 +5789194 +5789196 +5789198 +5789200 +5690896 +5789202 +5690898 +5789204 +5690900 +5789206 +5690902 +5789208 +5690904 +5789210 +5690906 +5789212 +5690908 +5789214 +5690910 +5789216 +5690912 +5789218 +5690914 +5789220 +5690916 +5789222 +5690918 +5789224 +5789226 +5789228 +5789230 +5789232 +5789234 +5789236 +5789238 +5789240 +5789242 +5789244 +5789246 +5789248 +5789250 +5789252 +5789254 +5789256 +5789258 +5789260 +5789262 +5789264 +5789266 +5789268 +5789270 +5789272 +5789274 +5789276 +5789278 +5789280 +5789282 +5789284 +5789286 +5789288 +5789290 +5789292 +5789294 +5789296 +5789298 +5789300 +5789302 +5789304 +5789306 +5789308 +5789310 +5789312 +5789314 +5789316 +5789318 +5789320 +5789322 +5789324 +5789326 +5789328 +5789330 +5789332 +5789334 +5789336 +5789338 +5789340 +5789342 +5789344 +5789346 +5789348 +5789350 +5789352 +5789354 +5789356 +5789358 +5789360 +5789362 +5789364 +5789366 +5789368 +5789370 +5789372 +5789374 +5789376 +5789378 +5789380 +5789382 +5789384 +5789386 +5789388 +5789390 +5789392 +5789394 +5789396 +5789398 +5789400 +5789402 +5789404 +5789406 +5789408 +5789410 +5789412 +5789414 +5789416 +5789418 +5789420 +5789422 +5789424 +5789426 +5789428 +5789430 +5789432 +5789434 +5789436 +5789438 +5789440 +5789442 +5789444 +5789446 +5789448 +5756682 +5789450 +5756684 +5789452 +5756686 +5789454 +5756688 +5789456 +5756690 +5789458 +5756692 +5789460 +5756694 +5789462 +5756696 +5789464 +5756698 +5789466 +5756700 +5789468 +5756702 +5789470 +5756704 +5789472 +5756706 +5789474 +5756708 +5789476 +5756710 +5789478 +5756712 +5789480 +5789482 +5756714 +5756716 +5789484 +5756718 +5756720 +5789488 +5756722 +5789490 +5756724 +5789492 +5756726 +5789494 +5756728 +5789496 +5756730 +5789498 +5756732 +5789500 +5756734 +5789502 +5756736 +5789504 +5756738 +5789506 +5756740 +5789508 +5789510 +5756742 +5756744 +5789512 +5756746 +5789514 +5756748 +5789516 +5756750 +5789518 +5756752 +5789520 +5756754 +5789522 +5756756 +5789524 +5756758 +5789526 +5756760 +5789528 +5756762 +5789530 +5756764 +5789532 +5756766 +5789534 +5756768 +5789536 +5756770 +5789538 +5756772 +5789540 +5756774 +5789542 +5756776 +5789544 +5789546 +5756778 +5756780 +5756782 +5756784 +5756786 +5756788 +5756790 +5756792 +5756794 +5756796 +5756798 +5756800 +5756802 +5756804 +5756806 +5756808 +5756810 +5756812 +5756814 +5756816 +5756818 +5756820 +5756822 +5756824 +5756826 +5691376 +5691378 +5691380 +5691382 +5691384 +5691386 +5691388 +5691390 +5691394 +5691396 +5691398 +5691400 +5691402 +5691404 +5691406 +5691408 +5691410 +5691412 +5691414 +5789750 +5789752 +5789754 +5789760 +5789762 +5789764 +5789766 +5789770 +5789772 +5789774 +5789776 +5789778 +5789780 +5789782 +5789784 +5789786 +5789788 +5789790 +5789792 +5789794 +5789796 +5789798 +5789800 +5757034 +5757036 +5789806 +5757038 +5757040 +5789808 +5757042 +5789810 +5757044 +5789812 +5789814 +5757046 +5789816 +5757048 +5789818 +5757050 +5757052 +5789822 +5757054 +5789824 +5757056 +5789826 +5757058 +5789828 +5757060 +5789830 +5757062 +5789832 +5757064 +5789834 +5757066 +5789836 +5757068 +5789838 +5757070 +5789840 +5757072 +5789842 +5757074 +5789844 +5757076 +5789846 +5757078 +5789848 +5757080 +5789850 +5757082 +5789852 +5757084 +5789854 +5757086 +5789856 +5757088 +5789858 +5757090 +5789860 +5757092 +5789862 +5757094 +5789864 +5757096 +5789866 +5789868 +5757100 +5789870 +5757102 +5789872 +5757104 +5789874 +5757106 +5789876 +5757108 +5789878 +5757110 +5789880 +5757112 +5789882 +5757114 +5789884 +5757116 +5789886 +5757118 +5789888 +5757120 +5789890 +5757122 +5789892 +5757124 +5789894 +5757126 +5789896 +5757128 +5789898 +5757130 +5789900 +5757132 +5789902 +5757134 +5789904 +5757136 +5789906 +5757138 +5789908 +5757140 +5789910 +5757142 +5789912 +5757144 +5789914 +5757146 +5789916 +5757148 +5789918 +5757150 +5789920 +5757152 +5789922 +5757154 +5789924 +5757156 +5789926 +5757158 +5789928 +5757160 +5789930 +5757162 +5757164 +5789932 +5789934 +5757166 +5789936 +5757168 +5789938 +5757170 +5789940 +5757172 +5789942 +5757174 +5789944 +5757176 +5789946 +5757178 +5789948 +5757180 +5789950 +5757182 +5789952 +5757184 +5789954 +5757186 +5789956 +5757188 +5789958 +5757190 +5789960 +5757192 +5789962 +5757194 +5789964 +5757196 +5789966 +5757198 +5789968 +5757200 +5789970 +5757202 +5789972 +5757204 +5789974 +5757206 +5789976 +5757208 +5789978 +5757210 +5789980 +5757212 +5789982 +5757214 +5789984 +5757216 +5789986 +5757218 +5789988 +5757220 +5789990 +5757222 +5789992 +5757224 +5789994 +5789996 +5789998 +5757230 +5790000 +5757232 +5790002 +5757234 +5790004 +5790006 +5757238 +5790008 +5757240 +5790010 +5790012 +5757244 +5790014 +5757246 +5790016 +5757248 +5790018 +5757250 +5790020 +5757252 +5790022 +5757254 +5790024 +5757256 +5790026 +5757258 +5790028 +5757260 +5790030 +5757262 +5790032 +5757264 +5790034 +5757266 +5790036 +5757268 +5790038 +5757270 +5790040 +5757272 +5790042 +5757274 +5790044 +5757276 +5790046 +5757278 +5790048 +5757280 +5790050 +5757282 +5790052 +5757284 +5790054 +5757286 +5790056 +5757288 +5790058 +5757290 +5790060 +5757292 +5790062 +5757294 +5790064 +5757296 +5790066 +5757298 +5790068 +5757300 +5790070 +5757302 +5790072 +5757304 +5790074 +5757306 +5790076 +5757308 +5790078 +5757310 +5790080 +5757312 +5790082 +5757314 +5790084 +5757316 +5790086 +5757318 +5790088 +5757320 +5790090 +5757322 +5790092 +5757324 +5790094 +5757326 +5790096 +5757328 +5790098 +5757330 +5790100 +5757332 +5790102 +5757334 +5790104 +5790106 +5757338 +5790108 +5757340 +5790110 +5757342 +5790112 +5757344 +5790114 +5757346 +5790116 +5757348 +5790118 +5757350 +5757352 +5790120 +5790122 +5757354 +5790124 +5757356 +5790126 +5757358 +5790128 +5757360 +5790130 +5757362 +5790132 +5757364 +5790134 +5757366 +5790136 +5757368 +5790138 +5757370 +5790140 +5757372 +5790142 +5757374 +5790144 +5757376 +5790146 +5757378 +5790148 +5757380 +5790150 +5757382 +5790152 +5757384 +5790154 +5757386 +5790156 +5757388 +5790158 +5757390 +5790160 +5757392 +5790162 +5757394 +5790164 +5757396 +5790166 +5757398 +5790168 +5757400 +5790170 +5757402 +5757404 +5790172 +5790174 +5757406 +5790176 +5757408 +5790178 +5757410 +5790180 +5757412 +5790182 +5757414 +5790184 +5757416 +5790186 +5757418 +5790188 +5757420 +5790190 +5757422 +5790192 +5757424 +5790194 +5757426 +5790196 +5757428 +5790198 +5757430 +5790200 +5757432 +5790202 +5757434 +5790204 +5757436 +5790206 +5757438 +5790208 +5757440 +5790210 +5757442 +5790212 +5757444 +5790214 +5757446 +5790216 +5757448 +5790218 +5757450 +5790220 +5757452 +5790222 +5757454 +5790224 +5757456 +5790226 +5757458 +5790228 +5757460 +5790230 +5757462 +5790232 +5757464 +5757466 +5757468 +5761999 +5757640 +5757642 +5757644 +5757646 +5757648 +5757650 +5757652 +5757654 +5757656 +5757658 +5790428 +5757660 +5790430 +5757662 +5790432 +5790434 +5790436 +5757668 +5790438 +5757670 +5790440 +5757672 +5790442 +5790444 +5757676 +5790446 +5757678 +5790448 +5757680 +5790450 +5757682 +5790452 +5757684 +5757686 +5790456 +5757688 +5790458 +5757690 +5790460 +5757692 +5757694 +5790462 +5790464 +5757696 +5790466 +5757698 +5790468 +5757700 +5790470 +5757702 +5790472 +5757704 +5790474 +5757706 +5757708 +5790476 +5790478 +5757710 +5790480 +5757712 +5790482 +5757714 +5790484 +5757716 +5790486 +5757718 +5790488 +5757720 +5790490 +5757722 +5790492 +5757724 +5790494 +5757726 +5790496 +5757728 +5790498 +5757730 +5790500 +5757732 +5790502 +5757734 +5790504 +5757736 +5790506 +5757738 +5790508 +5757740 +5790510 +5757742 +5790512 +5757744 +5790514 +5757746 +5790516 +5757748 +5790518 +5757750 +5757752 +5790522 +5757754 +5790524 +5757756 +5790526 +5757758 +5790528 +5757760 +5790530 +5757762 +5790532 +5757764 +5790534 +5757766 +5790536 +5757768 +5790538 +5757770 +5790540 +5757772 +5790542 +5757774 +5790544 +5757776 +5790546 +5757778 +5757780 +5790550 +5757782 +5790552 +5757784 +5790554 +5757786 +5790556 +5757788 +5790558 +5757790 +5790560 +5757792 +5790562 +5757794 +5790564 +5757796 +5790566 +5757798 +5790568 +5757800 +5790570 +5757802 +5790572 +5757804 +5790574 +5757806 +5790576 +5757808 +5790578 +5757810 +5790580 +5757812 +5790582 +5757814 +5790584 +5757816 +5790586 +5757818 +5790588 +5757820 +5790590 +5757822 +5790592 +5757824 +5790594 +5757826 +5790596 +5757828 +5790598 +5757830 +5790600 +5757832 +5790602 +5757834 +5790604 +5757836 +5790606 +5757838 +5790608 +5757840 +5790610 +5757842 +5790612 +5757844 +5790614 +5757846 +5790616 +5757848 +5790618 +5757850 +5757852 +5757854 +5757856 +5757858 +5757860 +5757862 +5757864 +5757866 +5790668 +5790670 +5790674 +5790678 +5790682 +5790684 +5790688 +5790690 +5790694 +5790700 +5790702 +5790704 +5790706 +5790708 +5790710 +5790712 +5790714 +5790716 +5790718 +5790720 +5790722 +5790724 +5790726 +5790728 +5790730 +5790732 +5790734 +5790736 +5790738 +5790740 +5790742 +5790744 +5790746 +5790748 +5790750 +5790752 +5790754 +5790866 +5790868 +5790870 +5790872 +5790874 +5790876 +5790878 +5790880 +5790882 +5790884 +5790886 +5790888 +5790890 +5790892 +5790894 +5790896 +5790900 +5790902 +5790904 +5790906 +5790908 +5790910 +5790912 +5790914 +5790916 +5790918 +5790920 +5790922 +5790924 +5790926 +5790928 +5790930 +5790932 +5790934 +5790936 +5790938 +5790940 +5790942 +5790944 +5790946 +5790948 +5790950 +5790952 +5790954 +5790956 +5790958 +5790960 +5790962 +5790964 +5790966 +5790968 +5790970 +5790972 +5790974 +5790976 +5790978 +5790980 +5790982 +5790984 +5790986 +5790988 +5790990 +5790992 +5790994 +5790996 +5790998 +5791000 +5791002 +5791004 +5791006 +5791008 +5791010 +5791012 +5791014 +5791016 +5791018 +5791020 +5791022 +5791024 +5791026 +5791028 +5791030 +5791032 +5791034 +5791036 +5791038 +5791040 +5791042 +5791044 +5791046 +5791048 +5791050 +5791052 +5791054 +5791056 +5791058 +5791060 +5791062 +5791064 +5791066 +5791068 +5791070 +5791072 +5791074 +5791076 +5791078 +5791080 +5725551 +5725553 +5725555 +5725557 +5725559 +5725561 +5725563 +5725565 +5725567 +5725569 +5725571 +5725573 +5725575 +5725577 +5725579 +5725581 +5725583 +5725585 +5725587 +5725589 +5725591 +5725593 +5725595 +5725597 +5725599 +5725601 +5725603 +5725605 +5725607 +5791144 +5725609 +5791146 +5725611 +5791148 +5725613 +5791150 +5725615 +5791152 +5725617 +5791154 +5725619 +5791156 +5725621 +5791158 +5725623 +5791160 +5725625 +5791162 +5725627 +5791164 +5725629 +5791166 +5725631 +5791168 +5725633 +5791170 +5725635 +5791172 +5725637 +5791174 +5725639 +5791176 +5725641 +5791178 +5725643 +5791180 +5725645 +5791182 +5725647 +5791184 +5725649 +5791186 +5725651 +5791188 +5725653 +5791190 +5725655 +5791192 +5725657 +5791194 +5725659 +5791196 +5725661 +5791198 +5725663 +5791200 +5725665 +5791202 +5725667 +5791204 +5725669 +5791206 +5725671 +5791208 +5725673 +5725675 +5725677 +5725679 +5725681 +5725683 +5725685 +5725687 +5725689 +5725691 +5725693 +5725695 +5725697 +5725699 +5725701 +5725703 +5725705 +5725707 +5725709 +5725711 +5725713 +5725715 +5725717 +5725719 +5725721 +5725723 +5725725 +5725727 +5725729 +5725731 +5725733 +5725735 +5725737 +5725739 +5725741 +5725743 +5725745 +5725747 +5725749 +5725751 +5725753 +5725755 +5725757 +5725759 +5725761 +5725763 +5725765 +5725767 +5725769 +5725771 +5725773 +5725775 +5725777 +5725779 +5725781 +5725783 +5725785 +5725787 +5725789 +5725791 +5725793 +5725795 +5725797 +5725799 +5725801 +5725803 +5725805 +5725807 +5725809 +5725811 +5725813 +5725815 +5725817 +5725819 +5725821 +5725823 +5725825 +5725827 +5725831 +5725833 +5725835 +5725837 +5725839 +5725841 +5725843 +5725845 +5725847 +5725849 +5725851 +5725853 +5725855 +5725857 +5725859 +5725861 +5725863 +5725865 +5725867 +5725869 +5725871 +5725873 +5725875 +5725877 +5725879 +5725881 +5725883 +5725885 +5725887 +5725889 +5758658 +5725891 +5758660 +5725893 +5758662 +5725895 +5758664 +5725897 +5791434 +5725899 +5758666 +5791436 +5758668 +5791438 +5758670 +5791440 +5758672 +5725907 +5791442 +5791444 +5758674 +5791446 +5758680 +5758676 +5791448 +5725915 +5758684 +5725917 +5791450 +5758682 +5791452 +5791454 +5758686 +5725923 +5791456 +5725925 +5758688 +5725927 +5758696 +5791458 +5791460 +5758692 +5791462 +5758694 +5791464 +5791466 +5758698 +5725937 +5791468 +5725939 +5758700 +5725941 +5791470 +5725943 +5791472 +5758704 +5758714 +5725947 +5791476 +5725949 +5758718 +5791478 +5791480 +5791482 +5758722 +5725955 +5791484 +5725957 +5791486 +5725959 +5791488 +5725961 +5791490 +5725963 +5791492 +5725965 +5791494 +5758726 +5791496 +5725969 +5791498 +5725971 +5791500 +5725973 +5758742 +5725975 +5791504 +5725977 +5791506 +5725979 +5791508 +5758740 +5791510 +5791512 +5758744 +5791514 +5758746 +5725987 +5791516 +5725989 +5758758 +5791518 +5791520 +5725993 +5791522 +5791524 +5791526 +5791528 +5758766 +5791530 +5758768 +5726001 +5758762 +5726003 +5758772 +5791532 +5791534 +5791536 +5791538 +5758770 +5791540 +5791542 +5758774 +5726013 +5791544 +5726015 +5758776 +5791546 +5758778 +5791548 +5758780 +5791550 +5758790 +5726023 +5758792 +5726025 +5791554 +5726027 +5791556 +5758788 +5791558 +5726031 +5791560 +5791562 +5758794 +5791564 +5758796 +5726037 +5791566 +5791568 +5791570 +5791572 +5758810 +5758804 +5791574 +5791576 +5758808 +5791578 +5791580 +5791582 +5758812 +5726051 +5791584 +5758816 +5791586 +5758814 +5791588 +5758820 +5791590 +5791592 +5758822 +5791594 +5791596 +5791598 +5791600 +5726057 +5791602 +5726061 +5791604 +5726069 +5791606 +5726071 +5791608 +5726073 +5791610 +5726075 +5791612 +5726077 +5791614 +5726079 +5791616 +5726081 +5791618 +5726083 +5791620 +5726085 +5791622 +5726087 +5791624 +5726089 +5791626 +5726091 +5791628 +5726093 +5791630 +5726095 +5791632 +5791634 +5791636 +5791638 +5791640 +5791642 +5791644 +5791646 +5791648 +5791650 +5791652 +5791654 +5791656 +5791658 +5791660 +5791662 +5791664 +5791666 +5791668 +5791670 +5791672 +5791674 +5791676 +5791678 +5791680 +5791682 +5791684 +5791686 +5791688 +5791690 +5791692 +5791694 +5791696 +5791698 +5791700 +5791702 +5791704 +5791706 +5791708 +5791710 +5791712 +5791764 +5791766 +5791768 +5791770 +5791772 +5791774 +5791776 +5791778 +5791780 +5791782 +5791784 +5791786 +5726251 +5791788 +5726253 +5791790 +5726255 +5791792 +5726257 +5791794 +5726259 +5791796 +5726261 +5791798 +5726263 +5791800 +5726265 +5791802 +5726267 +5791804 +5726269 +5791806 +5726271 +5791808 +5726273 +5791810 +5726275 +5791812 +5726277 +5791814 +5726279 +5791816 +5726281 +5791818 +5726283 +5791820 +5726285 +5791822 +5726287 +5791824 +5726289 +5791826 +5726291 +5791828 +5726293 +5791830 +5726295 +5791832 +5726297 +5791834 +5726299 +5791836 +5726301 +5791838 +5726303 +5791840 +5726305 +5791842 +5726307 +5791844 +5726309 +5791846 +5726311 +5791848 +5726313 +5791850 +5726315 +5791852 +5726317 +5791854 +5726319 +5791856 +5726321 +5791858 +5726323 +5791860 +5726325 +5791862 +5759094 +5791864 +5759096 +5791866 +5759098 +5791868 +5726333 +5791870 +5726331 +5791872 +5726337 +5791874 +5726339 +5791876 +5726341 +5791878 +5726343 +5791880 +5726345 +5791882 +5726347 +5791884 +5726349 +5791886 +5726351 +5791888 +5726353 +5791890 +5726355 +5791892 +5726357 +5791894 +5726359 +5791896 +5726361 +5791898 +5726363 +5791900 +5726365 +5791902 +5726367 +5791904 +5726369 +5791906 +5726371 +5791908 +5726373 +5791910 +5726375 +5791912 +5726377 +5791914 +5726379 +5791916 +5726381 +5791918 +5726383 +5791920 +5726385 +5791922 +5726387 +5791924 +5726389 +5791926 +5726391 +5791928 +5726393 +5791930 +5791932 +5726397 +5791934 +5726399 +5791936 +5726401 +5791938 +5726403 +5791940 +5726405 +5791942 +5726407 +5726409 +5726411 +5726413 +5726415 +5726417 +5726419 +5726421 +5726423 +5726425 +5726427 +5726429 +5726431 +5726433 +5726435 +5726437 +5693670 +5726439 +5693672 +5726441 +5726443 +5726445 +5726447 +5726449 +5726451 +5726453 +5726455 +5726457 +5726459 +5726461 +5726463 +5726465 +5726467 +5726469 +5726471 +5726473 +5726475 +5726477 +5726479 +5726481 +5726483 +5726485 +5726487 +5726489 +5726491 +5726493 +5726495 +5726497 +5726499 +5726501 +5726503 +5726505 +5726507 +5726509 +5726511 +5726513 +5726515 +5726517 +5726519 +5726521 +5726523 +5726525 +5726527 +5726529 +5726531 +5726533 +5726535 +5726537 +5726539 +5726541 +5726543 +5726545 +5726547 +5726549 +5726551 +5726553 +5726555 +5726557 +5726559 +5726561 +5726563 +5726565 +5726567 +5726569 +5726571 +5726573 +5726575 +5726577 +5726579 +5726581 +5726583 +5726585 +5726587 +5726589 +5726591 +5726593 +5726595 +5726597 +5726599 +5726601 +5726603 +5726605 +5726607 +5726609 +5726611 +5726613 +5726615 +5726617 +5726619 +5726621 +5726623 +5726625 +5726627 +5726629 +5726631 +5726633 +5726871 +5726873 +5726875 +5726877 +5726879 +5726881 +5726883 +5726885 +5726887 +5726889 +5726891 +5726893 +5726895 +5726897 +5726899 +5726901 +5726903 +5726905 +5726907 +5726909 +5726911 +5759882 +5727193 +5727195 +5727197 +5727199 +5727201 +5727203 +5727205 +5727207 +5727209 +5727211 +5727213 +5727215 +5727217 +5727219 +5727221 +5727223 +5727541 +5727543 +5727545 +5727547 +5727549 +5727551 +5727553 +5727555 +5727557 +5727559 +5727561 +5727563 +5727565 +5727567 +5727569 +5727571 +5727573 +5727575 +5727577 +5727579 +5727581 +5727583 +5727585 +5727587 +5727589 +5727591 +5727593 +5727595 +5727597 +5727599 +5727601 +5727603 +5727605 +5727607 +5727609 +5727611 +5727613 +5727615 +5727617 +5727619 +5727621 +5727623 +5727625 +5727627 +5727629 +5727631 +5727633 +5727635 +5727637 +5727639 +5727641 +5727643 +5727645 +5727647 +5727649 +5727651 +5727653 +5727655 +5727657 +5727659 +5727661 +5727663 +5727665 +5727667 +5727669 +5727671 +5727673 +5727675 +5727677 +5727679 +5727681 +5727683 +5727685 +5727687 +5727689 +5727691 +5727693 +5727695 +5727697 +5727699 +5727701 +5727703 +5727705 +5727707 +5727709 +5727711 +5727713 +5727715 +5727717 +5727719 +5727721 +5727723 +5727725 +5727727 +5727729 +5727731 +5727733 +5727735 +5727737 +5727739 +5727741 +5727743 +5727745 +5727747 +5727749 +5727751 +5727753 +5727755 +5727757 +5727759 +5727761 +5727763 +5727765 +5727767 +5727769 +5727771 +5727773 +5727775 +5727777 +5727779 +5727781 +5727783 +5727785 +5727787 +5727789 +5727791 +5727793 +5727795 +5727797 +5727799 +5727801 +5727803 +5727805 +5727807 +5727809 +5727811 +5727813 +5723525 +5727815 +5727817 +5727819 +5727821 +5727823 +5727825 +5727827 +5727829 +5727831 +5727833 +5727835 +5727837 +5727839 +5727841 +5727843 +5727845 +5727847 +5727849 +5727851 +5727853 +5727855 +5727857 +5727859 +5727861 +5727863 +5727865 +5727867 +5727869 +5727871 +5727873 +5727875 +5727877 +5727879 +5727881 +5727883 +5727885 +5727887 +5727889 +5727891 +5727893 +5727895 +5727897 +5793580 +5793582 +5793584 +5793586 +5793588 +5793592 +5793608 +5793610 +5793612 +5793614 +5793616 +5793618 +5728153 +5728155 +5728157 +5728159 +5728161 +5728163 +5728165 +5728167 +5728169 +5728171 +5728173 +5728175 +5728177 +5728179 +5728181 +5728183 +5728185 +5728187 +5728189 +5728191 +5728193 +5728195 +5728197 +5728199 +5728201 +5728203 +5728205 +5728207 +5728209 +5728211 +5728213 +5728215 +5728217 +5728219 +5728221 +5728223 +5728225 +5728227 +5728229 +5728231 +5728233 +5728235 +5728237 +5728239 +5728241 +5728243 +5728245 +5728247 +5728249 +5728251 +5728253 +5728255 +5728257 +5728259 +5728261 +5728263 +5728265 +5728267 +5728269 +5728271 +5728275 +5728277 +5728279 +5728281 +5728283 +5728285 +5728287 +5728289 +5728291 +5728293 +5728295 +5728297 +5728299 +5728301 +5728303 +5728305 +5728307 +5728309 +5728311 +5728313 +5728315 +5728317 +5728319 +5728321 +5728323 +5728325 +5728327 +5728329 +5728331 +5728333 +5728335 +5728337 +5728339 +5728341 +5728343 +5728345 +5728347 +5728349 +5728351 +5728353 +5728355 +5728357 +5728359 +5728361 +5728363 +5728365 +5728367 +5728369 +5728371 +5728373 +5728375 +5728377 +5728379 +5728381 +5728383 +5728385 +5728387 +5728389 +5728391 +5728393 +5728395 +5728397 +5728399 +5728401 +5728403 +5761231 +5761233 +5761235 +5761237 +5761239 +5761241 +5761243 +5761245 +5761247 +5761249 +5761251 +5761253 +5761255 +5761257 +5761259 +5761261 +5761263 +5761265 +5761267 +5761269 +5761271 +5761273 +5761275 +5761277 +5761279 +5761281 +5761283 +5761285 +5761287 +5761289 +5761291 +5761293 +5761295 +5761297 +5761299 +5761301 +5761303 +5761305 +5761307 +5761309 +5761311 +5761313 +5761315 +5761317 +5761319 +5761321 +5761323 +5761325 +5761327 +5761329 +5761331 +5761333 +5761335 +5761337 +5761339 +5761341 +5761343 +5761345 +5761347 +5761349 +5761351 +5761353 +5761355 +5761357 +5761359 +5761361 +5761363 +5761365 +5761367 +5761369 +5761371 +5761373 +5761375 +5761377 +5761379 +5761381 +5761383 +5761385 +5761387 +5761389 +5728709 +5728711 +5728713 +5728715 +5728717 +5728719 +5728721 +5728723 +5728725 +5728727 +5728729 +5728731 +5728733 +5728735 +5728737 +5728739 +5728741 +5728743 +5728745 +5728747 +5728749 +5728751 +5761519 +5728753 +5728755 +5728757 +5728759 +5728761 +5728763 +5728765 +5728767 +5728769 +5728771 +5728773 +5728775 +5728777 +5728779 +5728781 +5728783 +5728785 +5728787 +5728789 +5728791 +5728793 +5728795 +5728797 +5728799 +5728801 +5728803 +5728805 +5728807 +5728809 +5728811 +5728813 +5728815 +5728817 +5728819 +5728821 +5728823 +5728825 +5728827 +5728829 +5728831 +5728833 +5728835 +5728837 +5728839 +5728841 +5728843 +5728845 +5728847 +5728849 +5728851 +5728853 +5728855 +5728857 +5728859 +5728861 +5728863 +5728865 +5728867 +5728869 +5728871 +5761639 +5728873 +5761641 +5728875 +5761643 +5728877 +5761645 +5728879 +5761647 +5728881 +5761649 +5728883 +5761651 +5728885 +5761653 +5728887 +5761655 +5728889 +5761657 +5728891 +5761659 +5728893 +5761661 +5728895 +5761663 +5728897 +5761665 +5728899 +5761667 +5728901 +5761669 +5728903 +5761671 +5728905 +5761673 +5728907 +5761675 +5728909 +5761677 +5728911 +5761679 +5728913 +5761681 +5728915 +5761683 +5728917 +5761685 +5728919 +5761687 +5728921 +5761689 +5728923 +5761691 +5728925 +5761693 +5728927 +5761695 +5728929 +5761697 +5728931 +5761699 +5728933 +5761701 +5728935 +5761703 +5728937 +5761705 +5728939 +5761707 +5728941 +5761709 +5728943 +5761711 +5728945 +5761713 +5728947 +5761715 +5728949 +5761717 +5728951 +5761719 +5761721 +5761723 +5761725 +5761727 +5761729 +5761731 +5761733 +5761735 +5761737 +5761739 +5761741 +5761743 +5761745 +5761747 +5761749 +5761751 +5761753 +5696218 +5761755 +5696220 +5761757 +5761759 +5761761 +5761763 +5761765 +5761767 +5761769 +5761771 +5761773 +5761775 +5761777 +5761779 +3762962 +3762964 +3762966 +3762968 +3762970 +3762972 +3762974 +3762976 +3762978 +3762980 +3762982 +3762984 +3762986 +3762988 +3762990 +3762992 +3762994 +3763006 +3763008 +3763010 +3763012 +3763014 +3763016 +3763018 +3763020 +3763022 +3763024 +3763026 +3763028 +3763032 +3763042 +3763046 +3763050 +3763052 +3763054 +3763056 +3763110 +3763112 +3763116 +3763118 +3763120 +3763122 +3763124 +3763126 +3763128 +3763130 +3763132 +3763134 +3763136 +3763138 +3763140 +3763142 +3763144 +3763146 +3763148 +3763150 +5729231 +3763152 +5729233 +3763154 +5729235 +3763156 +5729237 +3763158 +5729239 +3763160 +5729241 +3763162 +5729243 +3763164 +5729245 +3763166 +5729247 +3763168 +5729249 +3763170 +5729251 +5729253 +5729255 +5729257 +5729259 +5729261 +5729263 +5762091 +5762093 +5762095 +5762097 +5762099 +5762101 +5762103 +5762105 +5762107 +5762109 +5762111 +5762113 +5762115 +5762117 +5762119 +5762121 +5762123 +5762125 +5762127 +5762129 +5762131 +5762133 +5762135 +5762137 +5762139 +5762141 +5762143 +5762145 +5762147 +5762149 +5762151 +5762153 +5762155 +5762157 +5762159 +5762161 +5762163 +5762165 +5762167 +5762169 +5762171 +5762173 +5762175 +5762177 +5762179 +5762181 +5762183 +5762185 +5762187 +5762189 +5762191 +5762193 +5762195 +5762197 +5762199 +5762201 +5762203 +5762205 +5762207 +5762209 +5762211 +5762213 +5762215 +5762217 +5762219 +5762221 +5762223 +5762225 +5762227 +5762229 +5762231 +5762233 +5762235 +5762237 +5762239 +5762241 +5762243 +5762245 +5762247 +5762249 +5762251 +5762253 +5762255 +5762257 +5762259 +5762261 +5762263 +5762265 +5762267 +5762269 +5762271 +5762273 +5762275 +5762277 +5762279 +5762281 +5762283 +5762285 +5762287 +5762289 +5762291 +5762293 +5762295 +5762365 +5762367 +5762369 +5762371 +5762373 +5762375 +5762377 +5762379 +5762381 +3763732 +3763734 +3763738 +3763742 +3763744 +3763746 +3763748 +3763750 +3763754 +3763758 +3763760 +3763782 +3763788 +3763790 +3763792 +5762641 +3763794 +5762643 +3763796 +5762645 +3763798 +5762647 +3763800 +5762649 +3763802 +5762651 +3763804 +5762653 +3763806 +5762655 +3763808 +5762657 +3763810 +5762659 +5762661 +3763814 +5762663 +3763816 +5762665 +3763818 +5762667 +3763820 +5762669 +3763822 +5762671 +3763824 +5762673 +3763826 +5762675 +5762677 +3763830 +5762679 +3763832 +5762681 +3763834 +5762683 +3763836 +5762685 +3763838 +5762687 +5762689 +3763842 +5762691 +3763844 +5762693 +3763846 +5762695 +5762697 +5762699 +3763852 +5762701 +5762703 +3763856 +3763858 +3763860 +3763864 +3763878 +3763884 +3763886 +3763888 +3763894 +3763900 +3763902 +3763904 +3763912 +3763914 +3763916 +3763918 +3763920 +3763930 +3763932 +3763938 +3763940 +3763944 +3763946 +3763948 +3763950 +3763954 +3763958 +3763960 +3763962 +3763966 +3763968 +3763970 +3763972 +3763974 +3763976 +3763978 +3763980 +3763986 +3763996 +3763998 +3764000 +3764002 +3764012 +3764014 +3764016 +3764020 +3764022 +3764100 +3764102 +3764104 +3764108 +3764110 +3764112 +3764114 +3764116 +3764118 +3764122 +3764124 +3764128 +3764130 +3764132 +3764134 +3764136 +3764138 +3764140 +3764142 +3764144 +3764146 +3764148 +3764150 +3764152 +3764154 +3764156 +3764158 +3764160 +3764162 +3764164 +3764166 +3764168 +3764170 +3764172 +3764174 +3764176 +3764178 +24670162 +3764180 +24670164 +3764182 +3764184 +3764186 +3764188 +3764190 +3764192 +3764194 +3764196 +3764198 +3764200 +3764202 +3764204 +3764206 +3764208 +3764210 +3764212 +3764214 +3764216 +3764218 +3764220 +3764222 +3764224 +3764226 +3764228 +3764230 +3764232 +3764234 +3764236 +3764238 +3764240 +3764242 +3764244 +3764246 +3764248 +3764250 +3764252 +3764254 +3764256 +3764258 +3764260 +3764262 +3764264 +3764266 +3764268 +3764270 +3764272 +3764274 +3764276 +3764278 +3764280 +3764282 +3764284 +3764286 +3764288 +3764290 +3764292 +3764294 +3764296 +3764298 +3764300 +3764302 +3764304 +3764306 +3764308 +24670292 +3764310 +24670294 +3764312 +3764314 +24670298 +3764316 +24670300 +3764318 +5632139 +5632141 +5632143 +5632145 +5632147 +5632149 +5632151 +5632153 +5632155 +5632157 +5632159 +5632161 +5632163 +5632165 +5632167 +5632169 +5632171 +5632173 +5632175 +5632177 +5632179 +5632181 +5632183 +5632185 +5632187 +5632189 +5632191 +5632193 +5632195 +5632197 +5632199 +5632201 +5632203 +5632205 +5632207 +5632209 +5632211 +5632213 +5632215 +5632217 +5632219 +5632221 +5632223 +5632225 +5632227 +5632229 +5632231 +5632233 +5632235 +5632237 +5632239 +5632241 +5632243 +5632245 +5632247 +5632249 +5632251 +5632253 +5632255 +5632257 +5632259 +5632261 +5632263 +5632265 +5632267 +5632269 +5632271 +5632273 +5632275 +5632277 +5632279 +5632281 +5632283 +5632285 +5632287 +5632289 +5632291 +5632293 +5632295 +5632297 +5632299 +5632301 +5632303 +5632305 +5632307 +5632309 +5632311 +5632313 +5632315 +5632317 +5632319 +5632321 +5632323 +5632325 +5632327 +5632329 +5632331 +5632333 +5632335 +5632337 +5632339 +5632341 +5632343 +5632345 +5632347 +5632349 +5632351 +5632353 +5632355 +5632357 +5632359 +5632361 +5632363 +5632365 +5632367 +5632369 +5632371 +5632373 +5632375 +5632377 +5632379 +5632381 +5632383 +5632385 +5632387 +5632389 +5632391 +5632393 +5632395 +5632397 +5632399 +5632401 +5632403 +5632405 +5632407 +5632409 +5632411 +5632415 +5632417 +5632419 +5632421 +5632423 +5632425 +5632427 +5632429 +5730735 +5632431 +5730737 +5632433 +5730739 +5632435 +5730741 +5632437 +5730743 +5632439 +5730745 +5632441 +5632443 +5632445 +5632447 +5632449 +5632451 +5632453 +5632455 +5632457 +5632459 +5632461 +5632463 +5632465 +5632467 +5632469 +5632471 +5632473 +5632475 +5632477 +5632479 +5632481 +5632483 +5632485 +5632487 +5632489 +5632491 +5632493 +5632495 +5632497 +5632499 +5632501 +5632503 +5632505 +5632507 +5632509 +5632511 +5632513 +5632515 +5632517 +5632519 +5632521 +5632523 +5632525 +5632527 +5632529 +5632531 +5632533 +5632535 +5632537 +5632539 +5632541 +5632543 +5632545 +5632547 +5632549 +5632551 +5632553 +5632555 +5632557 +5632559 +5632561 +5632563 +5632565 +5632567 +5632569 +5632571 +5632573 +5632575 +5632577 +5632579 +5632581 +5632583 +5632585 +5632587 +5632589 +5632591 +5632593 +5632595 +5632597 +5632599 +5632601 +5632603 +5632605 +5632607 +5632609 +5632611 +5632613 +5632615 +5632617 +5632619 +5632621 +5632623 +5632625 +5632627 +5632629 +5632631 +5632633 +5632635 +5632637 +5632639 +5632641 +5632643 +5632645 +5632647 +5632649 +5632651 +5632653 +5632655 +5632657 +5632659 +5632661 +5632663 +5632665 +5632667 +5632669 +5632671 +5632673 +5632675 +5632677 +5632679 +5632681 +5632683 +5632685 +5632687 +5632689 +5632691 +5632693 +5632695 +5632697 +5632699 +5632701 +5632703 +5632705 +5632707 +5632709 +5632711 +5632713 +5632715 +5632717 +5632719 +5632721 +5632723 +5632725 +5632727 +5632729 +5632731 +5632733 +5632735 +5632737 +5632739 +5632741 +5632743 +5632745 +5632747 +5632749 +5632751 +5632753 +5632755 +5632757 +5632759 +5632761 +5632763 +5632765 +5632767 +5632769 +5632771 +5632773 +5632775 +5632777 +5632779 +5632781 +5632783 +5632785 +5632787 +5632789 +3765366 +3765370 +3765378 +3765380 +3765382 +3765384 +3765386 +3765390 +3765392 +3765394 +3765396 +3765398 +3765402 +3765404 +3765406 +3765408 +3765410 +3765414 +3765432 +3765434 +3765436 +3765440 +3765442 +3765444 +3765446 +3765448 +3765450 +3765452 +3765454 +3765456 +5698778 +5633309 +5633311 +5633313 +5633315 +5633317 +5633319 +5633321 +5633323 +5633325 +5633327 +5633329 +5633331 +5633333 +5633335 +5633337 +5633339 +5633341 +5633345 +5698882 +5633347 +5698884 +5633349 +5698886 +5633351 +5698888 +5633353 +5698890 +5633355 +5633357 +5698894 +5633359 +5698896 +5633361 +5698898 +5633363 +5698900 +5633365 +5633367 +5633369 +5633371 +5633373 +5633375 +5633377 +5633379 +5633381 +5633383 +5633385 +5633387 +5633389 +5633391 +5633393 +5633395 +5633397 +5633399 +5633401 +5633403 +5633405 +5633407 +5633409 +5633411 +5633413 +5633415 +5633417 +5633419 +5633423 +5633425 +5633427 +5633431 +5633435 +5633437 +5633439 +5633441 +5633443 +5633445 +5633447 +5633449 +5633451 +5633453 +5633455 +5633457 +5633459 +5633461 +5633463 +5633465 +5633467 +5633469 +5633471 +5633473 +5633475 +5633487 +5633489 +5633491 +5633493 +5633495 +5633497 +5633499 +5633501 +5633503 +5633505 +3765730 +5633507 +3765732 +5633509 +3765734 +3765736 +3765738 +3765740 +3765742 +3765744 +5764593 +3765746 +5764595 +3765748 +5764597 +3765750 +5764599 +3765752 +5764601 +3765754 +5764603 +3765756 +5764605 +3765758 +5764607 +3765760 +5764609 +3765762 +5764611 +3765764 +5764613 +3765766 +5764615 +3765768 +5764617 +3765770 +5764619 +3765772 +5764621 +3765774 +5764623 +3765776 +5764625 +3765778 +5764627 +3765780 +5764629 +3765782 +5764631 +3765784 +5764633 +3765786 +5764635 +3765788 +5764637 +3765790 +5764639 +3765792 +5633569 +3765794 +5633571 +3765796 +5764645 +3765798 +5764647 +3765800 +5764649 +5633577 +5764651 +5633579 +5764653 +5633581 +5633583 +5633575 +5633585 +5764657 +5633587 +5764659 +5633589 +5764661 +5633591 +5764663 +5633593 +5764665 +5633595 +5764667 +5633597 +5764669 +5633599 +5764671 +5764673 +5633601 +5633603 +5764675 +5633605 +5764677 +5633607 +5764679 +5633609 +5764681 +5764683 +5633611 +5764685 +5633613 +5633615 +5764687 +5633617 +5764689 +5764691 +5633619 +5633621 +5764693 +5633623 +5764695 +5633625 +5764697 +5633627 +5764699 +5633629 +5764701 +5633631 +5764703 +5764705 +5764707 +5764709 +5764711 +5764713 +5764715 +5764717 +5764719 +5764721 +5764723 +5764725 +5764727 +5764729 +5764731 +5764733 +5764735 +5764737 +5764739 +5764741 +5764743 +5764745 +5764747 +5764749 +5764751 +5764753 +5764755 +5764757 +5764759 +5764761 +5764763 +5764765 +5764767 +5764769 +5764771 +5764773 +5764775 +5764777 +5764779 +5764781 +5764783 +5764785 +5764787 +5764789 +5764791 +5764793 +5764795 +5764797 +5764799 +5764801 +5764871 +5764873 +5764875 +5764877 +5764879 +5764881 +5764883 +5764885 +5764887 +5764889 +5764891 +5764893 +5764895 +5764897 +5764899 +5764901 +5764903 +5764905 +5764907 +5764909 +5699420 +5699424 +5699426 +5699428 +5699430 +5699432 +5699434 +5699436 +5699438 +5699440 +3766300 +5634083 +5634085 +5634089 +5634091 +5765169 +3766322 +3766324 +5765173 +3766326 +5765175 +5765177 +3766330 +5765179 +3766332 +5765181 +3766334 +5765183 +3766336 +5765185 +5765187 +5765189 +3766342 +5765191 +5765193 +3766346 +5765195 +3766348 +5765197 +3766350 +5765199 +3766352 +5765201 +3766354 +5765203 +3766356 +5765205 +3766358 +5765207 +3766360 +5765209 +3766362 +5765211 +3766364 +5765213 +3766366 +5765215 +3766368 +5765217 +3766370 +5765219 +3766372 +5765221 +3766374 +5765223 +3766376 +5765225 +3766378 +5765227 +3766380 +5765229 +3766382 +5765231 +3766384 +5765233 +3766386 +5765235 +5765237 +3766390 +5765239 +5765241 +5765243 +5765245 +5765247 +5765249 +5765251 +5765253 +5765255 +5765257 +5765259 +5765261 +5765263 +5765265 +5765267 +5765269 +5765271 +5765273 +5765275 +5765277 +5765279 +5765281 +5765283 +5765285 +5765287 +5765289 +5765291 +5765293 +5765295 +5765297 +5765299 +5765301 +5765303 +5765305 +5765307 +5765309 +5765311 +5765313 +5765315 +5765317 +5765319 +5765321 +5765323 +5765325 +5765327 +5765329 +5765331 +5765333 +5765335 +5765337 +5765339 +5765341 +5765343 +5765345 +5765347 +5765349 +5765351 +5765353 +5765355 +5765357 +5765359 +5765361 +5765363 +5765365 +5765367 +5765369 +5765371 +5765373 +5765375 +5765377 +5765379 +5765381 +5765383 +5765385 +5765387 +5765389 +5765391 +5765393 +5765395 +5765397 +5765399 +5765401 +5765403 +5765405 +5765407 +5765409 +5765411 +5765413 +5765415 +5765417 +5765419 +5765421 +5765423 +5765425 +5765427 +5765429 +5765431 +5765433 +5765435 +5765437 +5765439 +5765441 +5765443 +5765445 +5765447 +5765449 +5765451 +5765453 +5765455 +5765457 +5765459 +5765461 +5765463 +5765465 +5765467 +5765469 +5765471 +5765473 +5765475 +5765477 +5765479 +5765481 +5765483 +5765485 +5765487 +5765489 +5765491 +5765493 +5765495 +5765497 +5765499 +5765501 +5765503 +5765505 +5765507 +5765509 +5765775 +5765777 +5765779 +5765781 +5765783 +5765785 +5765787 +5765789 +5765791 +5765793 +5765795 +5765797 +5765799 +5765801 +5765803 +5765805 +5765807 +5765809 +5765811 +5765813 +5765815 +5765817 +5765819 +5765821 +5765823 +5765825 +5765827 +5765829 +5765831 +5765833 +3766986 +5765835 +5765837 +5765839 +5765841 +5765843 +5765845 +5765847 +5765849 +5634779 +5634781 +5634783 +5634785 +3767010 +5634787 +3767012 +5634789 +5634791 +5634793 +5634795 +5634797 +5634799 +5634801 +5634803 +5634805 +5634807 +5700344 +5634809 +5700346 +5634811 +5634813 +5700350 +5634815 +5700352 +5634817 +5700354 +5634819 +5700356 +5634821 +5700358 +5634823 +5700360 +5634825 +5700362 +5634827 +5634829 +5634831 +5634833 +5634835 +5634837 +5634839 +5634841 +5634843 +5634845 +5700958 +5700962 +5700966 +5700968 +5700970 +5700972 +5700974 +5700976 +5700978 +5635443 +5700980 +5635445 +5700982 +5635447 +5700984 +5635449 +5700986 +5635451 +5700988 +5635453 +5700990 +5700992 +5635457 +5700994 +5635459 +5635461 +5635463 +5635465 +5635467 +5635469 +5635473 +5733885 +5733887 +5733889 +5733891 +5733893 +5733895 +5733897 +5733899 +5733901 +5733903 +5733905 +5733907 +5733909 +5733911 +5733913 +5733915 +5733917 +5733919 +5733921 +5733923 +5733925 +5733927 +5733929 +5733931 +5733933 +5733935 +5733937 +5733939 +5733941 +5733943 +5733945 +5733947 +5733949 +5733951 +5733953 +5733955 +5733957 +5733959 +5733961 +5733963 +5733965 +5733967 +5733969 +5733971 +5733973 +5733975 +5733977 +5733979 +5733981 +5733983 +5733985 +5733987 +5733989 +5733991 +5733993 +5733995 +5633573 +5733997 +5733999 +5734001 +5734003 +5734005 +5734007 +5734009 +5734011 +5734013 +5734015 +5734017 +5734019 +5734021 +5734023 +5734025 +5734027 +5734029 +5734031 +5734033 +5734035 +5734037 +5734039 +5734041 +5734043 +5734045 +5734047 +5734049 +5734051 +5734053 +5734055 +5734057 +5734059 +5734061 +5734063 +5734065 +5734067 +5734069 +5734071 +5734073 +5734075 +5734077 +5734079 +5734081 +5734083 +5734085 +5635781 +5734087 +5635783 +5734089 +5635785 +5734091 +5635787 +5734093 +5635789 +5734095 +5635791 +5734097 +5635793 +5734099 +5635795 +5734101 +5635797 +5734103 +5635799 +5734105 +5635801 +5734107 +5635803 +5734109 +5635805 +5734111 +5635807 +5734113 +5635809 +5734115 +5635811 +5734117 +5635813 +5734119 +5635815 +5734121 +5635817 +5734123 +5635819 +5734125 +5635821 +5734127 +5635823 +5734129 +5635825 +5734131 +5635827 +5734133 +5635829 +5734135 +5635831 +5734137 +5635833 +5734139 +5635835 +5734141 +5635837 +5734143 +5635839 +5734145 +5635841 +5734147 +5635843 +5734149 +5635845 +5734151 +5635847 +5734153 +5635849 +5734155 +5635851 +5734157 +5635853 +5734159 +5635855 +5734161 +5734163 +5734165 +5635861 +5734167 +5635863 +5734169 +5635865 +5734171 +5635867 +5635869 +5635871 +5635873 +5635875 +5635877 +5635881 +5635883 +5635887 +5635889 +5635891 +5635893 +5635895 +5635897 +5635899 +5635901 +5635903 +5635905 +5635907 +5635909 +5635911 +5635913 +5635915 +5635917 +5635919 +5734225 +5635921 +5734227 +5635923 +5734229 +5635925 +5734231 +5635927 +5734233 +5635929 +5734235 +5734237 +5734239 +5734241 +5734243 +5734245 +5734247 +5734249 +5734251 +5734253 +5734255 +5734257 +5734259 +5734261 +5734263 +5734265 +5734267 +5734269 +5734271 +5734273 +5734275 +5734277 +5734279 +5734281 +5734283 +5734285 +5734287 +5734289 +5734291 +5734293 +5734295 +5734297 +5734299 +5734301 +5734303 +5734305 +5734307 +5734309 +5734311 +5734313 +5734315 +5734317 +5734319 +5734321 +5734323 +5734325 +5734327 +5734329 +5734331 +5734333 +5734335 +5734337 +5734339 +5734341 +5734343 +5734345 +5734347 +5734349 +5734351 +5734353 +5734355 +5734357 +5734359 +5734361 +5734363 +5734365 +5734367 +5734373 +5734377 +5734383 +5734391 +5734393 diff --git a/test/LowerColorado_TX/domain/diffusive_domain.yaml b/test/LowerColorado_TX/domain/diffusive_domain.yaml deleted file mode 100644 index 1c0eb36cb..000000000 --- a/test/LowerColorado_TX/domain/diffusive_domain.yaml +++ /dev/null @@ -1,237 +0,0 @@ -3766334: -- 5791828 -- 5791830 -- 5791834 -- 5791836 -- 5791838 -- 5791840 -- 5791846 -- 5791848 -- 5791854 -- 5791856 -- 5791858 -- 5791860 -- 5791864 -- 5791872 -- 5791874 -- 5791878 -- 5791880 -- 5791886 -- 5791888 -- 5791894 -- 5791896 -- 5791898 -- 5791904 -- 5791908 -- 5791910 -- 5791912 -- 5791916 -- 5791918 -- 5791924 -- 5791926 -- 5791928 -- 5791930 -- 5791932 -- 5791934 -- 5791940 -- 5791942 -- 5793582 -- 5793584 -- 5793586 -- 5793588 -- 5793592 -- 5793618 -- 3763130 -- 3763132 -- 3763134 -- 3763140 -- 3763142 -- 3763144 -- 3763148 -- 3763150 -- 3763154 -- 3763158 -- 3763160 -- 3763162 -- 3763164 -- 3763166 -- 3764148 -- 3764152 -- 3764156 -- 3764158 -- 3764162 -- 3764168 -- 3764170 -- 3764172 -- 3764174 -- 3764176 -- 3764178 -- 3764180 -- 3764182 -- 3764184 -- 3764186 -- 3764188 -- 3764190 -- 3764192 -- 3764194 -- 3764196 -- 3764198 -- 3764200 -- 3764228 -- 3764230 -- 3764232 -- 3764234 -- 3764238 -- 3764240 -- 3764242 -- 3764244 -- 3764246 -- 3764248 -- 3764254 -- 3764256 -- 3764258 -- 3764260 -- 3764268 -- 3764270 -- 3764272 -- 3764280 -- 3764282 -- 3764284 -- 3764286 -- 3764288 -- 3764290 -- 3764292 -- 3764294 -- 3764296 -- 3764314 -- 3765732 -- 3765740 -- 3765742 -- 3765748 -- 3765750 -- 3765756 -- 3765758 -- 3765764 -- 3765768 -- 3765770 -- 3765774 -- 3765780 -- 3765782 -- 3765784 -- 3765786 -- 3765790 -- 3765792 -- 3765794 -- 3765796 -- 3765798 -- 3765800 -- 3766334 -- 3766354 -- 3766356 -- 3766360 -- 3766362 -- 3766368 -- 3766370 -- 3766372 -- 3766376 -- 3766378 -- 3766380 -- 3766382 -- 3766384 -- 3766386 -- 5789878 -- 5790024 -- 5790026 -- 5790028 -- 5790030 -- 5790032 -- 5790034 -- 5790036 -- 5790038 -- 5790040 -- 5790044 -- 5790046 -- 5790048 -- 5790050 -- 5790052 -- 5790054 -- 5790056 -- 5790058 -- 5790060 -- 5790062 -- 5790064 -- 5790066 -- 5790068 -- 5790070 -- 5790072 -- 5790074 -- 5790076 -- 5790078 -- 5790080 -- 5790082 -- 5790084 -- 5790086 -- 5790088 -- 5790090 -- 5790092 -- 5781901 -- 5790094 -- 5790096 -- 5790098 -- 5790100 -- 5790102 -- 5790104 -- 5790106 -- 5790108 -- 5781917 -- 5790110 -- 5781919 -- 5790112 -- 5790114 -- 5781923 -- 5790116 -- 5790118 -- 5790120 -- 5781929 -- 5790122 -- 5790124 -- 5790126 -- 5790128 -- 5790130 -- 5790132 -- 5790134 -- 5790148 -- 5790150 -- 5790152 -- 5790154 -- 5781963 -- 5790158 -- 5790164 -- 5790166 -- 5790172 -- 5790180 -- 5790182 -- 5790186 -- 5790188 -- 5790194 -- 5790200 -- 5790204 -- 5790208 -- 5790212 -- 5790216 -- 5790218 -- 5790220 -- 5790228 -- 5790230 -- 3766986 -- 3767010 -- 3767012 -- 5791174 -- 5791176 -- 5791178 -- 5791180 -- 5791182 -- 5791184 -- 5791186 -- 5791188 -- 5791198 diff --git a/test/LowerColorado_TX/domain/diffusive_natural_xs_03312022.nc b/test/LowerColorado_TX/domain/diffusive_natural_xs_03312022.nc deleted file mode 100644 index 969fea631..000000000 Binary files a/test/LowerColorado_TX/domain/diffusive_natural_xs_03312022.nc and /dev/null differ diff --git a/test/LowerColorado_TX/domain/lcra_refac_diffusive_natural_xs_042122.nc b/test/LowerColorado_TX/domain/lcra_refac_diffusive_natural_xs_042122.nc deleted file mode 100644 index eac2e8eb6..000000000 Binary files a/test/LowerColorado_TX/domain/lcra_refac_diffusive_natural_xs_042122.nc and /dev/null differ diff --git a/test/LowerColorado_TX/domain/lcra_refactored_diffusive_domain_042122.yaml b/test/LowerColorado_TX/domain/lcra_refactored_diffusive_domain_042122.yaml deleted file mode 100644 index 835293cbb..000000000 --- a/test/LowerColorado_TX/domain/lcra_refactored_diffusive_domain_042122.yaml +++ /dev/null @@ -1,924 +0,0 @@ -3766334: - gages: - 1180009082: 08158000 - 1180010786: 08159500 - 1180010806: 08159200 - 1180012573: 08161000 - 1180012574: 08161000 - 1180012577: 08160400 - 1180012578: 08160400 - 1180012579: 08162500 - 1180012580: 08162500 - 1180012581: 08162000 - 1180012582: 08162000 - gages_xwalk: - 3764246: 1180012582 - 3765768: 1180012580 - 5781917: 1180009082 - 5790058: 1180010786 - 5790218: 1180010806 - 5791848: 1180012578 - 5791934: 1180012574 - incoming_tribs: - 3763128: 1180011093 - 3763136: 1180011091 - 3763138: 1180011088 - 3763146: 1180011089 - 3763152: 1180011087 - 3763156: 1180011084 - 3763168: 1180011083 - 3764150: 1180011079 - 3764154: 1180011029 - 3764160: 1180011078 - 3764164: 1180011077 - 3764166: 1180011076 - 3764202: 1180011074 - 3764204: 1180011072 - 3764212: 1180011068 - 3764214: 1180011071 - 3764218: 1180011064 - 3764220: 1180011069 - 3764222: 1180011031 - 3764224: 1180011065 - 3764226: 1180011057 - 3764236: 1180011051 - 3764250: 1180011058 - 3764252: 1180011051 - 3764262: 1180011053 - 3764264: 1180011050 - 3764266: 1180011049 - 3764274: 1180011046 - 3764276: 1180011047 - 3764278: 1180011044 - 3764298: 1180011033 - 3764300: 1180011043 - 3764302: 1180011034 - 3764304: 1180010994 - 3764306: 1180010995 - 3764308: 1180011062 - 3764310: 1180011060 - 3764312: 1180011063 - 3765734: 1180011009 - 3765738: 1180011036 - 3765744: 1180011041 - 3765746: 1180012579 - 3765752: 1180011038 - 3765766: 1180011007 - 3765772: 1180011008 - 3765776: 1180011027 - 3765788: 1180011037 - 3766352: 1180011020 - 3766358: 1180011022 - 3766366: 1180011022 - 3766374: 1180011025 - 3766390: 1180011024 - 5781329: 1180009083 - 5781897: 1180009480 - 5781925: 1180009482 - 5781931: 1180010721 - 5781961: 1180009082 - 5781965: 1180009483 - 5790042: 1180010782 - 5790136: 1180010827 - 5790138: 1180010826 - 5790140: 1180010819 - 5790142: 1180010808 - 5790144: 1180010825 - 5790146: 1180010813 - 5790156: 1180010806 - 5790160: 1180010803 - 5790162: 1180010799 - 5790168: 1180010793 - 5790170: 1180010797 - 5790174: 1180010068 - 5790176: 1180010740 - 5790178: 1180010795 - 5790184: 1180010718 - 5790190: 1180010741 - 5790192: 1180010067 - 5790196: 1180010735 - 5790198: 1180010064 - 5790202: 1180010742 - 5790206: 1180010786 - 5790210: 1180010786 - 5790214: 1180010744 - 5790226: 1180010830 - 5790232: 1180010831 - 5791190: 1180010779 - 5791192: 1180010048 - 5791196: 1180010060 - 5791200: 1180010060 - 5791202: 1180010061 - 5791204: 1180010061 - 5791206: 1180010062 - 5791824: 1180010778 - 5791826: 1180010774 - 5791832: 1180010772 - 5791842: 1180010775 - 5791844: 1180010775 - 5791850: 1180010768 - 5791852: 1180010769 - 5791862: 1180012578 - 5791866: 1180010767 - 5791870: 1180010766 - 5791876: 1180010765 - 5791882: 1180010763 - 5791884: 1180010762 - 5791890: 1180010759 - 5791892: 1180010760 - 5791900: 1180010758 - 5791902: 1180010757 - 5791906: 1180010754 - 5791914: 1180010754 - 5791920: 1180010752 - 5791922: 1180010749 - 5791936: 1180012573 - 5791938: 1180010750 - lengthMap: - 1180009082: '5781917.1' - 1180009083: '5781919.1' - 1180009480: '5781901.1' - 1180009481: '5781963.1' - 1180009482: '5781929.1' - 1180009483: '5781923.1' - 1180010048: '5791182.1' - 1180010060: 5791186.1,5791180.1,5791184.1 - 1180010061: 5791176.1,5791198.1 - 1180010062: '5791178.1' - 1180010063: '5790050.1' - 1180010064: 5790200.1,5790052.1 - 1180010066: '5790070.1' - 1180010067: 5790072.1,5790074.1 - 1180010068: 5790068.1,5793586.1 - 1180010717: '5790044.1' - 1180010718: '5790186.1' - 1180010719: '5790048.1' - 1180010720: '5790046.1' - 1180010721: 5790024.1,5789878.1 - 1180010735: 5790062.1,5790208.1,5790212.1 - 1180010736: 5790032.1,5790216.1 - 1180010737: 5790086.1,5790084.1 - 1180010738: '5790088.1' - 1180010739: '5790188.1' - 1180010740: '5790090.1' - 1180010741: '5790080.1' - 1180010742: 5790204.1,5790078.1 - 1180010743: 5790194.1,5790076.1 - 1180010744: 5790028.1,5790030.1,5790082.1 - 1180010749: 5791930.1,5791932.1 - 1180010750: '5791928.1' - 1180010751: '5791926.1' - 1180010752: '5791942.1' - 1180010753: '5791940.1' - 1180010754: '5791916.1' - 1180010755: '5791918.1' - 1180010756: 5791912.1,5791910.1 - 1180010757: '5791908.1' - 1180010758: '5791904.1' - 1180010759: '5791898.1' - 1180010760: '5791896.1' - 1180010761: '5791894.1' - 1180010762: '5791888.1' - 1180010763: '5791886.1' - 1180010764: '5791880.1' - 1180010765: '5791878.1' - 1180010766: '5791874.1' - 1180010767: '5791872.1' - 1180010768: 5791860.1,5791858.1 - 1180010769: '5791856.1' - 1180010770: '5791854.1' - 1180010772: '5791846.1' - 1180010773: 5791834.1,5791838.1 - 1180010774: '5791836.1' - 1180010775: '5791840.1' - 1180010778: '5791830.1' - 1180010779: 5793584.1,5791188.1 - 1180010780: '5791828.1' - 1180010782: '5790040.1' - 1180010784: '5791174.1' - 1180010785: 5790038.1,5793582.1,5790036.1 - 1180010786: 5790060.1,5790058.1 - 1180010788: 5790054.1,5790056.1 - 1180010790: '5790066.1' - 1180010791: '5790064.1' - 1180010792: '5793592.1' - 1180010793: '5790096.1' - 1180010794: '5790092.1' - 1180010795: 5790182.1,5790180.1 - 1180010796: '5790094.1' - 1180010797: 5790108.1,5790098.1 - 1180010798: '5790166.1' - 1180010799: '5790102.1' - 1180010800: '5790100.1' - 1180010801: '5790172.1' - 1180010802: '5790104.1' - 1180010803: '5790106.1' - 1180010805: '5790164.1' - 1180010806: 5790218.1,5790034.1 - 1180010807: '5790110.1' - 1180010808: '5790112.1' - 1180010809: '5790158.1' - 1180010810: '5793618.1' - 1180010813: '5790114.1' - 1180010814: '5790220.1' - 1180010817: '5790148.1' - 1180010818: '5790124.1' - 1180010819: '5790154.1' - 1180010820: '5790118.1' - 1180010821: '5790120.1' - 1180010822: '5790122.1' - 1180010823: '5790116.1' - 1180010824: '5790126.1' - 1180010825: '5790230.1' - 1180010826: 5790228.1,5793588.1 - 1180010827: '5790132.1' - 1180010828: '5790128.1' - 1180010829: '5790152.1' - 1180010830: '5790130.1' - 1180010831: 5790134.1,5790150.1,5790026.1 - 1180010994: '3764288.1' - 1180010995: '3764296.1' - 1180010996: 3766380.1,3765764.1,3766382.1 - 1180010997: '3765756.1' - 1180010999: 3765796.1,3765798.1,3765794.1 - 1180011000: '3766370.1' - 1180011001: 3766384.1,3766386.1 - 1180011007: '3765770.1' - 1180011008: '3765774.1' - 1180011009: '3765792.1' - 1180011010: '3766354.1' - 1180011013: 3766336.1,3766334.1,3766324.1 - 1180011018: '3765800.1' - 1180011019: 3766360.1,3766362.1 - 1180011020: '3766356.1' - 1180011022: '3766368.1' - 1180011024: '3766372.1' - 1180011025: '3766378.1' - 1180011026: '3766376.1' - 1180011027: 3765750.1,3765780.1 - 1180011028: '3765748.1' - 1180011029: '3764156.1' - 1180011030: '3764158.1' - 1180011031: '3764198.1' - 1180011032: '3764314.1' - 1180011033: '3764286.1' - 1180011034: '3764290.1' - 1180011036: 3765786.1,3765740.1 - 1180011037: '3765742.1' - 1180011038: 3765784.1,3765782.1 - 1180011039: '3765732.1' - 1180011040: '3765758.1' - 1180011041: '3765790.1' - 1180011042: '3764292.1' - 1180011043: '3764294.1' - 1180011044: '3764282.1' - 1180011045: '3764284.1' - 1180011046: '3764272.1' - 1180011047: '3764280.1' - 1180011048: '3764270.1' - 1180011049: '3764268.1' - 1180011050: '3764260.1' - 1180011051: 3764238.1,3764254.1 - 1180011052: '3764256.1' - 1180011053: '3764258.1' - 1180011054: 3764242.1,3764234.1 - 1180011055: '3764240.1' - 1180011056: '3764244.1' - 1180011057: '3764248.1' - 1180011058: 3764232.1,3764230.1 - 1180011059: '3764228.1' - 1180011060: '3766986.1' - 1180011062: '3767012.1' - 1180011063: 3767010.1,3764200.1 - 1180011064: '3764188.1' - 1180011065: '3764196.1' - 1180011067: '3764190.1' - 1180011068: 3764182.1,3764184.1,3764186.1 - 1180011069: '3764192.1' - 1180011070: '3764194.1' - 1180011071: '3764180.1' - 1180011072: '3764176.1' - 1180011073: '3764178.1' - 1180011074: '3764170.1' - 1180011075: '3764172.1' - 1180011076: '3764174.1' - 1180011077: '3764168.1' - 1180011078: '3764162.1' - 1180011079: '3764152.1' - 1180011081: '3764148.1' - 1180011082: '3763166.1' - 1180011083: 3763160.1,3763164.1 - 1180011084: '3763162.1' - 1180011085: '3763158.1' - 1180011087: '3763154.1' - 1180011088: 3763142.1,3763144.1 - 1180011089: '3763148.1' - 1180011090: '3763150.1' - 1180011091: '3763140.1' - 1180011092: '3763130.1' - 1180011093: '3763134.1' - 1180011094: '3763132.1' - 1180012573: '5791934.0798' - 1180012574: '5791934.0202' - 1180012575: '5791924.053' - 1180012576: '5791924.0471' - 1180012577: '5791848.0251' - 1180012578: 5791848.0749,5791864.1 - 1180012579: '3765768.0229' - 1180012580: '3765768.0771' - 1180012581: '3764246.0272' - 1180012582: '3764246.0729' - refac_tw: 1180011013 - rlink_reindex: - 1180009082: 5781917 - 1180009083: 5781919 - 1180009480: 5781901 - 1180009481: 5781963 - 1180009482: 5781929 - 1180009483: 5781923 - 1180010048: 5791182 - 1180010060: 5791184 - 1180010061: 5791198 - 1180010062: 5791178 - 1180010063: 5790050 - 1180010064: 5790052 - 1180010066: 5790070 - 1180010067: 5790074 - 1180010068: 5793586 - 1180010717: 5790044 - 1180010718: 5790186 - 1180010719: 5790048 - 1180010720: 5790046 - 1180010721: 5789878 - 1180010735: 5790212 - 1180010736: 5790216 - 1180010737: 5790084 - 1180010738: 5790088 - 1180010739: 5790188 - 1180010740: 5790090 - 1180010741: 5790080 - 1180010742: 5790078 - 1180010743: 5790076 - 1180010744: 5790082 - 1180010749: 5791932 - 1180010750: 5791928 - 1180010751: 5791926 - 1180010752: 5791942 - 1180010753: 5791940 - 1180010754: 5791916 - 1180010755: 5791918 - 1180010756: 5791910 - 1180010757: 5791908 - 1180010758: 5791904 - 1180010759: 5791898 - 1180010760: 5791896 - 1180010761: 5791894 - 1180010762: 5791888 - 1180010763: 5791886 - 1180010764: 5791880 - 1180010765: 5791878 - 1180010766: 5791874 - 1180010767: 5791872 - 1180010768: 5791858 - 1180010769: 5791856 - 1180010770: 5791854 - 1180010772: 5791846 - 1180010773: 5791838 - 1180010774: 5791836 - 1180010775: 5791840 - 1180010778: 5791830 - 1180010779: 5791188 - 1180010780: 5791828 - 1180010782: 5790040 - 1180010784: 5791174 - 1180010785: 5790036 - 1180010786: 5790058 - 1180010788: 5790056 - 1180010790: 5790066 - 1180010791: 5790064 - 1180010792: 5793592 - 1180010793: 5790096 - 1180010794: 5790092 - 1180010795: 5790180 - 1180010796: 5790094 - 1180010797: 5790098 - 1180010798: 5790166 - 1180010799: 5790102 - 1180010800: 5790100 - 1180010801: 5790172 - 1180010802: 5790104 - 1180010803: 5790106 - 1180010805: 5790164 - 1180010806: 5790034 - 1180010807: 5790110 - 1180010808: 5790112 - 1180010809: 5790158 - 1180010810: 5793618 - 1180010813: 5790114 - 1180010814: 5790220 - 1180010817: 5790148 - 1180010818: 5790124 - 1180010819: 5790154 - 1180010820: 5790118 - 1180010821: 5790120 - 1180010822: 5790122 - 1180010823: 5790116 - 1180010824: 5790126 - 1180010825: 5790230 - 1180010826: 5793588 - 1180010827: 5790132 - 1180010828: 5790128 - 1180010829: 5790152 - 1180010830: 5790130 - 1180010831: 5790026 - 1180010994: 3764288 - 1180010995: 3764296 - 1180010996: 3766382 - 1180010997: 3765756 - 1180010999: 3765794 - 1180011000: 3766370 - 1180011001: 3766386 - 1180011007: 3765770 - 1180011008: 3765774 - 1180011009: 3765792 - 1180011010: 3766354 - 1180011013: 3766334 - 1180011018: 3765800 - 1180011019: 3766362 - 1180011020: 3766356 - 1180011022: 3766368 - 1180011024: 3766372 - 1180011025: 3766378 - 1180011026: 3766376 - 1180011027: 3765780 - 1180011028: 3765748 - 1180011029: 3764156 - 1180011030: 3764158 - 1180011031: 3764198 - 1180011032: 3764314 - 1180011033: 3764286 - 1180011034: 3764290 - 1180011036: 3765740 - 1180011037: 3765742 - 1180011038: 3765782 - 1180011039: 3765732 - 1180011040: 3765758 - 1180011041: 3765790 - 1180011042: 3764292 - 1180011043: 3764294 - 1180011044: 3764282 - 1180011045: 3764284 - 1180011046: 3764272 - 1180011047: 3764280 - 1180011048: 3764270 - 1180011049: 3764268 - 1180011050: 3764260 - 1180011051: 3764254 - 1180011052: 3764256 - 1180011053: 3764258 - 1180011054: 3764234 - 1180011055: 3764240 - 1180011056: 3764244 - 1180011057: 3764248 - 1180011058: 3764230 - 1180011059: 3764228 - 1180011060: 3766986 - 1180011062: 3767012 - 1180011063: 3764200 - 1180011064: 3764188 - 1180011065: 3764196 - 1180011067: 3764190 - 1180011068: 3764186 - 1180011069: 3764192 - 1180011070: 3764194 - 1180011071: 3764180 - 1180011072: 3764176 - 1180011073: 3764178 - 1180011074: 3764170 - 1180011075: 3764172 - 1180011076: 3764174 - 1180011077: 3764168 - 1180011078: 3764162 - 1180011079: 3764152 - 1180011081: 3764148 - 1180011082: 3763166 - 1180011083: 3763164 - 1180011084: 3763162 - 1180011085: 3763158 - 1180011087: 3763154 - 1180011088: 3763144 - 1180011089: 3763148 - 1180011090: 3763150 - 1180011091: 3763140 - 1180011092: 3763130 - 1180011093: 3763134 - 1180011094: 3763132 - 1180012573: 5791934 - 1180012574: 5791934 - 1180012575: 5791924 - 1180012576: 5791924 - 1180012577: 5791848 - 1180012578: 5791864 - 1180012579: 3765768 - 1180012580: 3765768 - 1180012581: 3764246 - 1180012582: 3764246 - rlinks: - - 1180009082 - - 1180009083 - - 1180009480 - - 1180009481 - - 1180009482 - - 1180009483 - - 1180010048 - - 1180010060 - - 1180010061 - - 1180010062 - - 1180010063 - - 1180010064 - - 1180010066 - - 1180010067 - - 1180010068 - - 1180010717 - - 1180010718 - - 1180010719 - - 1180010720 - - 1180010721 - - 1180010735 - - 1180010736 - - 1180010737 - - 1180010738 - - 1180010739 - - 1180010740 - - 1180010741 - - 1180010742 - - 1180010743 - - 1180010744 - - 1180010749 - - 1180010750 - - 1180010751 - - 1180010752 - - 1180010753 - - 1180010754 - - 1180010755 - - 1180010756 - - 1180010757 - - 1180010758 - - 1180010759 - - 1180010760 - - 1180010761 - - 1180010762 - - 1180010763 - - 1180010764 - - 1180010765 - - 1180010766 - - 1180010767 - - 1180010768 - - 1180010769 - - 1180010770 - - 1180010772 - - 1180010773 - - 1180010774 - - 1180010775 - - 1180010778 - - 1180010779 - - 1180010780 - - 1180010782 - - 1180010784 - - 1180010785 - - 1180010786 - - 1180010788 - - 1180010790 - - 1180010791 - - 1180010792 - - 1180010793 - - 1180010794 - - 1180010795 - - 1180010796 - - 1180010797 - - 1180010798 - - 1180010799 - - 1180010800 - - 1180010801 - - 1180010802 - - 1180010803 - - 1180010805 - - 1180010806 - - 1180010807 - - 1180010808 - - 1180010809 - - 1180010810 - - 1180010813 - - 1180010814 - - 1180010817 - - 1180010818 - - 1180010819 - - 1180010820 - - 1180010821 - - 1180010822 - - 1180010823 - - 1180010824 - - 1180010825 - - 1180010826 - - 1180010827 - - 1180010828 - - 1180010829 - - 1180010830 - - 1180010831 - - 1180010994 - - 1180010995 - - 1180010996 - - 1180010997 - - 1180010999 - - 1180011000 - - 1180011001 - - 1180011007 - - 1180011008 - - 1180011009 - - 1180011010 - - 1180011013 - - 1180011018 - - 1180011019 - - 1180011020 - - 1180011022 - - 1180011024 - - 1180011025 - - 1180011026 - - 1180011027 - - 1180011028 - - 1180011029 - - 1180011030 - - 1180011031 - - 1180011032 - - 1180011033 - - 1180011034 - - 1180011036 - - 1180011037 - - 1180011038 - - 1180011039 - - 1180011040 - - 1180011041 - - 1180011042 - - 1180011043 - - 1180011044 - - 1180011045 - - 1180011046 - - 1180011047 - - 1180011048 - - 1180011049 - - 1180011050 - - 1180011051 - - 1180011052 - - 1180011053 - - 1180011054 - - 1180011055 - - 1180011056 - - 1180011057 - - 1180011058 - - 1180011059 - - 1180011060 - - 1180011062 - - 1180011063 - - 1180011064 - - 1180011065 - - 1180011067 - - 1180011068 - - 1180011069 - - 1180011070 - - 1180011071 - - 1180011072 - - 1180011073 - - 1180011074 - - 1180011075 - - 1180011076 - - 1180011077 - - 1180011078 - - 1180011079 - - 1180011081 - - 1180011082 - - 1180011083 - - 1180011084 - - 1180011085 - - 1180011087 - - 1180011088 - - 1180011089 - - 1180011090 - - 1180011091 - - 1180011092 - - 1180011093 - - 1180011094 - - 1180012573 - - 1180012574 - - 1180012575 - - 1180012576 - - 1180012577 - - 1180012578 - - 1180012579 - - 1180012580 - - 1180012581 - - 1180012582 - upstream_xwalk: - 3763130: 1180011092 - 3763132: 1180011094 - 3763134: 1180011093 - 3763140: 1180011091 - 3763142: 1180011088 - 3763144: 1180011088 - 3763148: 1180011089 - 3763150: 1180011090 - 3763154: 1180011087 - 3763158: 1180011085 - 3763160: 1180011083 - 3763162: 1180011084 - 3763164: 1180011083 - 3763166: 1180011082 - 3764148: 1180011081 - 3764152: 1180011079 - 3764156: 1180011029 - 3764158: 1180011030 - 3764162: 1180011078 - 3764168: 1180011077 - 3764170: 1180011074 - 3764172: 1180011075 - 3764174: 1180011076 - 3764176: 1180011072 - 3764178: 1180011073 - 3764180: 1180011071 - 3764182: 1180011068 - 3764186: 1180011068 - 3764188: 1180011064 - 3764190: 1180011067 - 3764192: 1180011069 - 3764194: 1180011070 - 3764196: 1180011065 - 3764198: 1180011031 - 3764200: 1180011063 - 3764228: 1180011059 - 3764232: 1180011058 - 3764238: 1180011051 - 3764240: 1180011055 - 3764242: 1180011054 - 3764244: 1180011056 - 3764246: 1180012581 - 3764248: 1180011057 - 3764256: 1180011052 - 3764258: 1180011053 - 3764260: 1180011050 - 3764268: 1180011049 - 3764270: 1180011048 - 3764272: 1180011046 - 3764280: 1180011047 - 3764282: 1180011044 - 3764284: 1180011045 - 3764286: 1180011033 - 3764288: 1180010994 - 3764290: 1180011034 - 3764292: 1180011042 - 3764294: 1180011043 - 3764296: 1180010995 - 3764314: 1180011032 - 3765732: 1180011039 - 3765740: 1180011036 - 3765742: 1180011037 - 3765748: 1180011028 - 3765756: 1180010997 - 3765758: 1180011040 - 3765768: 1180012579 - 3765770: 1180011007 - 3765774: 1180011008 - 3765780: 1180011027 - 3765782: 1180011038 - 3765790: 1180011041 - 3765792: 1180011009 - 3765794: 1180010999 - 3765800: 1180011018 - 3766334: 1180011013 - 3766354: 1180011010 - 3766356: 1180011020 - 3766360: 1180011019 - 3766368: 1180011022 - 3766370: 1180011000 - 3766372: 1180011024 - 3766376: 1180011026 - 3766378: 1180011025 - 3766380: 1180010996 - 3766384: 1180011001 - 3766986: 1180011060 - 3767010: 1180011063 - 3767012: 1180011062 - 5781901: 1180009480 - 5781917: 1180009082 - 5781919: 1180009083 - 5781923: 1180009483 - 5781929: 1180009482 - 5781963: 1180009481 - 5789878: 1180010721 - 5790024: 1180010721 - 5790026: 1180010831 - 5790028: 1180010744 - 5790032: 1180010736 - 5790034: 1180010806 - 5790036: 1180010785 - 5790038: 1180010785 - 5790040: 1180010782 - 5790044: 1180010717 - 5790046: 1180010720 - 5790048: 1180010719 - 5790050: 1180010063 - 5790054: 1180010788 - 5790056: 1180010788 - 5790060: 1180010786 - 5790062: 1180010735 - 5790064: 1180010791 - 5790066: 1180010790 - 5790068: 1180010068 - 5790070: 1180010066 - 5790072: 1180010067 - 5790074: 1180010067 - 5790076: 1180010743 - 5790080: 1180010741 - 5790086: 1180010737 - 5790088: 1180010738 - 5790090: 1180010740 - 5790092: 1180010794 - 5790094: 1180010796 - 5790096: 1180010793 - 5790100: 1180010800 - 5790102: 1180010799 - 5790104: 1180010802 - 5790106: 1180010803 - 5790108: 1180010797 - 5790110: 1180010807 - 5790112: 1180010808 - 5790114: 1180010813 - 5790116: 1180010823 - 5790118: 1180010820 - 5790120: 1180010821 - 5790122: 1180010822 - 5790124: 1180010818 - 5790126: 1180010824 - 5790128: 1180010828 - 5790130: 1180010830 - 5790132: 1180010827 - 5790134: 1180010831 - 5790148: 1180010817 - 5790152: 1180010829 - 5790154: 1180010819 - 5790158: 1180010809 - 5790164: 1180010805 - 5790166: 1180010798 - 5790172: 1180010801 - 5790180: 1180010795 - 5790182: 1180010795 - 5790186: 1180010718 - 5790188: 1180010739 - 5790200: 1180010064 - 5790204: 1180010742 - 5790218: 1180010806 - 5790220: 1180010814 - 5790230: 1180010825 - 5791174: 1180010784 - 5791176: 1180010061 - 5791178: 1180010062 - 5791182: 1180010048 - 5791184: 1180010060 - 5791186: 1180010060 - 5791188: 1180010779 - 5791198: 1180010061 - 5791828: 1180010780 - 5791830: 1180010778 - 5791834: 1180010773 - 5791836: 1180010774 - 5791840: 1180010775 - 5791846: 1180010772 - 5791848: 1180012577 - 5791854: 1180010770 - 5791856: 1180010769 - 5791858: 1180010768 - 5791864: 1180012578 - 5791872: 1180010767 - 5791874: 1180010766 - 5791878: 1180010765 - 5791880: 1180010764 - 5791886: 1180010763 - 5791888: 1180010762 - 5791894: 1180010761 - 5791896: 1180010760 - 5791898: 1180010759 - 5791904: 1180010758 - 5791908: 1180010757 - 5791910: 1180010756 - 5791916: 1180010754 - 5791918: 1180010755 - 5791924: 1180012575 - 5791926: 1180010751 - 5791928: 1180010750 - 5791930: 1180010749 - 5791932: 1180010749 - 5791934: 1180012573 - 5791940: 1180010753 - 5791942: 1180010752 - 5793586: 1180010068 - 5793588: 1180010826 - 5793592: 1180010792 - 5793618: 1180010810 diff --git a/test/LowerColorado_TX/domain/refactored_coastal_domain_subset.yaml b/test/LowerColorado_TX/domain/refactored_coastal_domain_subset.yaml new file mode 100644 index 000000000..a4cdc96c9 --- /dev/null +++ b/test/LowerColorado_TX/domain/refactored_coastal_domain_subset.yaml @@ -0,0 +1,1167 @@ +3766342: + gages: + 1180105606: 08158000 + 1180107310: 08159500 + 1180107330: 08159200 + 1180109097: 08161000 + 1180109098: 08161000 + 1180109101: 08160400 + 1180109102: 08160400 + 1180109103: 08162500 + 1180109104: 08162500 + 1180109105: 08162000 + 1180109106: 08162000 + gages_xwalk: + 3764246: 1180109106 + 3765768: 1180109104 + 5781917: 1180105606 + 5790058: 1180107310 + 5790218: 1180107330 + 5791848: 1180109102 + 5791934: 1180109098 + incoming_tribs: + 3763128: 1180107617 + 3763136: 1180107615 + 3763138: 1180107612 + 3763146: 1180107613 + 3763152: 1180107611 + 3763156: 1180107608 + 3763168: 1180107607 + 3764150: 1180107603 + 3764154: 1180107553 + 3764160: 1180107602 + 3764164: 1180107601 + 3764166: 1180107600 + 3764202: 1180107598 + 3764204: 1180107596 + 3764212: 1180107592 + 3764214: 1180107595 + 3764218: 1180107588 + 3764220: 1180107593 + 3764222: 1180107555 + 3764224: 1180107589 + 3764226: 1180107581 + 3764236: 1180107575 + 3764250: 1180107582 + 3764252: 1180107575 + 3764262: 1180107577 + 3764264: 1180107574 + 3764266: 1180107573 + 3764274: 1180107570 + 3764276: 1180107571 + 3764278: 1180107568 + 3764298: 1180107557 + 3764300: 1180107567 + 3764302: 1180107558 + 3764304: 1180107518 + 3764306: 1180107519 + 3764308: 1180107586 + 3764310: 1180107584 + 3764312: 1180107587 + 3765734: 1180107533 + 3765738: 1180107560 + 3765744: 1180107565 + 3765746: 1180109103 + 3765752: 1180107562 + 3765766: 1180107531 + 3765772: 1180107532 + 3765776: 1180107551 + 3765788: 1180107561 + 3766322: 1180107541 + 3766352: 1180107544 + 3766358: 1180107546 + 3766366: 1180107546 + 3766374: 1180107549 + 3766390: 1180107548 + 5781329: 1180105607 + 5781897: 1180106004 + 5781925: 1180106006 + 5781931: 1180107245 + 5781961: 1180105606 + 5781965: 1180106007 + 5790042: 1180107306 + 5790136: 1180107351 + 5790138: 1180107350 + 5790140: 1180107343 + 5790142: 1180107332 + 5790144: 1180107349 + 5790146: 1180107337 + 5790156: 1180107330 + 5790160: 1180107327 + 5790162: 1180107323 + 5790168: 1180107317 + 5790170: 1180107321 + 5790174: 1180106592 + 5790176: 1180107264 + 5790178: 1180107319 + 5790184: 1180107242 + 5790190: 1180107265 + 5790192: 1180106591 + 5790196: 1180107259 + 5790198: 1180106588 + 5790202: 1180107266 + 5790206: 1180107310 + 5790210: 1180107310 + 5790214: 1180107268 + 5790226: 1180107354 + 5790232: 1180107355 + 5791190: 1180107303 + 5791192: 1180106572 + 5791196: 1180106584 + 5791200: 1180106584 + 5791202: 1180106585 + 5791204: 1180106585 + 5791206: 1180106586 + 5791824: 1180107302 + 5791826: 1180107298 + 5791832: 1180107296 + 5791842: 1180107299 + 5791844: 1180107299 + 5791850: 1180107292 + 5791852: 1180107293 + 5791862: 1180109102 + 5791866: 1180107291 + 5791870: 1180107290 + 5791876: 1180107289 + 5791882: 1180107287 + 5791884: 1180107286 + 5791890: 1180107283 + 5791892: 1180107284 + 5791900: 1180107282 + 5791902: 1180107281 + 5791906: 1180107278 + 5791914: 1180107278 + 5791920: 1180107276 + 5791922: 1180107273 + 5791936: 1180109097 + 5791938: 1180107274 + lengthMap: + 1180105606: '5781917.1' + 1180105607: '5781919.1' + 1180106004: '5781901.1' + 1180106005: '5781963.1' + 1180106006: '5781929.1' + 1180106007: '5781923.1' + 1180106572: '5791182.1' + 1180106584: 5791186.1,5791180.1,5791184.1 + 1180106585: 5791176.1,5791198.1 + 1180106586: '5791178.1' + 1180106587: '5790050.1' + 1180106588: 5790200.1,5790052.1 + 1180106590: '5790070.1' + 1180106591: 5790072.1,5790074.1 + 1180106592: 5790068.1,5793586.1 + 1180107241: '5790044.1' + 1180107242: '5790186.1' + 1180107243: '5790048.1' + 1180107244: '5790046.1' + 1180107245: 5790024.1,5789878.1 + 1180107259: 5790062.1,5790208.1,5790212.1 + 1180107260: 5790032.1,5790216.1 + 1180107261: 5790086.1,5790084.1 + 1180107262: '5790088.1' + 1180107263: '5790188.1' + 1180107264: '5790090.1' + 1180107265: '5790080.1' + 1180107266: 5790204.1,5790078.1 + 1180107267: 5790194.1,5790076.1 + 1180107268: 5790028.1,5790030.1,5790082.1 + 1180107273: 5791930.1,5791932.1 + 1180107274: '5791928.1' + 1180107275: '5791926.1' + 1180107276: '5791942.1' + 1180107277: '5791940.1' + 1180107278: '5791916.1' + 1180107279: '5791918.1' + 1180107280: 5791912.1,5791910.1 + 1180107281: '5791908.1' + 1180107282: '5791904.1' + 1180107283: '5791898.1' + 1180107284: '5791896.1' + 1180107285: '5791894.1' + 1180107286: '5791888.1' + 1180107287: '5791886.1' + 1180107288: '5791880.1' + 1180107289: '5791878.1' + 1180107290: '5791874.1' + 1180107291: '5791872.1' + 1180107292: 5791860.1,5791858.1 + 1180107293: '5791856.1' + 1180107294: '5791854.1' + 1180107296: '5791846.1' + 1180107297: 5791834.1,5791838.1 + 1180107298: '5791836.1' + 1180107299: '5791840.1' + 1180107302: '5791830.1' + 1180107303: 5793584.1,5791188.1 + 1180107304: '5791828.1' + 1180107306: '5790040.1' + 1180107308: '5791174.1' + 1180107309: 5790038.1,5793582.1,5790036.1 + 1180107310: 5790060.1,5790058.1 + 1180107312: 5790054.1,5790056.1 + 1180107314: '5790066.1' + 1180107315: '5790064.1' + 1180107316: '5793592.1' + 1180107317: '5790096.1' + 1180107318: '5790092.1' + 1180107319: 5790182.1,5790180.1 + 1180107320: '5790094.1' + 1180107321: 5790108.1,5790098.1 + 1180107322: '5790166.1' + 1180107323: '5790102.1' + 1180107324: '5790100.1' + 1180107325: '5790172.1' + 1180107326: '5790104.1' + 1180107327: '5790106.1' + 1180107329: '5790164.1' + 1180107330: 5790218.1,5790034.1 + 1180107331: '5790110.1' + 1180107332: '5790112.1' + 1180107333: '5790158.1' + 1180107334: '5793618.1' + 1180107337: '5790114.1' + 1180107338: '5790220.1' + 1180107341: '5790148.1' + 1180107342: '5790124.1' + 1180107343: '5790154.1' + 1180107344: '5790118.1' + 1180107345: '5790120.1' + 1180107346: '5790122.1' + 1180107347: '5790116.1' + 1180107348: '5790126.1' + 1180107349: '5790230.1' + 1180107350: 5790228.1,5793588.1 + 1180107351: '5790132.1' + 1180107352: '5790128.1' + 1180107353: '5790152.1' + 1180107354: '5790130.1' + 1180107355: 5790134.1,5790150.1,5790026.1 + 1180107518: '3764288.1' + 1180107519: '3764296.1' + 1180107520: 3766380.1,3765764.1,3766382.1 + 1180107521: '3765756.1' + 1180107523: 3765796.1,3765798.1,3765794.1 + 1180107524: '3766370.1' + 1180107525: 3766384.1,3766386.1 + 1180107531: '3765770.1' + 1180107532: '3765774.1' + 1180107533: '3765792.1' + 1180107534: '3766354.1' + 1180107537: 3766336.1,3766334.1,3766324.1 + 1180107539: 3766346.1,3766342.1 + 1180107540: '3766348.1' + 1180107541: 3766330.1,3766332.1,3766326.1 + 1180107542: '3765800.1' + 1180107543: 3766360.1,3766362.1 + 1180107544: '3766356.1' + 1180107546: '3766368.1' + 1180107548: '3766372.1' + 1180107549: '3766378.1' + 1180107550: '3766376.1' + 1180107551: 3765750.1,3765780.1 + 1180107552: '3765748.1' + 1180107553: '3764156.1' + 1180107554: '3764158.1' + 1180107555: '3764198.1' + 1180107556: '3764314.1' + 1180107557: '3764286.1' + 1180107558: '3764290.1' + 1180107560: 3765786.1,3765740.1 + 1180107561: '3765742.1' + 1180107562: 3765784.1,3765782.1 + 1180107563: '3765732.1' + 1180107564: '3765758.1' + 1180107565: '3765790.1' + 1180107566: '3764292.1' + 1180107567: '3764294.1' + 1180107568: '3764282.1' + 1180107569: '3764284.1' + 1180107570: '3764272.1' + 1180107571: '3764280.1' + 1180107572: '3764270.1' + 1180107573: '3764268.1' + 1180107574: '3764260.1' + 1180107575: 3764238.1,3764254.1 + 1180107576: '3764256.1' + 1180107577: '3764258.1' + 1180107578: 3764242.1,3764234.1 + 1180107579: '3764240.1' + 1180107580: '3764244.1' + 1180107581: '3764248.1' + 1180107582: 3764232.1,3764230.1 + 1180107583: '3764228.1' + 1180107584: '3766986.1' + 1180107586: '3767012.1' + 1180107587: 3767010.1,3764200.1 + 1180107588: '3764188.1' + 1180107589: '3764196.1' + 1180107591: '3764190.1' + 1180107592: 3764182.1,3764184.1,3764186.1 + 1180107593: '3764192.1' + 1180107594: '3764194.1' + 1180107595: '3764180.1' + 1180107596: '3764176.1' + 1180107597: '3764178.1' + 1180107598: '3764170.1' + 1180107599: '3764172.1' + 1180107600: '3764174.1' + 1180107601: '3764168.1' + 1180107602: '3764162.1' + 1180107603: '3764152.1' + 1180107605: '3764148.1' + 1180107606: '3763166.1' + 1180107607: 3763160.1,3763164.1 + 1180107608: '3763162.1' + 1180107609: '3763158.1' + 1180107611: '3763154.1' + 1180107612: 3763142.1,3763144.1 + 1180107613: '3763148.1' + 1180107614: '3763150.1' + 1180107615: '3763140.1' + 1180107616: '3763130.1' + 1180107617: '3763134.1' + 1180107618: '3763132.1' + 1180109097: '5791934.0798' + 1180109098: '5791934.0202' + 1180109099: '5791924.053' + 1180109100: '5791924.0471' + 1180109101: '5791848.0251' + 1180109102: 5791848.0749,5791864.1 + 1180109103: '3765768.0229' + 1180109104: '3765768.0771' + 1180109105: '3764246.0272' + 1180109106: '3764246.0729' + outputs_xwalk: + 3763130: 1180107616 + 3763132: 1180107618 + 3763134: 1180107617 + 3763140: 1180107615 + 3763142: 1180107612 + 3763144: 1180107612 + 3763148: 1180107613 + 3763150: 1180107614 + 3763154: 1180107611 + 3763158: 1180107609 + 3763160: 1180107607 + 3763162: 1180107608 + 3763164: 1180107607 + 3763166: 1180107606 + 3764148: 1180107605 + 3764152: 1180107603 + 3764156: 1180107553 + 3764158: 1180107554 + 3764162: 1180107602 + 3764168: 1180107601 + 3764170: 1180107598 + 3764172: 1180107599 + 3764174: 1180107600 + 3764176: 1180107596 + 3764178: 1180107597 + 3764180: 1180107595 + 3764182: 1180107592 + 3764184: 1180107592 + 3764186: 1180107592 + 3764188: 1180107588 + 3764190: 1180107591 + 3764192: 1180107593 + 3764194: 1180107594 + 3764196: 1180107589 + 3764198: 1180107555 + 3764200: 1180107587 + 3764228: 1180107583 + 3764230: 1180107582 + 3764232: 1180107582 + 3764234: 1180107578 + 3764238: 1180107575 + 3764240: 1180107579 + 3764242: 1180107578 + 3764244: 1180107580 + 3764246: 1180109106 + 3764248: 1180107581 + 3764254: 1180107575 + 3764256: 1180107576 + 3764258: 1180107577 + 3764260: 1180107574 + 3764268: 1180107573 + 3764270: 1180107572 + 3764272: 1180107570 + 3764280: 1180107571 + 3764282: 1180107568 + 3764284: 1180107569 + 3764286: 1180107557 + 3764288: 1180107518 + 3764290: 1180107558 + 3764292: 1180107566 + 3764294: 1180107567 + 3764296: 1180107519 + 3764314: 1180107556 + 3765732: 1180107563 + 3765740: 1180107560 + 3765742: 1180107561 + 3765748: 1180107552 + 3765750: 1180107551 + 3765756: 1180107521 + 3765758: 1180107564 + 3765764: 1180107520 + 3765768: 1180109104 + 3765770: 1180107531 + 3765774: 1180107532 + 3765780: 1180107551 + 3765782: 1180107562 + 3765784: 1180107562 + 3765786: 1180107560 + 3765790: 1180107565 + 3765792: 1180107533 + 3765794: 1180107523 + 3765796: 1180107523 + 3765798: 1180107523 + 3765800: 1180107542 + 3766324: 1180107537 + 3766326: 1180107541 + 3766330: 1180107541 + 3766332: 1180107541 + 3766334: 1180107537 + 3766336: 1180107537 + 3766342: 1180107539 + 3766346: 1180107539 + 3766348: 1180107540 + 3766354: 1180107534 + 3766356: 1180107544 + 3766360: 1180107543 + 3766362: 1180107543 + 3766368: 1180107546 + 3766370: 1180107524 + 3766372: 1180107548 + 3766376: 1180107550 + 3766378: 1180107549 + 3766380: 1180107520 + 3766382: 1180107520 + 3766384: 1180107525 + 3766386: 1180107525 + 3766986: 1180107584 + 3767010: 1180107587 + 3767012: 1180107586 + 5781901: 1180106004 + 5781917: 1180105606 + 5781919: 1180105607 + 5781923: 1180106007 + 5781929: 1180106006 + 5781963: 1180106005 + 5789878: 1180107245 + 5790024: 1180107245 + 5790026: 1180107355 + 5790028: 1180107268 + 5790030: 1180107268 + 5790032: 1180107260 + 5790034: 1180107330 + 5790036: 1180107309 + 5790038: 1180107309 + 5790040: 1180107306 + 5790044: 1180107241 + 5790046: 1180107244 + 5790048: 1180107243 + 5790050: 1180106587 + 5790052: 1180106588 + 5790054: 1180107312 + 5790056: 1180107312 + 5790058: 1180107310 + 5790060: 1180107310 + 5790062: 1180107259 + 5790064: 1180107315 + 5790066: 1180107314 + 5790068: 1180106592 + 5790070: 1180106590 + 5790072: 1180106591 + 5790074: 1180106591 + 5790076: 1180107267 + 5790078: 1180107266 + 5790080: 1180107265 + 5790082: 1180107268 + 5790084: 1180107261 + 5790086: 1180107261 + 5790088: 1180107262 + 5790090: 1180107264 + 5790092: 1180107318 + 5790094: 1180107320 + 5790096: 1180107317 + 5790098: 1180107321 + 5790100: 1180107324 + 5790102: 1180107323 + 5790104: 1180107326 + 5790106: 1180107327 + 5790108: 1180107321 + 5790110: 1180107331 + 5790112: 1180107332 + 5790114: 1180107337 + 5790116: 1180107347 + 5790118: 1180107344 + 5790120: 1180107345 + 5790122: 1180107346 + 5790124: 1180107342 + 5790126: 1180107348 + 5790128: 1180107352 + 5790130: 1180107354 + 5790132: 1180107351 + 5790134: 1180107355 + 5790148: 1180107341 + 5790150: 1180107355 + 5790152: 1180107353 + 5790154: 1180107343 + 5790158: 1180107333 + 5790164: 1180107329 + 5790166: 1180107322 + 5790172: 1180107325 + 5790180: 1180107319 + 5790182: 1180107319 + 5790186: 1180107242 + 5790188: 1180107263 + 5790194: 1180107267 + 5790200: 1180106588 + 5790204: 1180107266 + 5790208: 1180107259 + 5790212: 1180107259 + 5790216: 1180107260 + 5790218: 1180107330 + 5790220: 1180107338 + 5790228: 1180107350 + 5790230: 1180107349 + 5791174: 1180107308 + 5791176: 1180106585 + 5791178: 1180106586 + 5791180: 1180106584 + 5791182: 1180106572 + 5791184: 1180106584 + 5791186: 1180106584 + 5791188: 1180107303 + 5791198: 1180106585 + 5791828: 1180107304 + 5791830: 1180107302 + 5791834: 1180107297 + 5791836: 1180107298 + 5791838: 1180107297 + 5791840: 1180107299 + 5791846: 1180107296 + 5791848: 1180109102 + 5791854: 1180107294 + 5791856: 1180107293 + 5791858: 1180107292 + 5791860: 1180107292 + 5791864: 1180109102 + 5791872: 1180107291 + 5791874: 1180107290 + 5791878: 1180107289 + 5791880: 1180107288 + 5791886: 1180107287 + 5791888: 1180107286 + 5791894: 1180107285 + 5791896: 1180107284 + 5791898: 1180107283 + 5791904: 1180107282 + 5791908: 1180107281 + 5791910: 1180107280 + 5791912: 1180107280 + 5791916: 1180107278 + 5791918: 1180107279 + 5791924: 1180109100 + 5791926: 1180107275 + 5791928: 1180107274 + 5791930: 1180107273 + 5791932: 1180107273 + 5791934: 1180109098 + 5791940: 1180107277 + 5791942: 1180107276 + 5793582: 1180107309 + 5793584: 1180107303 + 5793586: 1180106592 + 5793588: 1180107350 + 5793592: 1180107316 + 5793618: 1180107334 + refac_tw: 1180107539 + rlink_reindex: + 1180105606: 5781917 + 1180105607: 5781919 + 1180106004: 5781901 + 1180106005: 5781963 + 1180106006: 5781929 + 1180106007: 5781923 + 1180106572: 5791182 + 1180106584: 5791184 + 1180106585: 5791198 + 1180106586: 5791178 + 1180106587: 5790050 + 1180106588: 5790052 + 1180106590: 5790070 + 1180106591: 5790074 + 1180106592: 5793586 + 1180107241: 5790044 + 1180107242: 5790186 + 1180107243: 5790048 + 1180107244: 5790046 + 1180107245: 5789878 + 1180107259: 5790212 + 1180107260: 5790216 + 1180107261: 5790084 + 1180107262: 5790088 + 1180107263: 5790188 + 1180107264: 5790090 + 1180107265: 5790080 + 1180107266: 5790078 + 1180107267: 5790076 + 1180107268: 5790082 + 1180107273: 5791932 + 1180107274: 5791928 + 1180107275: 5791926 + 1180107276: 5791942 + 1180107277: 5791940 + 1180107278: 5791916 + 1180107279: 5791918 + 1180107280: 5791910 + 1180107281: 5791908 + 1180107282: 5791904 + 1180107283: 5791898 + 1180107284: 5791896 + 1180107285: 5791894 + 1180107286: 5791888 + 1180107287: 5791886 + 1180107288: 5791880 + 1180107289: 5791878 + 1180107290: 5791874 + 1180107291: 5791872 + 1180107292: 5791858 + 1180107293: 5791856 + 1180107294: 5791854 + 1180107296: 5791846 + 1180107297: 5791838 + 1180107298: 5791836 + 1180107299: 5791840 + 1180107302: 5791830 + 1180107303: 5791188 + 1180107304: 5791828 + 1180107306: 5790040 + 1180107308: 5791174 + 1180107309: 5790036 + 1180107310: 5790058 + 1180107312: 5790056 + 1180107314: 5790066 + 1180107315: 5790064 + 1180107316: 5793592 + 1180107317: 5790096 + 1180107318: 5790092 + 1180107319: 5790180 + 1180107320: 5790094 + 1180107321: 5790098 + 1180107322: 5790166 + 1180107323: 5790102 + 1180107324: 5790100 + 1180107325: 5790172 + 1180107326: 5790104 + 1180107327: 5790106 + 1180107329: 5790164 + 1180107330: 5790034 + 1180107331: 5790110 + 1180107332: 5790112 + 1180107333: 5790158 + 1180107334: 5793618 + 1180107337: 5790114 + 1180107338: 5790220 + 1180107341: 5790148 + 1180107342: 5790124 + 1180107343: 5790154 + 1180107344: 5790118 + 1180107345: 5790120 + 1180107346: 5790122 + 1180107347: 5790116 + 1180107348: 5790126 + 1180107349: 5790230 + 1180107350: 5793588 + 1180107351: 5790132 + 1180107352: 5790128 + 1180107353: 5790152 + 1180107354: 5790130 + 1180107355: 5790026 + 1180107518: 3764288 + 1180107519: 3764296 + 1180107520: 3766382 + 1180107521: 3765756 + 1180107523: 3765794 + 1180107524: 3766370 + 1180107525: 3766386 + 1180107531: 3765770 + 1180107532: 3765774 + 1180107533: 3765792 + 1180107534: 3766354 + 1180107537: 3766324 + 1180107539: 3766342 + 1180107540: 3766348 + 1180107541: 3766326 + 1180107542: 3765800 + 1180107543: 3766362 + 1180107544: 3766356 + 1180107546: 3766368 + 1180107548: 3766372 + 1180107549: 3766378 + 1180107550: 3766376 + 1180107551: 3765780 + 1180107552: 3765748 + 1180107553: 3764156 + 1180107554: 3764158 + 1180107555: 3764198 + 1180107556: 3764314 + 1180107557: 3764286 + 1180107558: 3764290 + 1180107560: 3765740 + 1180107561: 3765742 + 1180107562: 3765782 + 1180107563: 3765732 + 1180107564: 3765758 + 1180107565: 3765790 + 1180107566: 3764292 + 1180107567: 3764294 + 1180107568: 3764282 + 1180107569: 3764284 + 1180107570: 3764272 + 1180107571: 3764280 + 1180107572: 3764270 + 1180107573: 3764268 + 1180107574: 3764260 + 1180107575: 3764254 + 1180107576: 3764256 + 1180107577: 3764258 + 1180107578: 3764234 + 1180107579: 3764240 + 1180107580: 3764244 + 1180107581: 3764248 + 1180107582: 3764230 + 1180107583: 3764228 + 1180107584: 3766986 + 1180107586: 3767012 + 1180107587: 3764200 + 1180107588: 3764188 + 1180107589: 3764196 + 1180107591: 3764190 + 1180107592: 3764186 + 1180107593: 3764192 + 1180107594: 3764194 + 1180107595: 3764180 + 1180107596: 3764176 + 1180107597: 3764178 + 1180107598: 3764170 + 1180107599: 3764172 + 1180107600: 3764174 + 1180107601: 3764168 + 1180107602: 3764162 + 1180107603: 3764152 + 1180107605: 3764148 + 1180107606: 3763166 + 1180107607: 3763164 + 1180107608: 3763162 + 1180107609: 3763158 + 1180107611: 3763154 + 1180107612: 3763144 + 1180107613: 3763148 + 1180107614: 3763150 + 1180107615: 3763140 + 1180107616: 3763130 + 1180107617: 3763134 + 1180107618: 3763132 + 1180109097: 5791934 + 1180109098: 5791934 + 1180109099: 5791924 + 1180109100: 5791924 + 1180109101: 5791848 + 1180109102: 5791864 + 1180109103: 3765768 + 1180109104: 3765768 + 1180109105: 3764246 + 1180109106: 3764246 + rlinks: + - 1180105606 + - 1180105607 + - 1180106004 + - 1180106005 + - 1180106006 + - 1180106007 + - 1180106572 + - 1180106584 + - 1180106585 + - 1180106586 + - 1180106587 + - 1180106588 + - 1180106590 + - 1180106591 + - 1180106592 + - 1180107241 + - 1180107242 + - 1180107243 + - 1180107244 + - 1180107245 + - 1180107259 + - 1180107260 + - 1180107261 + - 1180107262 + - 1180107263 + - 1180107264 + - 1180107265 + - 1180107266 + - 1180107267 + - 1180107268 + - 1180107273 + - 1180107274 + - 1180107275 + - 1180107276 + - 1180107277 + - 1180107278 + - 1180107279 + - 1180107280 + - 1180107281 + - 1180107282 + - 1180107283 + - 1180107284 + - 1180107285 + - 1180107286 + - 1180107287 + - 1180107288 + - 1180107289 + - 1180107290 + - 1180107291 + - 1180107292 + - 1180107293 + - 1180107294 + - 1180107296 + - 1180107297 + - 1180107298 + - 1180107299 + - 1180107302 + - 1180107303 + - 1180107304 + - 1180107306 + - 1180107308 + - 1180107309 + - 1180107310 + - 1180107312 + - 1180107314 + - 1180107315 + - 1180107316 + - 1180107317 + - 1180107318 + - 1180107319 + - 1180107320 + - 1180107321 + - 1180107322 + - 1180107323 + - 1180107324 + - 1180107325 + - 1180107326 + - 1180107327 + - 1180107329 + - 1180107330 + - 1180107331 + - 1180107332 + - 1180107333 + - 1180107334 + - 1180107337 + - 1180107338 + - 1180107341 + - 1180107342 + - 1180107343 + - 1180107344 + - 1180107345 + - 1180107346 + - 1180107347 + - 1180107348 + - 1180107349 + - 1180107350 + - 1180107351 + - 1180107352 + - 1180107353 + - 1180107354 + - 1180107355 + - 1180107518 + - 1180107519 + - 1180107520 + - 1180107521 + - 1180107523 + - 1180107524 + - 1180107525 + - 1180107531 + - 1180107532 + - 1180107533 + - 1180107534 + - 1180107537 + - 1180107539 + - 1180107540 + - 1180107541 + - 1180107542 + - 1180107543 + - 1180107544 + - 1180107546 + - 1180107548 + - 1180107549 + - 1180107550 + - 1180107551 + - 1180107552 + - 1180107553 + - 1180107554 + - 1180107555 + - 1180107556 + - 1180107557 + - 1180107558 + - 1180107560 + - 1180107561 + - 1180107562 + - 1180107563 + - 1180107564 + - 1180107565 + - 1180107566 + - 1180107567 + - 1180107568 + - 1180107569 + - 1180107570 + - 1180107571 + - 1180107572 + - 1180107573 + - 1180107574 + - 1180107575 + - 1180107576 + - 1180107577 + - 1180107578 + - 1180107579 + - 1180107580 + - 1180107581 + - 1180107582 + - 1180107583 + - 1180107584 + - 1180107586 + - 1180107587 + - 1180107588 + - 1180107589 + - 1180107591 + - 1180107592 + - 1180107593 + - 1180107594 + - 1180107595 + - 1180107596 + - 1180107597 + - 1180107598 + - 1180107599 + - 1180107600 + - 1180107601 + - 1180107602 + - 1180107603 + - 1180107605 + - 1180107606 + - 1180107607 + - 1180107608 + - 1180107609 + - 1180107611 + - 1180107612 + - 1180107613 + - 1180107614 + - 1180107615 + - 1180107616 + - 1180107617 + - 1180107618 + - 1180109097 + - 1180109098 + - 1180109099 + - 1180109100 + - 1180109101 + - 1180109102 + - 1180109103 + - 1180109104 + - 1180109105 + - 1180109106 + upstream_xwalk: + 1180105606: 5781917 + 1180105607: 5781919 + 1180106004: 5781901 + 1180106005: 5781963 + 1180106006: 5781929 + 1180106007: 5781923 + 1180106572: 5791182 + 1180106584: 5791184 + 1180106585: 5791198 + 1180106586: 5791178 + 1180106587: 5790050 + 1180106588: 5790200 + 1180106590: 5790070 + 1180106591: 5790074 + 1180106592: 5793586 + 1180107241: 5790044 + 1180107242: 5790186 + 1180107243: 5790048 + 1180107244: 5790046 + 1180107245: 5789878 + 1180107259: 5790062 + 1180107260: 5790032 + 1180107261: 5790086 + 1180107262: 5790088 + 1180107263: 5790188 + 1180107264: 5790090 + 1180107265: 5790080 + 1180107266: 5790204 + 1180107267: 5790076 + 1180107268: 5790028 + 1180107273: 5791932 + 1180107274: 5791928 + 1180107275: 5791926 + 1180107276: 5791942 + 1180107277: 5791940 + 1180107278: 5791916 + 1180107279: 5791918 + 1180107280: 5791910 + 1180107281: 5791908 + 1180107282: 5791904 + 1180107283: 5791898 + 1180107284: 5791896 + 1180107285: 5791894 + 1180107286: 5791888 + 1180107287: 5791886 + 1180107288: 5791880 + 1180107289: 5791878 + 1180107290: 5791874 + 1180107291: 5791872 + 1180107292: 5791858 + 1180107293: 5791856 + 1180107294: 5791854 + 1180107296: 5791846 + 1180107297: 5791834 + 1180107298: 5791836 + 1180107299: 5791840 + 1180107302: 5791830 + 1180107303: 5791188 + 1180107304: 5791828 + 1180107306: 5790040 + 1180107308: 5791174 + 1180107309: 5790036 + 1180107310: 5790060 + 1180107312: 5790056 + 1180107314: 5790066 + 1180107315: 5790064 + 1180107316: 5793592 + 1180107317: 5790096 + 1180107318: 5790092 + 1180107319: 5790180 + 1180107320: 5790094 + 1180107321: 5790108 + 1180107322: 5790166 + 1180107323: 5790102 + 1180107324: 5790100 + 1180107325: 5790172 + 1180107326: 5790104 + 1180107327: 5790106 + 1180107329: 5790164 + 1180107330: 5790034 + 1180107331: 5790110 + 1180107332: 5790112 + 1180107333: 5790158 + 1180107334: 5793618 + 1180107337: 5790114 + 1180107338: 5790220 + 1180107341: 5790148 + 1180107342: 5790124 + 1180107343: 5790154 + 1180107344: 5790118 + 1180107345: 5790120 + 1180107346: 5790122 + 1180107347: 5790116 + 1180107348: 5790126 + 1180107349: 5790230 + 1180107350: 5793588 + 1180107351: 5790132 + 1180107352: 5790128 + 1180107353: 5790152 + 1180107354: 5790130 + 1180107355: 5790026 + 1180107518: 3764288 + 1180107519: 3764296 + 1180107520: 3766380 + 1180107521: 3765756 + 1180107523: 3765794 + 1180107524: 3766370 + 1180107525: 3766384 + 1180107531: 3765770 + 1180107532: 3765774 + 1180107533: 3765792 + 1180107534: 3766354 + 1180107537: 3766334 + 1180107539: 3766342 + 1180107540: 3766348 + 1180107541: 3766326 + 1180107542: 3765800 + 1180107543: 3766360 + 1180107544: 3766356 + 1180107546: 3766368 + 1180107548: 3766372 + 1180107549: 3766378 + 1180107550: 3766376 + 1180107551: 3765780 + 1180107552: 3765748 + 1180107553: 3764156 + 1180107554: 3764158 + 1180107555: 3764198 + 1180107556: 3764314 + 1180107557: 3764286 + 1180107558: 3764290 + 1180107560: 3765740 + 1180107561: 3765742 + 1180107562: 3765782 + 1180107563: 3765732 + 1180107564: 3765758 + 1180107565: 3765790 + 1180107566: 3764292 + 1180107567: 3764294 + 1180107568: 3764282 + 1180107569: 3764284 + 1180107570: 3764272 + 1180107571: 3764280 + 1180107572: 3764270 + 1180107573: 3764268 + 1180107574: 3764260 + 1180107575: 3764238 + 1180107576: 3764256 + 1180107577: 3764258 + 1180107578: 3764242 + 1180107579: 3764240 + 1180107580: 3764244 + 1180107581: 3764248 + 1180107582: 3764232 + 1180107583: 3764228 + 1180107584: 3766986 + 1180107586: 3767012 + 1180107587: 3764200 + 1180107588: 3764188 + 1180107589: 3764196 + 1180107591: 3764190 + 1180107592: 3764186 + 1180107593: 3764192 + 1180107594: 3764194 + 1180107595: 3764180 + 1180107596: 3764176 + 1180107597: 3764178 + 1180107598: 3764170 + 1180107599: 3764172 + 1180107600: 3764174 + 1180107601: 3764168 + 1180107602: 3764162 + 1180107603: 3764152 + 1180107605: 3764148 + 1180107606: 3763166 + 1180107607: 3763164 + 1180107608: 3763162 + 1180107609: 3763158 + 1180107611: 3763154 + 1180107612: 3763144 + 1180107613: 3763148 + 1180107614: 3763150 + 1180107615: 3763140 + 1180107616: 3763130 + 1180107617: 3763134 + 1180107618: 3763132 + 1180109097: 5791934 + 1180109099: 5791924 + 1180109101: 5791848 + 1180109102: 5791864 + 1180109103: 3765768 + 1180109105: 3764246 diff --git a/test/LowerColorado_TX/lower_colorado_refac.yaml b/test/LowerColorado_TX/lower_colorado_refac.yaml deleted file mode 100644 index a4125c6bb..000000000 --- a/test/LowerColorado_TX/lower_colorado_refac.yaml +++ /dev/null @@ -1,73 +0,0 @@ ---- -#initial input parameters -log_parameters: - showtiming: true - log_level: DEBUG -network_topology_parameters: - supernetwork_parameters: - title_string: Lower Colorado, open-loop - geo_file_path: /glade/scratch/adamw/CONUS_1yr/domain/RouteLink_NWMv2.1.nc - mask_file_path: /glade/scratch/adamw/CONUS_1yr/masks/LowerColorado_hybrid.txt - break_network_at_gages: False - waterbody_parameters: - break_network_at_waterbodies: true - level_pool: - level_pool_waterbody_parameter_file_path: /glade/scratch/adamw/CONUS_1yr/domain/LAKEPARM_NWMv2.1.nc - rfc: - reservoir_parameter_file: /glade/work/adamw/CONUS/DOMAIN/reservoir_index_AnA.nc - reservoir_rfc_forecasts: False - reservoir_rfc_forecasts_time_series_path: /glade/work/adamw/CONUS/rfc_timeseries - reservoir_rfc_forecasts_lookback_hours: 48 -compute_parameters: - parallel_compute_method: serial - compute_kernel: V02-structured - assume_short_ts: true - subnetwork_target_size: 5000 - cpu_pool: 12 - restart_parameters: - start_datetime: "2020-06-01_12:00:00" - #wrf_hydro_channel_restart_file: /glade/scratch/casali/Coastal_Inland/NWM_Coastal_Run_Data/DA_Simulation/Restart_Files/HYDRO_RST.2020-06-01_00:00_DOMAIN1 channel_restart_202006011200 - lite_channel_restart_file: /glade/scratch/casali/Coastal_Inland/NWM_Coastal_Run_Data/DA_Simulation/Restart_Files/Troute_Restarts/channel_restart_202006011200 - wrf_hydro_channel_ID_crosswalk_file: /glade/scratch/adamw/CONUS_1yr/domain/RouteLink_NWMv2.1.nc - #wrf_hydro_waterbody_restart_file: /glade/scratch/casali/Coastal_Inland/NWM_Coastal_Run_Data/DA_Simulation/Restart_Files/HYDRO_RST.2020-06-01_00:00_DOMAIN1 - lite_channel_restart_file: /glade/scratch/casali/Coastal_Inland/NWM_Coastal_Run_Data/DA_Simulation/Restart_Files/Troute_Restarts/channel_restart_202006011200 - wrf_hydro_waterbody_ID_crosswalk_file: /glade/scratch/adamw/CONUS_1yr/domain/LAKEPARM_NWMv2.1.nc - wrf_hydro_waterbody_crosswalk_filter_file: /glade/scratch/adamw/CONUS_1yr/domain/RouteLink_NWMv2.1.nc - hybrid_parameters: - run_hybrid_routing: True - diffusive_domain: domain/diffusive_domain_new.yaml - use_natl_xsections: True - topobathy_domain: domain/diffusive_natural_xs_03312022.nc - run_refactored_network: True - refactored_domain: domain/lcra_refactored_diffusive_domain_042122.yaml - refactored_topobathy_domain: domain/lcra_refac_diffusive_natural_xs_042122.nc - forcing_parameters: - qts_subdivisions: 12 - dt: 300 - qlat_input_folder: /glade/scratch/adamw/CONUS_1yr/forcing - qlat_file_pattern_filter: "*.CHRTOUT_DOMAIN1" - #nts: 105120 - nts: 864 #288 #576 #864 #8640 #1152 #576 #8640 - max_loop_size: 72 #720 #24 #48 72 - qlat_file_value_col: NULL - data_assimilation_parameters: - usgs_timeslices_folder: /glade/scratch/adamw/CONUS_1yr/TimeSlice - qc_threshold: 0 - wrf_lastobs_type: obs-based - streamflow_da: - streamflow_nudging : False - diffusive_streamflow_nudging : False - gage_segID_crosswalk_file : /glade/scratch/adamw/CONUS_1yr/domain/RouteLink_NWMv2.1.nc - crosswalk_gage_field : 'gages' - crosswalk_segID_field : 'link' - wrf_hydro_lastobs_file : lastobs/nudgingLastObs.2021-08-23_12:00:00.nc - lastobs_output_folder : lastobs/ -output_parameters: - test_output: output/lower_colorado_test_MConly_noNudging_30d #output/lower_colorado_da_nxec_8days - chanobs_output: - chanobs_output_directory: output/ - chanobs_filepath: LowerColorado_chanobs_1yr.nc - - # wrf_hydro_channel_output_source_folder: /glade/scratch/adamw/CONUS_1yr/forcing - #lite_restart: - # lite_restart_output_directory: /glade/scratch/adamw/CONUS_1yr/troute_restarts \ No newline at end of file diff --git a/test/LowerColorado_TX/test_AnA.yaml b/test/LowerColorado_TX/test_AnA.yaml index d92da8112..3f73a4cb4 100644 --- a/test/LowerColorado_TX/test_AnA.yaml +++ b/test/LowerColorado_TX/test_AnA.yaml @@ -9,50 +9,55 @@ network_topology_parameters: #---------- supernetwork_parameters: #---------- - geo_file_path: domain/RouteLink.nc + geo_file_path: domain/RouteLink_NWMv2.1.nc + mask_file_path: domain/coastal_subset.txt waterbody_parameters: #---------- break_network_at_waterbodies: True level_pool: #---------- - level_pool_waterbody_parameter_file_path: domain/LAKEPARM.nc + level_pool_waterbody_parameter_file_path: domain/LAKEPARM_NWMv2.1.nc rfc: #---------- reservoir_parameter_file : domain/reservoir_index_AnA.nc - reservoir_rfc_forecasts : True + reservoir_rfc_forecasts : False reservoir_rfc_forecasts_time_series_path: rfc_TimeSeries/ reservoir_rfc_forecasts_lookback_hours : 48 #-------------------------------------------------------------------------------- compute_parameters: #---------- - parallel_compute_method: serial + parallel_compute_method: by-subnetwork-jit-clustered #serial compute_kernel : V02-structured assume_short_ts : True subnetwork_target_size : 10000 cpu_pool : 36 restart_parameters: #---------- - wrf_hydro_channel_restart_file : restart/HYDRO_RST.2021-08-23_12:00_DOMAIN1 - wrf_hydro_channel_ID_crosswalk_file : domain/RouteLink.nc - wrf_hydro_waterbody_restart_file : restart/HYDRO_RST.2021-08-23_12:00_DOMAIN1 - wrf_hydro_waterbody_ID_crosswalk_file : domain/LAKEPARM.nc - wrf_hydro_waterbody_crosswalk_filter_file: domain/RouteLink.nc + wrf_hydro_channel_restart_file : restart/HYDRO_RST.2020-08-26_00:00_DOMAIN1 + #lite_channel_restart_file : restart/RESTART.2020082600_DOMAIN1 + wrf_hydro_channel_ID_crosswalk_file : domain/RouteLink_NWMv2.1.nc + wrf_hydro_waterbody_restart_file : restart/HYDRO_RST.2020-08-26_00:00_DOMAIN1 + #lite_waterbody_restart_file : restart/waterbody_restart_202006011200 + wrf_hydro_waterbody_ID_crosswalk_file : domain/LAKEPARM_NWMv2.1.nc + wrf_hydro_waterbody_crosswalk_filter_file: domain/RouteLink_NWMv2.1.nc hybrid_parameters: run_hybrid_routing: True - diffusive_domain : domain/diffusive_domain_new.yaml + diffusive_domain : domain/coastal_domain_subset.yaml use_natl_xsections: True - topobathy_domain : domain/diffusive_natural_xs_03312022.nc + topobathy_domain : domain/final_diffusive_natural_xs.nc run_refactored_network: True - refactored_domain: domain/lcra_refactored_diffusive_domain_042122.yaml - refactored_topobathy_domain: domain/lcra_refac_diffusive_natural_xs_042122.nc + refactored_domain: domain/refactored_coastal_domain_subset.yaml + refactored_topobathy_domain: domain/refac_final_diffusive_natural_xs.nc + coastal_boundary_domain: domain/coastal_boundary_domain.yaml forcing_parameters: #---------- - qts_subdivisions : 12 - dt : 300 - qlat_input_folder : channel_forcing - qlat_file_pattern_filter: "*.CHRTOUT_DOMAIN1" - nts : 336 - max_loop_size : 28 + qts_subdivisions : 12 + dt : 300 # [sec] + qlat_input_folder : channel_forcing + qlat_file_pattern_filter : "*.CHRTOUT_DOMAIN1" + coastal_boundary_input_file : boundary_forcing + nts : 2592 # 288 for 1day; 2592 for 9 days + max_loop_size : 24 # [hr] data_assimilation_parameters: #---------- usgs_timeslices_folder : usgs_TimeSlice/ @@ -61,22 +66,22 @@ compute_parameters: qc_threshold : 1 streamflow_da: #---------- - streamflow_nudging : True + streamflow_nudging : False diffusive_streamflow_nudging : False - gage_segID_crosswalk_file : domain/RouteLink.nc + gage_segID_crosswalk_file : domain/RouteLink_NWMv2.1.nc crosswalk_gage_field : 'gages' crosswalk_segID_field : 'link' - wrf_hydro_lastobs_file : lastobs/nudgingLastObs.2021-08-23_12:00:00.nc + wrf_hydro_lastobs_file : lastobs/nudgingLastObs.2020-06-01_12:00:00.nc lastobs_output_folder : lastobs/ reservoir_da: #---------- - reservoir_persistence_usgs : True - reservoir_persistence_usace : True + reservoir_persistence_usgs : False + reservoir_persistence_usace : False gage_lakeID_crosswalk_file : domain/reservoir_index_AnA.nc #-------------------------------------------------------------------------------- output_parameters: #---------- - test_output: output/LowerColorado_flowveldepth.pkl + test_output: output/lcr_flowveldepth.pkl lite_restart: #---------- lite_restart_output_directory: restart/ @@ -86,6 +91,6 @@ output_parameters: chanobs_output: #---------- chanobs_output_directory: output/ - chanobs_filepath : LowerColorado_chanobs.nc + chanobs_filepath : lcr_chanobs.nc lakeout_output: lakeout/ \ No newline at end of file