libsim Versione 8.0.0

◆ vol7d_alloc()

subroutine vol7d_alloc ( type(vol7d), intent(inout) this,
integer, intent(in), optional nana,
integer, intent(in), optional ntime,
integer, intent(in), optional nlevel,
integer, intent(in), optional ntimerange,
integer, intent(in), optional nnetwork,
integer, intent(in), optional nanavarr,
integer, intent(in), optional nanavard,
integer, intent(in), optional nanavari,
integer, intent(in), optional nanavarb,
integer, intent(in), optional nanavarc,
integer, intent(in), optional nanaattrr,
integer, intent(in), optional nanaattrd,
integer, intent(in), optional nanaattri,
integer, intent(in), optional nanaattrb,
integer, intent(in), optional nanaattrc,
integer, intent(in), optional nanavarattrr,
integer, intent(in), optional nanavarattrd,
integer, intent(in), optional nanavarattri,
integer, intent(in), optional nanavarattrb,
integer, intent(in), optional nanavarattrc,
integer, intent(in), optional ndativarr,
integer, intent(in), optional ndativard,
integer, intent(in), optional ndativari,
integer, intent(in), optional ndativarb,
integer, intent(in), optional ndativarc,
integer, intent(in), optional ndatiattrr,
integer, intent(in), optional ndatiattrd,
integer, intent(in), optional ndatiattri,
integer, intent(in), optional ndatiattrb,
integer, intent(in), optional ndatiattrc,
integer, intent(in), optional ndativarattrr,
integer, intent(in), optional ndativarattrd,
integer, intent(in), optional ndativarattri,
integer, intent(in), optional ndativarattrb,
integer, intent(in), optional ndativarattrc,
logical, intent(in), optional ini )

Metodo per allocare i descrittori delle 7 dimensioni.

Riceve un grande numero di parametri opzionali che indicano quali descrittori allocare e con quale estensione; i descrittori non specificati non vengono toccati. Può essere quindi chiamato più volte allocando via via descrittori relativi a dimensioni diverse. Se un descrittore richiesto è già allocato, viene deallocato (perdendone l'eventuale contenuto) e riallocato con l'estensione richiesta. Per i descrittori relativi a dimensioni che non siano variabili o attributi, è possibile specificare l'estensione di una dimensione a 0, in tal caso il descrittore viene comunque allocato con lunghezza nulla, che è diverso da non allocarlo. Per i descrittori di variabili e attributi passare un'estensione 0 equivale a non fornire il parametro. Avere uno o più descrittori dimensionati con estensione nulla fa sì che anche il volume dati successivamente allocato abbia estensione nulla; sebbene ciò appaia inutile, un volume del genere può in realtà servire, in associazione ai metodi vol7d_merge o vol7d_append per estendere un volume esistente aggiungendo elementi in alcune dimensioni (quelle a estensione non nulla, ovviamente) e mantenendo invariato tutto il resto. Per quanto riguarda i descrittori delle dimensioni relative alle variabili, la relativa estensione è specificata con la nomenclatura n<x><y><z> dove <x> può valere:

  • ana per variabili relative a voumi di anagrafica
  • dati per variabili relative a voumi di dati

<y> può valere:

  • var per variabili
  • attr per attributi
  • varattr variabili aventi attributi nei volumi di attributi

<z> può valere:

  • r per variabili o attributi a valori reali
  • d per variabili o attributi a valori a doppia precisione
  • i per variabili o attributi a valori interi
  • b per variabili o attributi a valori byte
  • c per variabili o attributi a valori carattere
    Parametri
    [in,out]thisoggetto di cui allocare i descrittori
    [in]nanaestensione della dimensione anagrafica
    [in]ntimeestensione della dimensione tempo
    [in]nlevelestensione della dimensione livello varticale
    [in]ntimerangeestensione della dimensione intervallo temporale (timerange)
    [in]nnetworkestensione della dimensione rete
    [in]nanavarrestensione delle possibili dimensioni variabile
    [in]nanavardestensione delle possibili dimensioni variabile
    [in]nanavariestensione delle possibili dimensioni variabile
    [in]nanavarbestensione delle possibili dimensioni variabile
    [in]nanavarcestensione delle possibili dimensioni variabile
    [in]nanaattrrestensione delle possibili dimensioni variabile
    [in]nanaattrdestensione delle possibili dimensioni variabile
    [in]nanaattriestensione delle possibili dimensioni variabile
    [in]nanaattrbestensione delle possibili dimensioni variabile
    [in]nanaattrcestensione delle possibili dimensioni variabile
    [in]nanavarattrrestensione delle possibili dimensioni variabile
    [in]nanavarattrdestensione delle possibili dimensioni variabile
    [in]nanavarattriestensione delle possibili dimensioni variabile
    [in]nanavarattrbestensione delle possibili dimensioni variabile
    [in]nanavarattrcestensione delle possibili dimensioni variabile
    [in]ndativarrestensione delle possibili dimensioni variabile
    [in]ndativardestensione delle possibili dimensioni variabile
    [in]ndativariestensione delle possibili dimensioni variabile
    [in]ndativarbestensione delle possibili dimensioni variabile
    [in]ndativarcestensione delle possibili dimensioni variabile
    [in]ndatiattrrestensione delle possibili dimensioni variabile
    [in]ndatiattrdestensione delle possibili dimensioni variabile
    [in]ndatiattriestensione delle possibili dimensioni variabile
    [in]ndatiattrbestensione delle possibili dimensioni variabile
    [in]ndatiattrcestensione delle possibili dimensioni variabile
    [in]ndativarattrrestensione delle possibili dimensioni variabile
    [in]ndativarattrdestensione delle possibili dimensioni variabile
    [in]ndativarattriestensione delle possibili dimensioni variabile
    [in]ndativarattrbestensione delle possibili dimensioni variabile
    [in]ndativarattrcestensione delle possibili dimensioni variabile
    [in]inise fornito e vale .TRUE., viene chiamato il costruttore, senza parametri opzionali, per ogni elemento di tutti i descrittori allocati, inizializzandolo quindi a valore mancante

Definizione alla linea 1030 del file vol7d_class.F90.

1038IF (ASSOCIATED(this%anavar%r) .OR. ASSOCIATED(this%anavar%d) .OR. &
1039 ASSOCIATED(this%anavar%i) .OR. ASSOCIATED(this%anavar%b) .OR. &
1040 ASSOCIATED(this%anavar%c)) THEN
1041 vol7d_check_vol = vol7d_check_vol .AND. vol7d_check_alloc_ana(this)
1042ENDIF
1043
1044! Attributi dell'anagrafica
1045IF (ASSOCIATED(this%anaattr%r) .AND. ASSOCIATED(this%anavarattr%r) .AND. &
1046 .NOT.ASSOCIATED(this%volanaattrr)) THEN
1047 vol7d_check_vol = .false.
1048ENDIF
1049
1050IF (ASSOCIATED(this%anaattr%d) .AND. ASSOCIATED(this%anavarattr%d) .AND. &
1051 .NOT.ASSOCIATED(this%volanaattrd)) THEN
1052 vol7d_check_vol = .false.
1053ENDIF
1054
1055IF (ASSOCIATED(this%anaattr%i) .AND. ASSOCIATED(this%anavarattr%i) .AND. &
1056 .NOT.ASSOCIATED(this%volanaattri)) THEN
1057 vol7d_check_vol = .false.
1058ENDIF
1059
1060IF (ASSOCIATED(this%anaattr%b) .AND. ASSOCIATED(this%anavarattr%b) .AND. &
1061 .NOT.ASSOCIATED(this%volanaattrb)) THEN
1062 vol7d_check_vol = .false.
1063ENDIF
1064
1065IF (ASSOCIATED(this%anaattr%c) .AND. ASSOCIATED(this%anavarattr%c) .AND. &
1066 .NOT.ASSOCIATED(this%volanaattrc)) THEN
1067 vol7d_check_vol = .false.
1068ENDIF
1069
1070! Dati
1071IF (ASSOCIATED(this%dativar%r) .AND. .NOT.ASSOCIATED(this%voldatir)) THEN
1072 vol7d_check_vol = .false.
1073ENDIF
1074
1075IF (ASSOCIATED(this%dativar%d) .AND. .NOT.ASSOCIATED(this%voldatid)) THEN
1076 vol7d_check_vol = .false.
1077ENDIF
1078
1079IF (ASSOCIATED(this%dativar%i) .AND. .NOT.ASSOCIATED(this%voldatii)) THEN
1080 vol7d_check_vol = .false.
1081ENDIF
1082
1083IF (ASSOCIATED(this%dativar%b) .AND. .NOT.ASSOCIATED(this%voldatib)) THEN
1084 vol7d_check_vol = .false.
1085ENDIF
1086
1087IF (ASSOCIATED(this%dativar%c) .AND. .NOT.ASSOCIATED(this%voldatic)) THEN
1088 vol7d_check_vol = .false.
1089ENDIF
1090
1091! Attributi dei dati
1092IF (ASSOCIATED(this%datiattr%r) .AND. ASSOCIATED(this%dativarattr%r) .AND. &
1093 .NOT.ASSOCIATED(this%voldatiattrr)) THEN
1094 vol7d_check_vol = .false.
1095ENDIF
1096
1097IF (ASSOCIATED(this%datiattr%d) .AND. ASSOCIATED(this%dativarattr%d) .AND. &
1098 .NOT.ASSOCIATED(this%voldatiattrd)) THEN
1099 vol7d_check_vol = .false.
1100ENDIF
1101
1102IF (ASSOCIATED(this%datiattr%i) .AND. ASSOCIATED(this%dativarattr%i) .AND. &
1103 .NOT.ASSOCIATED(this%voldatiattri)) THEN
1104 vol7d_check_vol = .false.
1105ENDIF
1106
1107IF (ASSOCIATED(this%datiattr%b) .AND. ASSOCIATED(this%dativarattr%b) .AND. &
1108 .NOT.ASSOCIATED(this%voldatiattrb)) THEN
1109 vol7d_check_vol = .false.
1110ENDIF
1111
1112IF (ASSOCIATED(this%datiattr%c) .AND. ASSOCIATED(this%dativarattr%c) .AND. &
1113 .NOT.ASSOCIATED(this%voldatiattrc)) THEN
1114 vol7d_check_vol = .false.
1115ENDIF
1116IF (ASSOCIATED(this%dativar%r) .OR. ASSOCIATED(this%dativar%d) .OR. &
1117 ASSOCIATED(this%dativar%i) .OR. ASSOCIATED(this%dativar%b) .OR. &
1118 ASSOCIATED(this%dativar%c)) THEN
1119 vol7d_check_vol = vol7d_check_vol .AND. vol7d_check_alloc_dati(this)
1120ENDIF
1121
1122END FUNCTION vol7d_check_vol
1123
1124
1125!> Metodo per allocare i volumi richiesti di variabili e attributi per
1126!! anagrafica e dati.
1127!! Se alcuni dei descrittori relativi alle dimensioni anagrafica,
1128!! livello verticale, tempo, intervallo temporale (timerange), rete non sono
1129!! stati richiesti preventivamente con la ::vol7d_alloc, essi vengono allocati
1130!! automaticamente da questo metodo
1131!! con estensione di default pari a 1 (non 0!), questo significa, ad esempio,
1132!! che se prevedo di avere soli dati superficiali, cioè ad un solo livello

Generated with Doxygen.