# Negative or zero block volume

**URL:** <https://forum.itascainternational.com/t/negative-or-zero-block-volume/95>\
**Category:** 3DEC\
**Tags:** faq\
**Created:** [September 19, 2021, 7:02pm UTC](https://forum.itascainternational.com/t/negative-or-zero-block-volume/95 "2021-09-19T19:02:55Z")\
**Posts on this page:** 6\
**Page:** 1

<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:** [September 19, 2021, 7:02pm UTC](https://forum.itascainternational.com/t/negative-or-zero-block-volume/95/1 "2021-09-19T19:02:55Z")

</div>

In large strain, you may an error message in _3DEC_, “negative or zero block volume”. This is caused by the collapsing of very thin blocks or zones in large strain. There are several ways to deal with this:

- Run in small strain (MODEL LARGE-STRAIN OFF)

- Try to identify problem blocks in advance. Use RANGE ASPECT-RATIO or RANGE FACE-SIZE to find blocks with bad geometries. It is usually OK to delete these blocks since the holes will close in large strain.

- Roll back to a save state before the error and delete the block mentioned in the error message.

---

<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 8, 2022, 3:58pm UTC](https://forum.itascainternational.com/t/negative-or-zero-block-volume/95/2 "2022-04-08T15:58:15Z")

</div>

You can also try increasing the volume at which zones are automatically deleted. There is logic to automatically delete ones when the volume goes negative. This doesn’t always work, which is why you still sometimes see the “negative or zero block volume” error. However, you can set it up so that zones get deleted when the volume is some small number that is greater than 0. This might help because the zones will be deleted before they completely collapse. See here: [block zone volume-minimum-delete command — 3DEC 7.0 documentation](http://docs.itascacg.com/3dec700/3dec/block/doc/manual/block_manual/block_commands/block.zone/cmd_block.zone.volume-minimum-delete.html?node2590)

---

<div class="post-metadata">

**Author:** ![Damir](https://avatars.discourse-cdn.com/v4/letter/d/7993a0/32.png) [@Damir](https://forum.itascainternational.com/u/Damir)\
**Post date:** [April 26, 2022, 10:45am UTC](https://forum.itascainternational.com/t/negative-or-zero-block-volume/95/3 "2022-04-26T10:45:18Z")

</div>

Dear,

is it possible to delete blocks from the plot window **during** cycling, according to strain,  
not volume criterion. For example, after discussion with @Rima something like this works after the job is **finished** :

fish def strain\_total  
loop foreach iz block.zone.list  
if block.zone.strain.total(iz) \> 1.e-4 then  
block.zone.extra(iz) = 1  
endif  
endloop  
end

model solve time 2.  
@strain\_total  
block zone delete range extra 1 0.9 1.1

---

<div class="post-metadata">

**Author:** ![Rima](https://avatars.discourse-cdn.com/v4/letter/r/90db22/32.png) [@Rima](https://forum.itascainternational.com/u/Rima)\
**Post date:** [April 26, 2022, 1:27pm UTC](https://forum.itascainternational.com/t/negative-or-zero-block-volume/95/4 "2022-04-26T13:27:39Z")

</div>

Hi Damir,  
You can execute any function during cycling (every “n” cycle) using a “fish-call”. You need to call the function using the keyword “fish-call” written at the same line as “model solve”. Please refer to the manual for more details. However this might slow down your calculation.  
In your case, you need to move the command that deletes the zones inside your fish function (between the two keywords “command” and “end\_command”).

I hope this helps.  
Rima

---

<div class="post-metadata">

**Author:** ![Damir](https://avatars.discourse-cdn.com/v4/letter/d/7993a0/32.png) [@Damir](https://forum.itascainternational.com/u/Damir)\
**Post date:** [April 29, 2022, 7:37am UTC](https://forum.itascainternational.com/t/negative-or-zero-block-volume/95/5 "2022-04-29T07:37:56Z")

</div>

Thanks @Rima !

Is it possible to continue calculation after **all** zones of the block are controlled delete?  
Block correctly disappeared with zero volume, but the process stopped. Is it possible to bypass this and continue cycling.

Thanks in advance!

 ![block - zero_volume](https://canada1.discourse-cdn.com/flex031/uploads/itasca/original/1X/10ea9f1e8631a2f2d9f8cd4bb3392cd22541ed33.jpeg)

---

<div class="post-metadata">

**Author:** ![Rima](https://avatars.discourse-cdn.com/v4/letter/r/90db22/32.png) [@Rima](https://forum.itascainternational.com/u/Rima)\
**Post date:** [May 2, 2022, 8:17am UTC](https://forum.itascainternational.com/t/negative-or-zero-block-volume/95/6 "2022-05-02T08:17:30Z")

</div>

Your model stopped because of a negative block volume. I guess your fish function does not delete the strained zones every cycle but every n cycle, so you still can have some errors between two deletes.  
You can use the command “block zone volume-minimum-delete command” before you start cycling as mentioned in the post above. This will force the model to delete zones having the minimum volume specified (so before reaching a zero volume).
