# Compute discharge through an internal zone

**URL:** https://forum.itascainternational.com/t/compute-discharge-through-an-internal-zone/2015
**Category:** FLAC3D
**Tags:** fish, tips
**Created:** [April 1, 2025, 10:02am UTC](https://forum.itascainternational.com/t/compute-discharge-through-an-internal-zone/2015 "2025-04-01T10:02:35Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![stephaneBeaussier](https://avatars.discourse-cdn.com/v4/letter/s/73ab20/32.png) [@stephaneBeaussier](https://forum.itascainternational.com/u/stephaneBeaussier)
#### Post date: [April 1, 2025, 10:02am UTC](https://forum.itascainternational.com/t/compute-discharge-through-an-internal-zone/2015/1 "2025-04-01T10:02:36Z")

</div>

Hi,

I want to compute the fluid flow through an internal limit in the model.  
For example the flow that pass a certain given depth. Therefore the computation can be on zones or gridpoint depending of what is the simplest.

Because it isn’t a boundary with a fixed pore pressure I cannot use the fish function gp.flow.

My guess is that I could use the zone.flow function but I would need to compute the area of the zone section normal to the discharge vector to get a volume per time.

Will that give me an accurate estimation of a different approach computing all the source and sink terms is needed?

Thank you in advance!

---

<div class="post-metadata">

### Author: ![jhazzard](https://avatars.discourse-cdn.com/v4/letter/j/4af34b/32.png) [@jhazzard](https://forum.itascainternational.com/u/jhazzard)
#### Post date: [April 15, 2025, 6:54pm UTC](https://forum.itascainternational.com/t/compute-discharge-through-an-internal-zone/2015/2 "2025-04-15T18:54:25Z")

</div>

Yes - this is correct. You could take the zone.flow vector and multiply this by the cross-sectional area of some plane intersecting the zone. I did a simple test on [this example](https://docs.itascacg.com/itasca930/flac3d/zone/test3d/Fluid/FreeSurfaceSteadyStateFluidFlow/freesurfacesteadystatefluidflow.html) assuming a vertical plane and it worked fine. The tricky part would be calculating the cross-sectional area for an arbitrary plane …

```
fish def test_discharge
  total_flow_z = 0
  xarea = 0.15*0.3 ; y * z
  loop foreach zp zone.list
    if zone.pos(zp)->x < 0.3
      total_flow_z += zone.flow(zp)->x * xarea
    endif
  end_loop

  total_flow_gp = 0
  loop foreach gp gp.list
    if gp.pos(gp)->x < 0.01
      total_flow_gp += gp.flow(gp)
    endif
  end_loop
end
[test_discharge]

```
