|
subroutine vol7d_append |
( |
type(vol7d), intent(inout) |
this, |
|
|
type(vol7d), intent(in) |
that, |
|
|
logical, intent(in), optional |
sort, |
|
|
logical, intent(in), optional |
bestdata, |
|
|
logical, intent(in), optional |
ltimesimple, |
|
|
logical, intent(in), optional |
ltimerangesimple, |
|
|
logical, intent(in), optional |
llevelsimple, |
|
|
logical, intent(in), optional |
lanasimple, |
|
|
logical, intent(in), optional |
lnetworksimple |
|
) |
| |
Metodo per accodare un oggetto vol7d ad un altro.
Si tratta di un metodo molto potente e versatile; i descrittori delle dimensioni del volume finale conterranno i valori dei corrispondenti descrittori del primo e del secondo volume e i volumi di anagrafica e dati conterranno i valori dei due volumi ai posti giusti, e valori mancanti per le nuove combinazioni che eventualmente si verranno a creare. Se i volumi multidimensionali di anagrafica e/o dati dei 2 oggetti hanno un'intersezione non nulla, negli elementi comuni il volume finale conterrà il corrispondente elemento del secondo volume. Attenzione che, durante l'esecuzione del metodo, la memoria richiesta è pari alla memoria complessiva occupata dai 2 volumi iniziali più la memoria complessiva del volume finale, per cui, nel caso di volumi grandi, ci potrebbero essere problemi di esaurimento della memoria centrale. Se l'oggetto that è vuoto non perde tempo inutile,
- Da fare:
- nel caso di elementi comuni inserire la possibiità (opzionale per non penalizzare le prestazioni quando ciò non serve) di effettuare una scelta più ragionata dell'elemento da tenere, almeno controllando i dati mancanti se non le flag di qualità
- Da fare:
- "rateizzare" l'allocazione dei volumi per ridurre l'occupazione di memoria nel caso siano allocati contemporaneamente volumi di variabili e di attributi o più volumi di tipi diversi
- Da fare:
- il parametro that è dichiarato INOUT perché la vol7d_alloc_vol può modificarlo, bisognerebbe implementare una vol7d_check_vol che restituisca errore anziché usare la vol7d_alloc_vol.
- Parametri
-
[in,out] | this | primo oggetto in ingresso, a cui sarà accodato il secondo |
[in] | that | secondo oggetto in ingresso, non viene modificato dal metodo |
[in] | sort | se fornito e uguale a .TRUE., i descrittori che supportano un ordinamento (operatori > e/o <) risulteranno ordinati in ordine crescente nell'oggetto finale |
[in] | bestdata | if provided and .TRUE. in case of overlapping volumes keep valid data where available, or data from the second volume if both valid |
Definizione alla linea 1765 del file vol7d_class.F90.
|