!----- AGPL -------------------------------------------------------------------- ! ! Copyright (C) Stichting Deltares, 2015-2019. ! ! This file is part of Delft3D (D-Flow Flexible Mesh component). ! ! Delft3D is free software: you can redistribute it and/or modify ! it under the terms of the GNU Affero General Public License as ! published by the Free Software Foundation version 3. ! ! Delft3D is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU Affero General Public License for more details. ! ! You should have received a copy of the GNU Affero General Public License ! along with Delft3D. If not, see . ! ! contact: delft3d.support@deltares.nl ! Stichting Deltares ! P.O. Box 177 ! 2600 MH Delft, The Netherlands ! ! All indications and logos of, and references to, "Delft3D", ! "D-Flow Flexible Mesh" and "Deltares" are registered trademarks of Stichting ! Deltares, and remain the property of Stichting Deltares. All rights reserved. ! !------------------------------------------------------------------------------- select case(var_name) case("DFM_COMM_DFMWORLD") !< [-] The MPI communicator for dflowfm (FORTRAN handle). {"rank": 0} x = c_loc(DFM_COMM_DFMWORLD) case("iglobal_s") !< [-] global flow node numbers to help output aggregation later. Should exactly correspond with the original unpartitioned flow node numbers! (as opposed to iglobal) {"shape": ["ndx"]} x = c_loc(iglobal_s) case("hwav") !< [m] root mean square wave height (m) from external source, {"location": "face", "shape": ["ndx"]} x = c_loc(hwav) case("twav") !< [s] wave period {"location": "face", "shape": ["ndx"]} x = c_loc(twav) case("Uorb") !< [m/s] orbital velocity {"location": "face", "shape": ["ndx"]} x = c_loc(Uorb) case("infilt") !< [m3 s-1] Actual infiltration flux at current time {"location": "face", "shape": ["ndx"]} x = c_loc(infilt) case("infiltcap") !< [m s-1] Maximum infiltration capacity on each cell {"location": "face", "shape": ["ndx"]} x = c_loc(infiltcap) case("shx") !< [m] current position {"shape": ["nshiptxy"]} x = c_loc(shx) case("shy") !< [m] current position {"shape": ["nshiptxy"]} x = c_loc(shy) case("shi") !< [m] current position {"shape": ["nshiptxy"]} x = c_loc(shi) case("zsp") !< [m] ship depth at flownodes {"shape": ["ndx"]} x = c_loc(zsp) case("zsp0") !< [m] ship depth at flownodes prev step {"shape": ["ndx"]} x = c_loc(zsp0) case("zspc") !< [m] ship depth at netnodes {"shape": ["numk"]} x = c_loc(zspc) case("zspc0") !< [m] ship depth at netnodes {"shape": ["numk"]} x = c_loc(zspc0) case("v0ship") !< [m] ship 0 volume {"shape": ["ndx"]} x = c_loc(v0ship) case("v1ship") !< [m] ship 1 volume {"shape": ["ndx"]} x = c_loc(v1ship) case("qinship") !< [m] ship flux (v1-v0)/dt {"shape": ["ndx"]} x = c_loc(qinship) case("vicushp") !< [m] eddyvisc ship {"shape": ["lnx"]} x = c_loc(vicushp) case("shL") !< [m] ship size L/2, B/2, D ! for now, fixed max nr =2 {"shape": [2]} x = c_loc(shL) case("shB") !< [m] ship size L/2, B/2, D ! for now, fixed max nr =2 {"shape": [2]} x = c_loc(shB) case("shd") !< [m] ship size L/2, B/2, D ! for now, fixed max nr =2 {"shape": [2]} x = c_loc(shd) case("stuw") !< [N] actual thrust force in ship dir {"shape": [2]} x = c_loc(stuw) case("fstuw") !< [-] thrust setting 0-1 {"shape": [2]} x = c_loc(fstuw) case("stuwmx") !< [N] max thrust {"shape": [2]} x = c_loc(stuwmx) case("roer") !< [degree] actual rudder angle {"shape": [2]} x = c_loc(roer) case("froer") !< [degree] actual rudder setting 0-1 {"shape": [2]} x = c_loc(froer) case("roermx") !< [degree] max rudder angle {"shape": [2]} x = c_loc(roermx) case("wx") !< [m/s] wind x velocity (m/s) at u point {"location": "edge", "shape": ["lnx"]} x = c_loc(wx) case("wy") !< [m/s] wind y velocity (m/s) at u point {"location": "edge", "shape": ["lnx"]} x = c_loc(wy) case("rain") !< [mm/day] rain at xz,yz {"location": "face", "shape": ["ndx"]} x = c_loc(rain) case("evap") !< [m/s] evaporation at xz,yz {"location": "face", "shape": ["ndx"]} x = c_loc(evap) case("numlatsg") !< [-] nr of lateral discharge providers {"rank": 0} x = c_loc(numlatsg) case("qplat") !< [m3/s] Lateral discharge of provider {"location": "face", "shape": ["numlatsg"]} x = c_loc(qplat) case("qqlat") !< [m3/s] Lateral discharge at xz,yz {"location": "face", "shape": ["ndx"]} x = c_loc(qqlat) case("balat") !< [m2] total area of all cells in provider numlatsg {"location": "face", "shape": ["numlatsg"]} x = c_loc(balat) case("nnlat") !< [-] for each cell pointer to qplat/balat {"location": "face", "shape": ["ndx"]} x = c_loc(nnlat) case("qinext") !< [m3/s] External discharge per cell {"location": "face", "shape": ["ndkx"]} x = c_loc(qinext) case("qinextreal") !< [m3/s] Realized external discharge per cell {"location": "face", "shape": ["ndkx"]} x = c_loc(qinextreal) case("vincum") !< [m3] Cumulative realized volume through qinext {"location": "face", "shape": ["ndkx"]} x = c_loc(vincum) case("zbndz") !< [m] waterlevel boundary points function {"location": "edge", "shape": ["nbndz"]} x = c_loc(zbndz) case("zbndu") !< [m/s] velocity boundary points function {"location": "edge", "shape": ["nbndu"]} x = c_loc(zbndu) case("zbndq") !< [m3/s] discharge boundary points function {"location": "edge", "shape": ["nbndu"]} x = c_loc(zbndq) case("turkin1") !< [m2/s2] turbulent kinectic energy at layer interface u {"location": "edge", "shape": ["lnkx"]} x = c_loc(turkin1) case("vicwws") !< [m2/s] vertical eddy viscosity at layer interface at s point {"location": "face", "shape": ["ndkx"]} x = c_loc(vicwws) case("rnveg") !< [1/m2] 3D plant density , 2D part is basis input (1/m2) {"location": "face", "shape": ["ndkx"]} x = c_loc(rnveg) case("diaveg") !< [m] 3D plant diameter, 2D part is basis input (m) {"location": "face", "shape": ["ndkx"]} x = c_loc(diaveg) case("cfuveg") !< [ ] 2D only, g/C2 in 2D such that bedstress is computed correctly {"location": "face", "shape": ["lnx"]} x = c_loc(cfuveg) case("alfaveg") !< [1/m] 2D only, stem contribution {"location": "face", "shape": ["lnx"]} x = c_loc(alfaveg) case("stemdens") !< [1/m2] TEMP 2D plant density (1/m2) {"location": "face", "shape": ["ndx"]} x = c_loc(stemdens) case("stemdiam") !< [m] TEMP 2D plant diameters (m) {"location": "face", "shape": ["ndx"]} x = c_loc(stemdiam) case("stemheight") !< [m] 2D plant heights (m) {"location": "face", "shape": ["ndx"]} x = c_loc(stemheight) case("Cdvegsp") !< [m] spatial plant Cdveg () {"location": "face", "shape": ["ndkx"]} x = c_loc(Cdvegsp) case("zws") !< [m] z levels (m) of interfaces (w-points) at cell centres (s-points) (m) (1:ndkx) {"shape": ["ndkx"]} x = c_loc(zws) case("kbot") !< [-] layer-compressed bottom layer cell number: for each of ndx horizontal cells, we have indices to bot and top ndxk cells {"location": "face", "shape": ["ndx"]} x = c_loc(kbot) case("ktop") !< [-] layer-compressed top layer cell number: for each of ndx horizontal cells, we have indices to bot and top ndxk cells {"location": "face", "shape": ["ndx"]} x = c_loc(ktop) case("Lbot") !< [-] layer-compressed bottom layer edge number: for each of lnx horizontal links, we have indices to bot and top lnxk links {"location": "edge", "shape": ["lnx"]} x = c_loc(Lbot) case("Ltop") !< [-] layer-compressed top layer edge number: for each of lnx horizontal links, we have indices to bot and top lnxk links {"location": "edge", "shape": ["lnx"]} x = c_loc(Ltop) case("s0") !< [m] waterlevel (m ) at start of timestep {"location": "face", "shape": ["ndx"]} x = c_loc(s0) case("s1") !< [m] waterlevel (m ) at end of timestep {"location": "face", "shape": ["ndx"]} x = c_loc(s1) case("a0") !< [m2] storage area at start of timestep {"location": "face", "shape": ["ndx"]} x = c_loc(a0) case("a1") !< [m2] storage area at end of timestep {"location": "face", "shape": ["ndx"]} x = c_loc(a1) case("vol0") !< [m3] total volume at start of timestep {"location": "face", "shape": ["ndx"]} x = c_loc(vol0) case("vol1") !< [m3] total volume at end of timestep {"location": "face", "shape": ["ndx"]} x = c_loc(vol1) case("vol1_f") !< [m3] flow volume volume at end of timestep {"location": "face", "shape": ["ndx"]} x = c_loc(vol1_f) case("hs") !< [m] waterdepth at cell centre = s1 - bl (m) {"location": "face", "shape": ["ndx"]} x = c_loc(hs) case("ucx") !< [m/s] cell center velocity, global x-dir (m/s) {"location": "face", "shape": ["ndkx"]} x = c_loc(ucx) case("ucy") !< [m/s] cell center velocity, global y-dir (m/s) {"location": "face", "shape": ["ndkx"]} x = c_loc(ucy) case("ucz") !< [m/s] cell center velocity, global z-dir (m/s) {"location": "face", "shape": ["ndkx"]} x = c_loc(ucz) case("ucmag") !< [m/s] cell center velocity magnitude {"location": "face", "shape": ["ndkx"]} x = c_loc(ucmag) case("sa0") !< [1e-3] salinity (ppt) at start of timestep {"location": "face", "shape": ["ndkx"]} x = c_loc(sa0) case("sa1") !< [1e-3] salinity (ppt) at end of timestep {"location": "face", "shape": ["ndkx"]} x = c_loc(sa1) case("satop") !< [1e-3] salinity (ppt) help in initialise , deallocated {"location": "face", "shape": ["ndx"]} x = c_loc(satop) case("sabot") !< [1e-3] salinity (ppt) help in initialise , deallocated {"location": "face", "shape": ["ndx"]} x = c_loc(sabot) case("tem0") !< [degC] water temperature at end of timestep {"location": "face", "shape": ["ndkx"]} x = c_loc(tem0) case("tem1") !< [degC] water temperature at end of timestep {"location": "face", "shape": ["ndkx"]} x = c_loc(tem1) case("u1") !< [m/s] flow velocity (m/s) at end of timestep {"location": "edge", "shape": ["lnkx"]} x = c_loc(u1) case("u_to_umain") !< [-] Factor for translating general velocity to the flow velocity in the main channel at end of timestep (1d) {"location": "edge", "shape": ["lnkx"]} x = c_loc(u_to_umain) case("q1") !< [m3/s] discharge (m3/s) at end of timestep n, used as q0 in timestep n+1, statement q0 = q1 is out of code, saves 1 array {"location": "edge", "shape": ["lnkx"]} x = c_loc(q1) case("q1_main") !< [m3/s] discharge (m3/s) in main channel at {"location": "edge", "shape": ["lnkx"]} x = c_loc(q1_main) case("au") !< [m2] flow area (m2) at u point {"location": "edge", "shape": ["lnkx"]} x = c_loc(au) case("hu") !< [m] upwind waterheight at u-point (m) {"location": "edge", "shape": ["lnx"]} x = c_loc(hu) case("frcu") !< [TODO] friction coefficient set by initial fields {"location": "edge", "shape": ["lnx"]} x = c_loc(frcu) case("viusp") !< [m2/s] user defined spatial eddy viscosity coefficient at u point (m2/s) {"location": "edge", "shape": ["lnx"]} x = c_loc(viusp) case("diusp") !< [m2/s] user defined spatial eddy diffusivity coefficient at u point (m2/s) {"location": "edge", "shape": ["lnx"]} x = c_loc(diusp) case("ndxi") !< [-] Number of internal flowcells (internal = 2D + 1D ). {"rank": 0} x = c_loc(ndxi) case("ndx1db") !< [-] Number of flow nodes incl. 1D bnds (internal 2D+1D + 1D bnd). {"rank": 0} x = c_loc(ndx1db) case("kfs") !< [-] node code flooding {"shape": ["ndx"]} x = c_loc(kfs) case("bare") !< [m2] bottom area, for rain and evaporaton {"location": "face", "shape": ["ndx"]} x = c_loc(bare) case("ba_mor") !< [m2] morphologically active bottom area, if < 0 use table in node type {"location": "face", "shape": ["ndx"]} x = c_loc(ba_mor) case("bl") !< [m] bottom level (m) (positive upward) {"location": "face", "shape": ["ndx"]} x = c_loc(bl) case("lnx1D") !< [-] nr of 1D flow links (so first 1D, next 2D, next boundaries). {"rank": 0} x = c_loc(lnx1D) case("lnxi") !< [-] nr of flow links (internal, 1D+2D ). {"rank": 0} x = c_loc(lnxi) case("lnx1Db") !< [-] nr of flow links including 1D bnds (internal, 1D+2D, boundary: only 1D. 2D bnd behind it). {"rank": 0} x = c_loc(lnx1Db) case("lnx") !< [-] nr of flow links (internal + boundary). First we have 1D links, next 2D links, next boundary links (first 1D, then 2D). {"rank": 0} x = c_loc(lnx) case("ln") !< [-] 1D link (2,*) node administration, 1=nd1, 2=nd2 linker en rechter celnr {"shape": [2, "lnkx"]} x = c_loc(ln) case("lncn") !< [-] 2D link (2,*) corner administration, 1=nod1, 2=nod2 linker en rechter netnr {"shape": [2, "lnkx"]} x = c_loc(lncn) case("iadv") !< [-] type of advection for this link {"location": "edge", "shape": ["lnx"]} x = c_loc(iadv) case("dx") !< [m] link length (m) {"location": "edge", "shape": ["lnx"]} x = c_loc(dx) case("wu") !< [m] link initial width (m), if < 0 pointer to convtab {"location": "edge", "shape": ["lnx"]} x = c_loc(wu) case("wu_mor") !< [m] morphologically active width (m), if < 0 pointer to convtab {"location": "edge", "shape": ["lnx"]} x = c_loc(wu_mor) case("bob") !< [m] left and right inside lowerside tube (binnenkant onderkant buis) HEIGHT values (m) (positive upward), adjusted for structures {"location": "edge", "shape": [2, "lnx"]} x = c_loc(bob) case("bob0") !< [m] left and right inside lowerside tube (binnenkant onderkant buis) HEIGHT values (m) (positive upward), NOT adjusted for structures {"location": "edge", "shape": [2, "lnx"]} x = c_loc(bob0) case("xu") !< [m] velocity point x {"location": "edge", "shape": ["lnx"]} x = c_loc(xu) case("yu") !< [m] velocity point y {"location": "edge", "shape": ["lnx"]} x = c_loc(yu) case("vort") !< [s-1] vorticity at netnodes {"shape": ["ndx"], "comment": "Currently not available, is nowhere allocated nor filled."} x = c_loc(vort) case("xzw") !< [m] centre of gravity {"shape": ["nump"]} x = c_loc(xzw) case("yzw") !< [m] centre of gravity {"shape": ["nump"]} x = c_loc(yzw) case("xk") !< [-] Net node x coordinate {"shape": ["numk"]} x = c_loc(xk) case("yk") !< [-] Net node y coordinate {"shape": ["numk"]} x = c_loc(yk) case("zk") !< [-] Net node z coordinate {"shape": ["numk"]} x = c_loc(zk) case("kn") !< [-] Net links: kn(1,:)=from-idx, kn(2,:)=to-idx, kn(3,:)=net link type (0/1/2/3/4) {"shape": [3, "numl"]} x = c_loc(kn) case("numk") !< [-] Nr. of net nodes. {"shape": []} x = c_loc(numk) case("zbnd1d2d1") !< [m] 1d2d boundary points 1d water level at new time level {"shape": ["nbnd1d2d"]} x = c_loc(zbnd1d2d1) case("zbnd1d2d0") !< [m] 1d2d boundary points 1d water level at previous time level {"shape": ["nbnd1d2d"]} x = c_loc(zbnd1d2d0) case("zcrest1d2d") !< [m] 1d2d helper array with crest levels {"shape": ["nbnd1d2d"]} x = c_loc(zcrest1d2d) case("edgenumbers1d2d") !< [m] 1d2d helper array with edge numbers {"shape": ["nbnd1d2d"]} x = c_loc(edgenumbers1d2d) case("kbnd1d2d") !< [-] 1d2d boundary points index array {"shape": ["5","nbnd1d2d"]} x = c_loc(kbnd1d2d) case("width_1d") !< [m] width 1D SOBEK channel --2D FM coupling {"shape": ["nbnd1d2d"]} x = c_loc(width_1d) case("qzeta_1d2d") !< [m3 s-1] 1d2d output array via BMI for qzeta in 1D SOBEK--2D FM coupling {"shape": ["nbnd1d2d"]} x = c_loc(qzeta_1d2d) case("qlat_1d2d") !< [m3 s-1] 1d2d output array via BMI for qlat in 1D SOBEK--2D FM coupling {"shape": ["nbnd1d2d"]} x = c_loc(qlat_1d2d) case("qtotal_1d2d") !< [m3 s-1] 1d2d output array via BMI for qlat in 1D SOBEK--2D FM coupling {"shape": ["nbnd1d2d"]} x = c_loc(qtotal_1d2d) case("is_sumvalsnd") !< [-] Integral values on flow nodes. {"location": "face", "shape": ["is_numndvals", "ndx"]} x = c_loc(is_sumvalsnd) case("is_maxvalsnd") !< [-] Integral values on flow nodes. {"location": "face", "shape": ["is_numndvals", "ndx"]} x = c_loc(is_maxvalsnd) case("is_dtint") !< [s] total time interval since last statistics reset. {"rank": 0} x = c_loc(is_dtint) case("ndx2d") !< [-] Number of 2D flow cells (= NUMP). {"rank": 0} x = c_loc(ndx2d) case("ndx") !< [-] Number of flow nodes (internal + boundary). {"rank": 0} x = c_loc(ndx) case("xz") !< [m/degrees_east] waterlevel point / cell centre, x-coordinate (m) {"location": "face", "shape": ["ndx"]} x = c_loc(xz) case("yz") !< [m/degrees_north] waterlevel point / cell centre, y-coordinate (m) {"location": "face", "shape": ["ndx"]} x = c_loc(yz) case("ba") !< [m2] bottom area, if < 0 use table in node type {"location": "face", "shape": ["ndx"]} x = c_loc(ba) end select