libsim  Versione6.3.0

◆ vol7d_alloc()

subroutine vol7d_class::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 1065 del file vol7d_class.F90.

1065 ENDIF
1066 
1067 IF (ASSOCIATED(this%anaattr%c) .AND. ASSOCIATED(this%anavarattr%c) .AND. &
1068  .NOT.ASSOCIATED(this%volanaattrc)) THEN
1069  vol7d_check_vol = .false.
1070 ENDIF
1071 
1072 ! Dati
1073 IF (ASSOCIATED(this%dativar%r) .AND. .NOT.ASSOCIATED(this%voldatir)) THEN
1074  vol7d_check_vol = .false.
1075 ENDIF
1076 
1077 IF (ASSOCIATED(this%dativar%d) .AND. .NOT.ASSOCIATED(this%voldatid)) THEN
1078  vol7d_check_vol = .false.
1079 ENDIF
1080 
1081 IF (ASSOCIATED(this%dativar%i) .AND. .NOT.ASSOCIATED(this%voldatii)) THEN
1082  vol7d_check_vol = .false.
1083 ENDIF
1084 
1085 IF (ASSOCIATED(this%dativar%b) .AND. .NOT.ASSOCIATED(this%voldatib)) THEN
1086  vol7d_check_vol = .false.
1087 ENDIF
1088 
1089 IF (ASSOCIATED(this%dativar%c) .AND. .NOT.ASSOCIATED(this%voldatic)) THEN
1090  vol7d_check_vol = .false.
1091 ENDIF
1092 
1093 ! Attributi dei dati
1094 IF (ASSOCIATED(this%datiattr%r) .AND. ASSOCIATED(this%dativarattr%r) .AND. &
1095  .NOT.ASSOCIATED(this%voldatiattrr)) THEN
1096  vol7d_check_vol = .false.
1097 ENDIF
1098 
1099 IF (ASSOCIATED(this%datiattr%d) .AND. ASSOCIATED(this%dativarattr%d) .AND. &
1100  .NOT.ASSOCIATED(this%voldatiattrd)) THEN
1101  vol7d_check_vol = .false.
1102 ENDIF
1103 
1104 IF (ASSOCIATED(this%datiattr%i) .AND. ASSOCIATED(this%dativarattr%i) .AND. &
1105  .NOT.ASSOCIATED(this%voldatiattri)) THEN
1106  vol7d_check_vol = .false.
1107 ENDIF
1108 
1109 IF (ASSOCIATED(this%datiattr%b) .AND. ASSOCIATED(this%dativarattr%b) .AND. &
1110  .NOT.ASSOCIATED(this%voldatiattrb)) THEN
1111  vol7d_check_vol = .false.
1112 ENDIF
1113 
1114 IF (ASSOCIATED(this%datiattr%c) .AND. ASSOCIATED(this%dativarattr%c) .AND. &
1115  .NOT.ASSOCIATED(this%voldatiattrc)) THEN
1116  vol7d_check_vol = .false.
1117 ENDIF
1118 IF (ASSOCIATED(this%dativar%r) .OR. ASSOCIATED(this%dativar%d) .OR. &
1119  ASSOCIATED(this%dativar%i) .OR. ASSOCIATED(this%dativar%b) .OR. &
1120  ASSOCIATED(this%dativar%c)) THEN
1121  vol7d_check_vol = vol7d_check_vol .AND. vol7d_check_alloc_dati(this)
1122 ENDIF
1123 
1124 END FUNCTION vol7d_check_vol
1125 
1126 
1141 SUBROUTINE vol7d_alloc_vol(this, ini, inivol)
1142 TYPE(vol7d),INTENT(inout) :: this
1143 LOGICAL,INTENT(in),OPTIONAL :: ini
1144 LOGICAL,INTENT(in),OPTIONAL :: inivol
1145 
1146 LOGICAL :: linivol
1147 
1148 IF (PRESENT(inivol)) THEN
1149  linivol = inivol
1150 ELSE
1151  linivol = .true.
1152 ENDIF
1153 
1154 ! Anagrafica
1155 IF (ASSOCIATED(this%anavar%r) .AND. .NOT.ASSOCIATED(this%volanar)) THEN
1156  CALL vol7d_force_alloc_ana(this, ini)
1157  ALLOCATE(this%volanar(SIZE(this%ana), SIZE(this%anavar%r), SIZE(this%network)))
1158  IF (linivol) this%volanar(:,:,:) = rmiss
1159 ENDIF

Generated with Doxygen.