|
libsim Versione 8.0.0
|
◆ vol7d_alloc_vol()
Metodo per allocare i volumi richiesti di variabili e attributi per anagrafica e dati. Se alcuni dei descrittori relativi alle dimensioni anagrafica, livello verticale, tempo, intervallo temporale (timerange), rete non sono stati richiesti preventivamente con la vol7d_alloc, essi vengono allocati automaticamente da questo metodo con estensione di default pari a 1 (non 0!), questo significa, ad esempio, che se prevedo di avere soli dati superficiali, cioè ad un solo livello verticale, o una sola rete di stazioni, non devo preoccuparmi di specificare questa informazione. Tra i 20 possibili volumi allocabili ((variabili,attributi)*(anagrafica,dati)*(r,d,i,b,c)=20) saranno allocati solo quelli per cui è stato precedentemente richiesto il corrispondente descrittore variabili/attributi con la vol7d_alloc.
Definizione alla linea 1318 del file vol7d_class.F90. 1319END SUBROUTINE vol7d_alloc_vol
1320
1321
1322!> Metodo per creare gli indici che associano le variabili aventi attributo
1323!! alle variabili nei relativi descrittori.
1324!! Ha senso chiamare questo metodo solo dopo che i descrittori delle variabili
1325!! e degli attributi desiderati sono stati allocati ed è stato assegnato un
1326!! valore ai relativi membri btable (vedi vol7d_var_class::vol7d_var), se
1327!! i descrittori non sono stati allocati o assegnati, il metodo non fa niente.
1328SUBROUTINE vol7d_set_attr_ind(this)
1329TYPE(vol7d),INTENT(inout) :: this !< oggetto in cui creare gli indici
1330
1331INTEGER :: i
1332
1333! real
1334IF (ASSOCIATED(this%dativar%r)) THEN
1335 IF (ASSOCIATED(this%dativarattr%r)) THEN
1336 DO i = 1, SIZE(this%dativar%r)
1337 this%dativar%r(i)%r = &
1338 firsttrue(this%dativar%r(i)%btable == this%dativarattr%r(:)%btable)
1339 ENDDO
1340 ENDIF
1341
1342 IF (ASSOCIATED(this%dativarattr%d)) THEN
1343 DO i = 1, SIZE(this%dativar%r)
1344 this%dativar%r(i)%d = &
1345 firsttrue(this%dativar%r(i)%btable == this%dativarattr%d(:)%btable)
1346 ENDDO
1347 ENDIF
1348
1349 IF (ASSOCIATED(this%dativarattr%i)) THEN
1350 DO i = 1, SIZE(this%dativar%r)
1351 this%dativar%r(i)%i = &
1352 firsttrue(this%dativar%r(i)%btable == this%dativarattr%i(:)%btable)
1353 ENDDO
1354 ENDIF
1355
1356 IF (ASSOCIATED(this%dativarattr%b)) THEN
1357 DO i = 1, SIZE(this%dativar%r)
1358 this%dativar%r(i)%b = &
1359 firsttrue(this%dativar%r(i)%btable == this%dativarattr%b(:)%btable)
1360 ENDDO
1361 ENDIF
1362
1363 IF (ASSOCIATED(this%dativarattr%c)) THEN
1364 DO i = 1, SIZE(this%dativar%r)
1365 this%dativar%r(i)%c = &
1366 firsttrue(this%dativar%r(i)%btable == this%dativarattr%c(:)%btable)
1367 ENDDO
1368 ENDIF
1369ENDIF
1370! double
1371IF (ASSOCIATED(this%dativar%d)) THEN
1372 IF (ASSOCIATED(this%dativarattr%r)) THEN
1373 DO i = 1, SIZE(this%dativar%d)
1374 this%dativar%d(i)%r = &
1375 firsttrue(this%dativar%d(i)%btable == this%dativarattr%r(:)%btable)
1376 ENDDO
1377 ENDIF
1378
1379 IF (ASSOCIATED(this%dativarattr%d)) THEN
1380 DO i = 1, SIZE(this%dativar%d)
1381 this%dativar%d(i)%d = &
1382 firsttrue(this%dativar%d(i)%btable == this%dativarattr%d(:)%btable)
1383 ENDDO
1384 ENDIF
1385
1386 IF (ASSOCIATED(this%dativarattr%i)) THEN
1387 DO i = 1, SIZE(this%dativar%d)
1388 this%dativar%d(i)%i = &
1389 firsttrue(this%dativar%d(i)%btable == this%dativarattr%i(:)%btable)
1390 ENDDO
1391 ENDIF
1392
1393 IF (ASSOCIATED(this%dativarattr%b)) THEN
1394 DO i = 1, SIZE(this%dativar%d)
1395 this%dativar%d(i)%b = &
1396 firsttrue(this%dativar%d(i)%btable == this%dativarattr%b(:)%btable)
1397 ENDDO
1398 ENDIF
1399
1400 IF (ASSOCIATED(this%dativarattr%c)) THEN
1401 DO i = 1, SIZE(this%dativar%d)
1402 this%dativar%d(i)%c = &
1403 firsttrue(this%dativar%d(i)%btable == this%dativarattr%c(:)%btable)
1404 ENDDO
1405 ENDIF
1406ENDIF
1407! integer
1408IF (ASSOCIATED(this%dativar%i)) THEN
1409 IF (ASSOCIATED(this%dativarattr%r)) THEN
1410 DO i = 1, SIZE(this%dativar%i)
1411 this%dativar%i(i)%r = &
1412 firsttrue(this%dativar%i(i)%btable == this%dativarattr%r(:)%btable)
1413 ENDDO
1414 ENDIF
1415
1416 IF (ASSOCIATED(this%dativarattr%d)) THEN
1417 DO i = 1, SIZE(this%dativar%i)
1418 this%dativar%i(i)%d = &
1419 firsttrue(this%dativar%i(i)%btable == this%dativarattr%d(:)%btable)
1420 ENDDO
1421 ENDIF
1422
1423 IF (ASSOCIATED(this%dativarattr%i)) THEN
1424 DO i = 1, SIZE(this%dativar%i)
1425 this%dativar%i(i)%i = &
1426 firsttrue(this%dativar%i(i)%btable == this%dativarattr%i(:)%btable)
1427 ENDDO
1428 ENDIF
1429
1430 IF (ASSOCIATED(this%dativarattr%b)) THEN
1431 DO i = 1, SIZE(this%dativar%i)
1432 this%dativar%i(i)%b = &
1433 firsttrue(this%dativar%i(i)%btable == this%dativarattr%b(:)%btable)
1434 ENDDO
1435 ENDIF
1436
1437 IF (ASSOCIATED(this%dativarattr%c)) THEN
1438 DO i = 1, SIZE(this%dativar%i)
1439 this%dativar%i(i)%c = &
1440 firsttrue(this%dativar%i(i)%btable == this%dativarattr%c(:)%btable)
1441 ENDDO
1442 ENDIF
1443ENDIF
1444! byte
1445IF (ASSOCIATED(this%dativar%b)) THEN
1446 IF (ASSOCIATED(this%dativarattr%r)) THEN
1447 DO i = 1, SIZE(this%dativar%b)
1448 this%dativar%b(i)%r = &
1449 firsttrue(this%dativar%b(i)%btable == this%dativarattr%r(:)%btable)
1450 ENDDO
1451 ENDIF
1452
1453 IF (ASSOCIATED(this%dativarattr%d)) THEN
1454 DO i = 1, SIZE(this%dativar%b)
1455 this%dativar%b(i)%d = &
1456 firsttrue(this%dativar%b(i)%btable == this%dativarattr%d(:)%btable)
1457 ENDDO
1458 ENDIF
1459
1460 IF (ASSOCIATED(this%dativarattr%i)) THEN
1461 DO i = 1, SIZE(this%dativar%b)
1462 this%dativar%b(i)%i = &
1463 firsttrue(this%dativar%b(i)%btable == this%dativarattr%i(:)%btable)
1464 ENDDO
1465 ENDIF
1466
1467 IF (ASSOCIATED(this%dativarattr%b)) THEN
1468 DO i = 1, SIZE(this%dativar%b)
1469 this%dativar%b(i)%b = &
1470 firsttrue(this%dativar%b(i)%btable == this%dativarattr%b(:)%btable)
1471 ENDDO
1472 ENDIF
1473
1474 IF (ASSOCIATED(this%dativarattr%c)) THEN
1475 DO i = 1, SIZE(this%dativar%b)
1476 this%dativar%b(i)%c = &
1477 firsttrue(this%dativar%b(i)%btable == this%dativarattr%c(:)%btable)
1478 ENDDO
1479 ENDIF
1480ENDIF
1481! character
1482IF (ASSOCIATED(this%dativar%c)) THEN
1483 IF (ASSOCIATED(this%dativarattr%r)) THEN
1484 DO i = 1, SIZE(this%dativar%c)
1485 this%dativar%c(i)%r = &
1486 firsttrue(this%dativar%c(i)%btable == this%dativarattr%r(:)%btable)
1487 ENDDO
1488 ENDIF
1489
1490 IF (ASSOCIATED(this%dativarattr%d)) THEN
1491 DO i = 1, SIZE(this%dativar%c)
1492 this%dativar%c(i)%d = &
1493 firsttrue(this%dativar%c(i)%btable == this%dativarattr%d(:)%btable)
1494 ENDDO
1495 ENDIF
1496
1497 IF (ASSOCIATED(this%dativarattr%i)) THEN
|