- Store effective Binv rather than Schur complement 'S'.
- Add integer and floating point work arrays (BC handling,
pressure/flux back-substitution &c.)
Always allocate integer work array. Consequently, no need to jump
through hoops to avoid issues surrounding malloc(0).
Add simple procedure for imposing prescribed interface pressure
values (i.e., Dirichlet conditions).
Correct a few clerical errors (use of unitialised vars &c).
Assemble global system, but only for reservoir contributions. Well
contributions remain.
Add trivial procedure for deriving cell pressures and interface
fluxes (projected half-contact fluxes).
parameters and return values.
While here, convert function pair coarse_topology_build_coarsef()
and coarse_topology_build_final() to CSR push-back build mode.
deriving the non-zero structure of the global sparse matrix in
models with wells. At least for now. We may wish to use another
approach at some time...
symbol 'MATLAB_MEX_FILE' that is automatically defined by MATLAB's
MEX function.
Add declarations for factorisation, lin-sys solution, and matrix
inversion for (symmetric) positive definite full matrices in full
and packed formats. Will be used in the coarse-system assembly
process.
the set. Allow 'm' table-lookups (i==m is valid). Full table
detected by inspecting final s[j]. Finally, hash_set_insert_core()
does not return the key but rather the index at which the key was
inserted. Update assertion in hash_set_expand() to respect this
property.
Also, for increased transparency during debugging, assign
intermediate quantities of the hash function to separate variables.
- Initialise new neighbours to INT_MIN rather than -1. The latter
is a valid block (the outside) and it is better to properly
distinguish unset values from boundary blocks.
- Ensure NULL-initialisation of a block's neighbour structure when
this structure has just been allocated.
- Adjust bin-search algorithm to support i==nneigh (target larger
than all existing neighbouring blocks).
- This means that if i==nneigh, then we must take precaution so as
not to reference any invalid table elements. However, an
explicit check for i<nneigh means that the semantics of the
memmove() statement becomes more transparent.
- Finally, we must properly assign the 'nblocks' and 'nfaces'
fields of the struct coarse_topology before returning to caller.