tolerance-cnv-relaxed is granted when the cells violating CNV hold less than relaxed-max-pv-fraction (3%) of the total pore volume. That is a volume budget, so how much of the grid it covers depends entirely on the pore-volume distribution — and on graded, near-well or buffered models it covers most of it:
| model |
share of cells that fit inside the 3% budget |
| uniform grids (SPE9, MINIFIELD, GASLIFT, MODEL3, 2_GCONINJE_NETV) |
3-10% |
| STONE2_MOD1 |
74% |
| SPE1CASE2_RADIAL |
77% |
| GASCONDENSATE_VAPWAT_PRECSALT |
87% |
CO2STORE_PRECSALT (near-well wedge, MULTPV 2488 on the outer column) |
90% |
DISPERC_FINGERS (OPERATE PORV ... ADDX PORV 1E+10 on the bottom layer) |
98% |
On DISPERC_FINGERS the 2450 ordinary cells together are 2e-15 of the total pore volume, so the budget can never be exceeded and the relaxed tolerance is in force on every iteration. --relaxed-max-pv-fraction=1e30, which makes the relaxed branch unconditional, reproduces the default run exactly: 2501 Newton iterations, 96 failed substeps in both. The same effect is visible on SPE1CASE2_RADIAL, where 1357 of 1402 iterations are accepted at tolerance 1.0 and only 45 at the nominal 1e-2.
So models with a refined near-well region, a pore-volume multiplier or a large boundary cell are effectively running at tolerance-cnv-relaxed, which defaults to 1.0, rather than at tolerance-cnv. Uniform models are not. That does not look intended, and it makes the acceptance criterion depend on grading rather than on the solution.
Measured with a small script over the runs' INIT files (PORV); happy to attach it. #7298 adds the CnvTolUsed column that makes this visible in a normal run.
tolerance-cnv-relaxedis granted when the cells violating CNV hold less thanrelaxed-max-pv-fraction(3%) of the total pore volume. That is a volume budget, so how much of the grid it covers depends entirely on the pore-volume distribution — and on graded, near-well or buffered models it covers most of it:MULTPV 2488on the outer column)OPERATE PORV ... ADDX PORV 1E+10on the bottom layer)On DISPERC_FINGERS the 2450 ordinary cells together are 2e-15 of the total pore volume, so the budget can never be exceeded and the relaxed tolerance is in force on every iteration.
--relaxed-max-pv-fraction=1e30, which makes the relaxed branch unconditional, reproduces the default run exactly: 2501 Newton iterations, 96 failed substeps in both. The same effect is visible on SPE1CASE2_RADIAL, where 1357 of 1402 iterations are accepted at tolerance 1.0 and only 45 at the nominal 1e-2.So models with a refined near-well region, a pore-volume multiplier or a large boundary cell are effectively running at
tolerance-cnv-relaxed, which defaults to 1.0, rather than attolerance-cnv. Uniform models are not. That does not look intended, and it makes the acceptance criterion depend on grading rather than on the solution.Measured with a small script over the runs' INIT files (
PORV); happy to attach it. #7298 adds theCnvTolUsedcolumn that makes this visible in a normal run.