libsim Versione 7.1.11
|
◆ 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 1323 del file vol7d_class.F90. 1324!! e degli attributi desiderati sono stati allocati ed è stato assegnato un
1325!! valore ai relativi membri btable (vedi vol7d_var_class::vol7d_var), se
1326!! i descrittori non sono stati allocati o assegnati, il metodo non fa niente.
1327SUBROUTINE vol7d_set_attr_ind(this)
1328TYPE(vol7d),INTENT(inout) :: this
1329
1330INTEGER :: i
1331
1332! real
1333IF (ASSOCIATED(this%dativar%r)) THEN
1334 IF (ASSOCIATED(this%dativarattr%r)) THEN
1335 DO i = 1, SIZE(this%dativar%r)
1336 this%dativar%r(i)%r = &
1337 firsttrue(this%dativar%r(i)%btable == this%dativarattr%r(:)%btable)
1338 ENDDO
1339 ENDIF
1340
1341 IF (ASSOCIATED(this%dativarattr%d)) THEN
1342 DO i = 1, SIZE(this%dativar%r)
1343 this%dativar%r(i)%d = &
1344 firsttrue(this%dativar%r(i)%btable == this%dativarattr%d(:)%btable)
1345 ENDDO
1346 ENDIF
1347
1348 IF (ASSOCIATED(this%dativarattr%i)) THEN
1349 DO i = 1, SIZE(this%dativar%r)
1350 this%dativar%r(i)%i = &
1351 firsttrue(this%dativar%r(i)%btable == this%dativarattr%i(:)%btable)
1352 ENDDO
1353 ENDIF
1354
1355 IF (ASSOCIATED(this%dativarattr%b)) THEN
1356 DO i = 1, SIZE(this%dativar%r)
1357 this%dativar%r(i)%b = &
1358 firsttrue(this%dativar%r(i)%btable == this%dativarattr%b(:)%btable)
1359 ENDDO
1360 ENDIF
1361
1362 IF (ASSOCIATED(this%dativarattr%c)) THEN
1363 DO i = 1, SIZE(this%dativar%r)
1364 this%dativar%r(i)%c = &
1365 firsttrue(this%dativar%r(i)%btable == this%dativarattr%c(:)%btable)
1366 ENDDO
1367 ENDIF
1368ENDIF
1369! double
1370IF (ASSOCIATED(this%dativar%d)) THEN
1371 IF (ASSOCIATED(this%dativarattr%r)) THEN
1372 DO i = 1, SIZE(this%dativar%d)
1373 this%dativar%d(i)%r = &
1374 firsttrue(this%dativar%d(i)%btable == this%dativarattr%r(:)%btable)
1375 ENDDO
1376 ENDIF
1377
1378 IF (ASSOCIATED(this%dativarattr%d)) THEN
1379 DO i = 1, SIZE(this%dativar%d)
1380 this%dativar%d(i)%d = &
1381 firsttrue(this%dativar%d(i)%btable == this%dativarattr%d(:)%btable)
1382 ENDDO
1383 ENDIF
1384
1385 IF (ASSOCIATED(this%dativarattr%i)) THEN
1386 DO i = 1, SIZE(this%dativar%d)
1387 this%dativar%d(i)%i = &
1388 firsttrue(this%dativar%d(i)%btable == this%dativarattr%i(:)%btable)
1389 ENDDO
1390 ENDIF
1391
1392 IF (ASSOCIATED(this%dativarattr%b)) THEN
1393 DO i = 1, SIZE(this%dativar%d)
1394 this%dativar%d(i)%b = &
1395 firsttrue(this%dativar%d(i)%btable == this%dativarattr%b(:)%btable)
1396 ENDDO
1397 ENDIF
1398
1399 IF (ASSOCIATED(this%dativarattr%c)) THEN
1400 DO i = 1, SIZE(this%dativar%d)
1401 this%dativar%d(i)%c = &
1402 firsttrue(this%dativar%d(i)%btable == this%dativarattr%c(:)%btable)
1403 ENDDO
1404 ENDIF
1405ENDIF
1406! integer
1407IF (ASSOCIATED(this%dativar%i)) THEN
1408 IF (ASSOCIATED(this%dativarattr%r)) THEN
1409 DO i = 1, SIZE(this%dativar%i)
1410 this%dativar%i(i)%r = &
1411 firsttrue(this%dativar%i(i)%btable == this%dativarattr%r(:)%btable)
1412 ENDDO
1413 ENDIF
1414
1415 IF (ASSOCIATED(this%dativarattr%d)) THEN
1416 DO i = 1, SIZE(this%dativar%i)
1417 this%dativar%i(i)%d = &
1418 firsttrue(this%dativar%i(i)%btable == this%dativarattr%d(:)%btable)
1419 ENDDO
1420 ENDIF
1421
1422 IF (ASSOCIATED(this%dativarattr%i)) THEN
1423 DO i = 1, SIZE(this%dativar%i)
1424 this%dativar%i(i)%i = &
1425 firsttrue(this%dativar%i(i)%btable == this%dativarattr%i(:)%btable)
1426 ENDDO
1427 ENDIF
1428
1429 IF (ASSOCIATED(this%dativarattr%b)) THEN
1430 DO i = 1, SIZE(this%dativar%i)
1431 this%dativar%i(i)%b = &
1432 firsttrue(this%dativar%i(i)%btable == this%dativarattr%b(:)%btable)
1433 ENDDO
1434 ENDIF
1435
1436 IF (ASSOCIATED(this%dativarattr%c)) THEN
1437 DO i = 1, SIZE(this%dativar%i)
1438 this%dativar%i(i)%c = &
1439 firsttrue(this%dativar%i(i)%btable == this%dativarattr%c(:)%btable)
1440 ENDDO
1441 ENDIF
1442ENDIF
1443! byte
1444IF (ASSOCIATED(this%dativar%b)) THEN
1445 IF (ASSOCIATED(this%dativarattr%r)) THEN
1446 DO i = 1, SIZE(this%dativar%b)
1447 this%dativar%b(i)%r = &
1448 firsttrue(this%dativar%b(i)%btable == this%dativarattr%r(:)%btable)
1449 ENDDO
1450 ENDIF
1451
1452 IF (ASSOCIATED(this%dativarattr%d)) THEN
1453 DO i = 1, SIZE(this%dativar%b)
1454 this%dativar%b(i)%d = &
1455 firsttrue(this%dativar%b(i)%btable == this%dativarattr%d(:)%btable)
1456 ENDDO
1457 ENDIF
1458
1459 IF (ASSOCIATED(this%dativarattr%i)) THEN
1460 DO i = 1, SIZE(this%dativar%b)
1461 this%dativar%b(i)%i = &
1462 firsttrue(this%dativar%b(i)%btable == this%dativarattr%i(:)%btable)
1463 ENDDO
1464 ENDIF
1465
1466 IF (ASSOCIATED(this%dativarattr%b)) THEN
1467 DO i = 1, SIZE(this%dativar%b)
1468 this%dativar%b(i)%b = &
1469 firsttrue(this%dativar%b(i)%btable == this%dativarattr%b(:)%btable)
1470 ENDDO
1471 ENDIF
1472
1473 IF (ASSOCIATED(this%dativarattr%c)) THEN
1474 DO i = 1, SIZE(this%dativar%b)
1475 this%dativar%b(i)%c = &
1476 firsttrue(this%dativar%b(i)%btable == this%dativarattr%c(:)%btable)
1477 ENDDO
1478 ENDIF
1479ENDIF
1480! character
1481IF (ASSOCIATED(this%dativar%c)) THEN
1482 IF (ASSOCIATED(this%dativarattr%r)) THEN
1483 DO i = 1, SIZE(this%dativar%c)
1484 this%dativar%c(i)%r = &
1485 firsttrue(this%dativar%c(i)%btable == this%dativarattr%r(:)%btable)
1486 ENDDO
1487 ENDIF
1488
1489 IF (ASSOCIATED(this%dativarattr%d)) THEN
1490 DO i = 1, SIZE(this%dativar%c)
1491 this%dativar%c(i)%d = &
1492 firsttrue(this%dativar%c(i)%btable == this%dativarattr%d(:)%btable)
1493 ENDDO
1494 ENDIF
1495
1496 IF (ASSOCIATED(this%dativarattr%i)) THEN
1497 DO i = 1, SIZE(this%dativar%c)
1498 this%dativar%c(i)%i = &
1499 firsttrue(this%dativar%c(i)%btable == this%dativarattr%i(:)%btable)
1500 ENDDO
1501 ENDIF
1502
|