libsim  Versione 7.2.1

◆ quaconcli()

subroutine, public modqccli::quaconcli ( type(qcclitype), intent(inout)  qccli,
character (len=10), intent(in), optional  battrinv,
character (len=10), intent(in), optional  battrout,
logical, dimension(:), intent(in), optional  anamask,
logical, dimension(:), intent(in), optional  timemask,
logical, dimension(:), intent(in), optional  levelmask,
logical, dimension(:), intent(in), optional  timerangemask,
logical, dimension(:), intent(in), optional  varmask,
logical, dimension(:), intent(in), optional  networkmask 
)

Controllo di Qualità climatico.

Questo è il vero e proprio controllo di qualità climatico. Avendo a disposizione un volume dati climatico contenente i percentili suddivisi per area, altezza sul livello del mare, per mese dell'anno viene selezionato il percentile e sulla base di questo vengono assegnate le opportune confidenze.

Parametri
[in,out]qccliOggetto per il controllo di qualità
[in]battrinvattributo invalidated in input/output
[in]battroutattributo con la confidenza climatologica in output
[in]anamaskFiltro sulle anagrafiche
[in]timemaskFiltro sul tempo
[in]levelmaskFiltro sui livelli
[in]timerangemaskfiltro sui timerange
[in]varmaskFiltro sulle variabili
[in]networkmaskFiltro sui network

Definizione alla linea 1080 del file modqccli.F90.

1082  call l4f_log (l4f_debug,"qccli: skip station for a preceding invalidated flag")
1083 #endif
1084  cycle
1085  end if
1086  end if
1087 
1088  nintime=qccli%v7d%time(indtime)+timedelta_new(minute=30)
1089  CALL getval(nintime, month=mese, hour=ora)
1090 
1091  time=cyclicdatetime_to_conventional(cyclicdatetime_new(month=mese, hour=ora))
1092  !call init(time, year=1001, month=mese, day=1, hour=ora, minute=00)
1093 
1094 !!$ print *,"data convenzionale per percentili: ",t2c(time)
1095 
1096  level=qccli%v7d%level(indlevel)
1097 
1098  call init(network,"qcclima-perc")
1099 
1100  indcnetwork = index(qccli%extreme%network , network)
1101  indctime = index(qccli%extreme%time , time)
1102  indclevel = index(qccli%extreme%level , level)
1103  indctimerange = index(qccli%extreme%timerange , qccli%v7d%timerange(indtimerange))
1104 
1105  ! attenzione attenzione TODO
1106  ! se leggo da bufr il default è char e non reale
1107  indcdativarr = index(qccli%extreme%dativar%r, qccli%v7d%dativar%r(inddativarr))
1108 
1109 !!$ print *,"dato ",qccli%v7d%timerange(indtimerange)
1110 !!$ print *,"clima ",qccli%clima%timerange
1111 !!$ call l4f_log(L4F_INFO,"Index:"// to_char(indctime)//to_char(indclevel)//&
1112 !!$ to_char(indctimerange)//to_char(indcdativarr)//to_char(indcnetwork))
1113 
1114  !if (indcana <= 0 .or. indctime <= 0 .or. indclevel <= 0 .or. indctimerange <= 0 .or. indcdativarr <= 0 &
1115  ! .or. indcnetwork <= 0 ) cycle
1116 
1117 !!$ print *,"vector time"
1118 !!$ do i=1,size(qccli%extreme%time)
1119 !!$ call display(qccli%extreme%time(i))
1120 !!$ end do
1121 !!$ print *,"time"
1122 !!$ call display(time)
1123 !!$ call display(level)
1124 !!$ call display(qccli%v7d%timerange(indtimerange))
1125 !!$ print *,"indici percentili",indctime,indclevel,indctimerange,indcdativarr,indcnetwork
1126  if (indctime <= 0 .or. indclevel <= 0 .or. indctimerange <= 0 .or. indcdativarr <= 0 &
1127  .or. indcnetwork <= 0 ) cycle
1128 
1129  datoqui = qccli%v7d%voldatir (indana ,indtime ,indlevel ,indtimerange ,inddativarr, indnetwork )
1130 
1131  if (c_e(datoqui)) then
1132 
1133  ! find extreme in volume
1134  extremequii=rmiss
1135  extremequif=rmiss
1136  perc25=rmiss
1137  perc50=rmiss
1138  perc75=rmiss
1139 
1140 !!$ do i=1, size(qccli%extreme%ana)
1141 !!$ print *,i
1142 !!$ call display(qccli%extreme%ana(i))
1143 !!$ end do
1144 
1145  if (associated(qccli%extreme%voldatir)) then
1146 
1147  if (qccli%height2level) then
1148  k=iclv(indana)
1149  else
1150  k=0
1151  end if
1152 
1153 
1154 !!$ do i =1,size(qccli%extreme%ana)
1155 !!$ call display(qccli%extreme%ana(i))
1156 !!$ end do
1157 
1158  desc=25 ! minimum
1159  write(ident,'("#",i2.2,2i3.3)')k,iarea,desc ! macro-area e descrittore
1160  call init(ana,ident=ident,lat=latc,lon=lonc)
1161  indcana=index(qccli%extreme%ana,ana)
1162  if (indcana > 0 )then
1163  perc25=qccli%extreme%voldatir(indcana,indctime,indclevel,indctimerange,indcdativarr,indcnetwork)
1164  end if
1165 
1166  desc=50 ! mediana
1167  write(ident,'("#",i2.2,2i3.3)')k,iarea,desc ! macro-area e descrittore
1168  call init(ana,ident=ident,lat=latc,lon=lonc)
1169  indcana=index(qccli%extreme%ana,ana)
1170 !!$ call display(ana)
1171 !!$ print *,"indcana 50 ",indcana
1172  if (indcana > 0 )then
1173  perc50=qccli%extreme%voldatir(indcana,indctime,indclevel,indctimerange,indcdativarr,indcnetwork)
1174  end if
1175 
1176  desc=75 ! maximum
1177  write(ident,'("#",i2.2,2i3.3)')k,iarea,desc ! macro-area e descrittore
1178  call init(ana,ident=ident,lat=latc,lon=lonc)
1179  indcana=index(qccli%extreme%ana,ana)
1180  if (indcana > 0 )then
1181  perc75=qccli%extreme%voldatir(indcana,indctime,indclevel,indctimerange,indcdativarr,indcnetwork)
1182  end if
1183  end if
1184 
1185  if ( .not. c_e(perc25) .or. .not. c_e(perc50) .or. .not. c_e(perc75)) cycle
1186 
1187 !!$ print *, "datoqui: ",datoqui,"clima ->",perc25,perc50,perc75
1188 
1189  !http://it.wikipedia.org/wiki/Funzione_di_ripartizione_della_variabile_casuale_normale
1190  ! 3.65 for 0.01% each side ( 0.02% total )
1191  extremequii=perc50 - (perc75 - perc25) *1.3 * 3.65 ! 1.3 to go to standard deviation and 3.65 to make 3.65 sigma
1192  extremequif=perc50 + (perc75 - perc25) *1.3 * 3.65 ! 1.3 to go to standard deviation and 3.65 to make 3.65 sigma
1193 
1194 #ifdef DEBUG
1195  call l4f_log (l4f_debug,"qccli: gross error check "//t2c(extremequii)//">"//t2c(datoqui)//"<"//t2c(extremequif))
1196 #endif
1197 
1198 
1199  if ( datoqui <= extremequii .or. extremequif <= datoqui ) then
1200  ! make gross error check
1201 
1202  !ATTENZIONE TODO : inddativarr È UNA GRANDE SEMPLIFICAZIONE NON VERA SE TIPI DI DATO DIVERSI !!!!
1203 #ifdef DEBUG
1204  call l4f_log (l4f_debug,"qccli: gross error check flag set to bad")
1205 #endif
1206  qccli%v7d%voldatiattrb(indana,indtime,indlevel,indtimerange,inddativarr,indnetwork,indbattrout)=qcpar%gross_error
1207 
1208  if ( associated ( qccli%data_id_in)) then
1209 #ifdef DEBUG
1210  call l4f_log (l4f_debug,"id: "//t2c(&
1211  qccli%data_id_in(indana,indtime,indlevel,indtimerange,indnetwork)))
1212 #endif
1213  qccli%data_id_out(indana,indtime,indlevel,indtimerange,indnetwork)=&
1214  qccli%data_id_in(indana,indtime,indlevel,indtimerange,indnetwork)
1215  end if
1216 
1217 
1218  else if (.not. vdge(qccli%v7d%voldatiattrb(indana,indtime,indlevel,indtimerange,&
1219  inddativarr,indnetwork,indbattrout))) then
1220 
1221  ! gross error check allready done
1222 #ifdef DEBUG
1223  call l4f_log (l4f_warn,"qccli: skip station for a preceding gross error check flagged bad")
1224 #endif
1225  else
1226 
1227  ! normalize wihout call the subroutine to be more fast and do not change data volume
1228 
1229  !print *," --------> ",perc25,perc50,perc75,base_value(qccli%v7d%dativar%r(inddativarr)%btable)
1230  datoqui = (datoqui - perc50) / (perc75 - perc25) + base_value(qccli%v7d%dativar%r(inddativarr)%btable)
1231  !print *,"normalizzato=",datoqui
1232 
1233  ! start to compare with clima dataset (NDI)
1234  call init(network,"qcclima-ndi")
1235  ! reset the level to standard input data for everyone
1236  level=qccli%v7d%level(indlevel)
1237  time=cyclicdatetime_to_conventional(cyclicdatetime_new(month=mese))
1238 
1239  indcnetwork = index(qccli%clima%network , network)
1240  indctime = index(qccli%clima%time , time)
1241  indclevel = index(qccli%clima%level , level)
1242  indctimerange = index(qccli%clima%timerange , qccli%v7d%timerange(indtimerange))
1243 
1244  ! attenzione attenzione TODO
1245  ! se leggo da bufr il default è char e non reale
1246  indcdativarr = index(qccli%clima%dativar%r, qccli%v7d%dativar%r(inddativarr))
1247 
1248 
1249 !!$ print *,"indici clima", indctime, indclevel, indctimerange, indcdativarr, indcnetwork
1250  if (indctime <= 0 .or. indclevel <= 0 .or. indctimerange <= 0 .or. indcdativarr <= 0 &
1251  .or. indcnetwork <= 0 ) cycle
1252 
1253  !climat check
1254 
1255  do desc=1,size(qccli%clima%ana)
1256 
1257  climaquii=rmiss
1258  climaquif=rmiss
1259 
1260  write(ident,'("#",i2.2,2i3.3)')0,0,min(desc,size(qccli%clima%ana)-1) *10 ! macro-area e descrittore
1261  call init(ana,ident=ident,lat=0d0,lon=0d0)
1262  indcana=index(qccli%clima%ana,ana)
1263  if (indcana > 0 )then
1264  climaquif=qccli%clima%voldatir(indcana,indctime,indclevel,indctimerange,indcdativarr,indcnetwork)
1265  end if
1266 
1267 
1268  write(ident,'("#",i2.2,2i3.3)')0,0,(desc-1)*10 ! macro-area e descrittore
1269  call init(ana,ident=ident,lat=0d0,lon=0d0)
1270  indcana=index(qccli%clima%ana,ana)
1271 ! call display(ana)
1272 ! print*,indcana
1273  if (indcana > 0 )then
1274  climaquii=qccli%clima%voldatir(indcana,indctime,indclevel,indctimerange,indcdativarr,indcnetwork)
1275  end if
1276 
1277 
1278 !!$ call l4f_log (L4F_INFO,"ident: "//qccli%clima%ana(indcana)%ident//ident)
1279  !if ( match(qccli%clima%ana(indcana)%ident,ident) .and. c_e(climaquii) .and. c_e(climaquif)) then
1280  if ( c_e(climaquii) .and. c_e(climaquif )) then
1281 
1282 !!$ print *, "son qua",trim(qccli%clima%ana(indcana)%ident),trim(ident)
1283 !!$ where (match(qccli%clima%ana(:)%ident,ident).and. &
1284 !!$ c_e(qccli%clima%voldatir(indcana,indctime,indclevel,indctimerange,indcdativarr,indcnetwork)))
1285 !!$ call l4f_log (L4F_INFO,"macroarea,iarea,mese,altezza,level "//&
1286 !!$ trim(to_char(qccli%in_macroa(indana)))//" "//trim(to_char(iarea))&
1287 !!$ //" "//trim(to_char(mese))//" "//trim(to_char(altezza))//" "//trim(to_char(level)))
1288 !!$
1289 
1290 !!$ print*,"ndi=",climaquii,datoqui,climaquif
1291 
1292  if ( (climaquii <= datoqui.and. datoqui < climaquif) .or. &
1293  (desc == 1 .and. datoqui < climaquii) .or. &
1294  (desc == size(qccli%clima%ana) .and. datoqui >= climaquif) ) then
1295 
1296  if (c_e(qccli%clima%voldatiattrb(indcana &
1297  ,indctime,indclevel,indctimerange,indcdativarr,indcnetwork,1))) then
1298 
1299  !ATTENZIONE TODO : inddativarr È UNA GRANDE SEMPLIFICAZIONE NON VERA SE TIPI DI DATO DIVERSI !!!!
1300 
1301  !indcana is the left value as descr-1
1302  qccli%v7d%voldatiattrb(indana,indtime,indlevel,indtimerange,inddativarr,indnetwork,indbattrout)=&
1303  max(qccli%clima%voldatiattrb&
1304  (indcana,indctime,indclevel,indctimerange,indcdativarr,indcnetwork,1)&
1305  , 1_int_b) ! 0 reserved for gross error check
1306 
1307 #ifdef DEBUG
1308  call l4f_log (l4f_debug,"data ndi: "//t2c(datoqui)//"->"//&
1309  t2c(qccli%clima%voldatiattrb(indcana,indctime,indclevel,indctimerange,indcdativarr,indcnetwork,1))&
1310  //" : "//t2c(qccli%v7d%time(indtime)))
1311  call l4f_log (l4f_debug,"limits: "//t2c(indcana)//":"//qccli%clima%ana(indcana)%ident//&
1312  " : "//t2c(climaquii)//" - "//t2c(climaquif)//" : "//t2c(qccli%clima%time(indctime)))
1313  call l4f_log (l4f_debug,"qccli: clima check "//t2c(datoqui)//" confidence: "//&
1314  t2c(qccli%v7d%voldatiattrb(indana,indtime,indlevel,indtimerange,inddativarr,indnetwork,indbattrout))&
1315  //" : "//t2c(qccli%v7d%time(indtime)))
1316 #endif
1317 
1318 
1319  if ( associated ( qccli%data_id_in)) then
1320 #ifdef DEBUG
1321  call l4f_log (l4f_debug,"id: "//t2c(&
1322  qccli%data_id_in(indana,indtime,indlevel,indtimerange,indnetwork)))
1323 #endif
1324  qccli%data_id_out(indana,indtime,indlevel,indtimerange,indnetwork)=&
1325  qccli%data_id_in(indana,indtime,indlevel,indtimerange,indnetwork)
1326  end if
1327  end if
1328  end if
1329 !!$ end where
1330  end if
1331  end do
1332  end if
1333  end if
1334  end if
1335  end do
1336  end do
1337  end do
1338  end do
1339  end do
1340 !!$ end forall
1341 end do
1342 
1343 !!$print*,"risultato"
1344 !!$print *,qccli%v7d%voldatiattrb(:,:,:,:,:,:,indbattrout)
1345 !!$print*,"fine risultato"
1346 
1347 
1348 return
1349 
1350 end subroutine quaconcli
1351 
1352 
1356 subroutine cli_level(heigth,level)
1357 
1358 real,intent(in) :: heigth
1359 TYPE(vol7d_level),intent(out):: level
1360 
1361 integer :: i
1362 
1363 i=imiss
1364 
1365 if (c_e(heigth)) then
1366  i=firsttrue(cli_level1 <= heigth .and. heigth <= cli_level2 )
1367 end if
1368 
1369 if (i >= 1 .and. i <= 10 ) then
1370  call init(level, 102,cli_level1(i)*1000,102,cli_level2(i)*1000)
1371 else
1372  if (c_e(i)) CALL l4f_log(l4f_debug,"cli_level: strange level, heigth: "//to_char(heigth))
1373  call init(level)
1374 end if
1375 
1376 end subroutine cli_level
1377 
1378 
1380 subroutine cli_level_generate(level)
1381 
1382 TYPE(vol7d_level),intent(out):: level(:)
1383 
1384 integer :: i
1385 
1386 if (size(level) /= cli_nlevel ) then
1387  call l4f_log(l4f_error,"cli_level_generate: level dimension /= "//trim(to_char(cli_nlevel)))
1388  call raise_error("cli_level_generate: level dimension /= "//trim(to_char(cli_nlevel)))
1389 end if
1390 
1391 do i=1,cli_nlevel
1392  call init(level(i), 102,cli_level1(i)*1000,102,cli_level2(i)*1000)
1393 end do
1394 
1395 end subroutine cli_level_generate
1396 
1397 
1398 !!$subroutine qccli_validate(qccli)
1399 !!$type(qcclitype),intent(in) :: qccli
1400 !!$
1401 !!$!todo da validare
1402 !!$
1403 !!$return
1404 !!$end subroutine qccli_validate
1405 
1406 
1409 integer function supermacroa(macroa)
1410 
1411 integer, intent(in) :: macroa
1412  ! rielabora le macroarea facendole Valentine thinking
1413 
1414 supermacroa=imiss
1415 
1416 if (macroa == 1 .or. macroa == 2 .or. macroa == 4 ) supermacroa=3
1417 if (macroa == 3 .or. macroa == 5 .or. macroa == 6 ) supermacroa=2
1418 if (macroa == 7 .or. macroa == 8 ) supermacroa=1
1419 
1420 !!$ ! rielabora le macroarea facendole Valentine thinking
1421 !!$
1422 !!$ if (qccli%in_macroa(indana) == 1 .or. qccli%in_macroa(indana) == 2 .or. qccli%in_macroa(indana) == 4 ) iarea=3
1423 !!$ if (qccli%in_macroa(indana) == 3 .or. qccli%in_macroa(indana) == 5 .or. qccli%in_macroa(indana) == 6 ) iarea=2
1424 !!$ if (qccli%in_macroa(indana) == 7 .or. qccli%in_macroa(indana) == 8 ) iarea=1
1425 
1426 end function supermacroa
1427 
1428 
1429 SUBROUTINE qc_compute_percentile(this, perc_vals,cyclicdt,presentperc, presentnumb)
1430 
1431 TYPE(qcclitype),INTENT(inout) :: this
1432 !TYPE(timedelta),INTENT(in) :: step !< length of the step over which the statistical processing is performed
1433 !TYPE(datetime),INTENT(in),OPTIONAL :: start !< start of statistical processing interval
1434 !TYPE(datetime),INTENT(in),OPTIONAL :: stopp !< end of statistical processing interval
1435 real,intent(in) :: perc_vals(:)
1436 TYPE(cyclicdatetime),INTENT(in) :: cyclicdt
1437 real, optional :: presentperc
1438 integer, optional :: presentnumb
1440 
1441 integer :: indana,indtime,indvar,indnetwork,indlevel ,indtimerange ,inddativarr,i,j,k,iana,narea
1442 
1443 REAL, DIMENSION(:),allocatable :: perc
1444 TYPE(vol7d_var) :: var
1445 character(len=vol7d_ana_lenident) :: ident
1446 character(len=1) :: type
1447 integer :: areav(size(this%v7d%ana)),iclv(size(this%v7d%ana))
1448 real :: height
1449 logical,allocatable :: mask(:,:,:),maskplus(:,:,:), maskarea(:)
1450 integer,allocatable :: area(:)
1451 real :: lpresentperc
1452 integer :: lpresentnumb
1453 
1454 lpresentperc=optio_r(presentperc)
1455 lpresentnumb=optio_i(presentnumb)
1456 
1457 allocate (perc(size(perc_vals)))
1458 
1459 call delete(this%extreme)
1460 CALL init(this%extreme, time_definition=this%v7d%time_definition)
1461 
1462 call init(var, btable="B01192") ! MeteoDB station ID that here is the number of area
1463 
1464 type=cmiss
1465 indvar = index(this%v7d%anavar, var, type=type)
1466 indnetwork=min(1,size(this%v7d%network))
1467 
1468 if( indvar > 0 .and. indnetwork > 0 ) then
1469  select case (type)
1470  case("d")
1471  areav=integerdat(this%v7d%volanad(:,indvar,indnetwork),this%v7d%anavar%d(indvar))
1472  case("r")
1473  areav=integerdat(this%v7d%volanar(:,indvar,indnetwork),this%v7d%anavar%r(indvar))
1474  case("i")
1475  areav=integerdat(this%v7d%volanai(:,indvar,indnetwork),this%v7d%anavar%i(indvar))
1476  case("b")
1477  areav=integerdat(this%v7d%volanab(:,indvar,indnetwork),this%v7d%anavar%b(indvar))
1478  case("c")
1479  areav=integerdat(this%v7d%volanac(:,indvar,indnetwork),this%v7d%anavar%c(indvar))
1480  case default
1481  areav=imiss
1482  end select
1483 else
1484  areav=imiss
1485 end if
1486 
1487 allocate(maskarea(size(this%v7d%ana)))
1488 maskarea(:)= areav(:) /= imiss
1489 narea=count_distinct(areav,maskarea)
1490 allocate(area(narea))
1491 area=pack_distinct(areav,narea,maskarea)
1492 deallocate(maskarea)
1493 if (this%height2level) then
1494  call vol7d_alloc(this%extreme,nana=narea*size(perc_vals)*cli_nlevel)
1495 else
1496  call vol7d_alloc(this%extreme,nana=narea*size(perc_vals))
1497 endif
1498 
1499 if (this%height2level) then
1500 
1501  call init(var, btable="B07030") ! height
1502 
1503  type=cmiss
1504  indvar = index(this%v7d%anavar, var, type=type)
1505 
1506 !!$#ifdef DEBUG
1507 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar r '//t2c(SIZE(this%v7d%anavar%r)))
1508 !!$ if (ASSOCIATED(this%anavar%r)) then
1509 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar r '//t2c(SIZE(this%anavar%r)))
1510 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar r btable '//t2c(this%anavar%r(SIZE(this%anavar%r))%btable))
1511 !!$ endif
1512 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar i '//t2c(SIZE(this%anavar%i)))
1513 !!$ if (ASSOCIATED(this%anavar%i)) then
1514 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar i '//t2c(SIZE(this%anavar%i)))
1515 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar i btable '//t2c(this%anavar%i(SIZE(this%anavar%i))%btable))
1516 !!$ endif
1517 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar d '//t2c(SIZE(this%anavar%d)))
1518 !!$ if (ASSOCIATED(this%anavar%d)) then
1519 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar d '//t2c(SIZE(this%anavar%d)))
1520 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar d btable '//t2c(this%anavar%d(SIZE(this%anavar%d))%btable))
1521 !!$ endif
1522 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar b '//t2c(SIZE(this%anavar%b)))
1523 !!$ if (ASSOCIATED(this%anavar%b)) then
1524 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar b '//t2c(SIZE(this%anavar%b)))
1525 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar b btable '//t2c(this%anavar%d(SIZE(this%anavar%b))%btable))
1526 !!$ endif
1527 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar c '//t2c(SIZE(this%anavar%c)))
1528 !!$ if (ASSOCIATED(this%anavar%c)) then
1529 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar c '//t2c(SIZE(this%anavar%c)))
1530 !!$ CALL l4f_log(L4F_DEBUG, 'SIZE this anavar c btable '//t2c(this%anavar%c(SIZE(this%anavar%c))%btable))
1531 !!$ endif
1532 !!$ CALL l4f_log(L4F_DEBUG, 'indvar has value '//t2c(indvar))
1533 !!$ CALL l4f_log(L4F_DEBUG, 'indnetwork has value '//t2c(indnetwork))
1534 !!$#endif
1535 
1536  do k=1,size(this%v7d%ana)
1537  height=rmiss
1538 
Index method.

Generated with Doxygen.