libsim  Versione 7.1.8

◆ vol7d_convr()

subroutine vol7d_class::vol7d_convr ( type(vol7d), intent(in)  this,
type(vol7d), intent(inout)  that,
logical, intent(in), optional  anaconv 
)

Metodo per convertire i volumi di dati di un oggetto vol7d in dati reali dove possibile.

L'oggetto convertito è una copia completa dell'originale che può essere quindi distrutto dopo la chiamata. Per i dati di anagrafica, al momento sono convertiti solo i dati CHARACTER se è passato anaconv=.TRUE. Gli attributi non sono toccati.

Parametri
[in]thisoggetto origine
[in,out]thatoggetto convertito
[in]anaconvconverti anche anagrafica

Definizione alla linea 2276 del file vol7d_class.F90.

2277  DEALLOCATE(v7d_tmp%volanac)
2278 ! trasferisco le variabili
2279  v7d_tmp%anavar%r => v7d_tmp%anavar%c
2280  NULLIFY(v7d_tmp%anavar%c)
2281  ENDIF
2282 
2283  IF (ASSOCIATED(v7d_tmp%dativar%c)) THEN
2284 ! alloco i dati reali e vi trasferisco i character
2285  ALLOCATE(v7d_tmp%voldatir(SIZE(v7d_tmp%voldatic, 1), SIZE(v7d_tmp%voldatic, 2), &
2286  SIZE(v7d_tmp%voldatic, 3), SIZE(v7d_tmp%voldatic, 4), SIZE(v7d_tmp%voldatic, 5), &
2287  SIZE(v7d_tmp%voldatic, 6)))
2288  DO i = 1, SIZE(v7d_tmp%dativar%c)
2289  v7d_tmp%voldatir(:,:,:,:,i,:) = &
2290  realdat(v7d_tmp%voldatic(:,:,:,:,i,:), v7d_tmp%dativar%c(i))
2291  ENDDO
2292  DEALLOCATE(v7d_tmp%voldatic)
2293 ! trasferisco le variabili
2294  v7d_tmp%dativar%r => v7d_tmp%dativar%c
2295  NULLIFY(v7d_tmp%dativar%c)
2296  ENDIF
2297 
2298 ! fondo con il volume definitivo
2299  CALL vol7d_merge(that, v7d_tmp)
2300 ELSE
2301  CALL delete(v7d_tmp)
2302 ENDIF
2303 
2304 END SUBROUTINE vol7d_convr
2305 
2306 
2310 SUBROUTINE vol7d_diff_only (this, that, data_only,ana)
2311 TYPE(vol7d),INTENT(IN) :: this
2312 TYPE(vol7d),INTENT(OUT) :: that
2313 logical , optional, intent(in) :: data_only
2314 logical , optional, intent(in) :: ana
2315 logical :: ldata_only,lana
2316 
2317 IF (PRESENT(data_only)) THEN
2318  ldata_only = data_only
2319 ELSE
2320  ldata_only = .false.
2321 ENDIF
2322 
2323 IF (PRESENT(ana)) THEN
2324  lana = ana
2325 ELSE
2326  lana = .false.
2327 ENDIF
2328 
2329 
2330 #undef VOL7D_POLY_ARRAY
2331 #define VOL7D_POLY_ARRAY voldati
2332 #include "vol7d_class_diff.F90"
2333 #undef VOL7D_POLY_ARRAY
2334 #define VOL7D_POLY_ARRAY voldatiattr
2335 #include "vol7d_class_diff.F90"
2336 #undef VOL7D_POLY_ARRAY
2337 
2338 if ( .not. ldata_only) then
2339 
2340 #define VOL7D_POLY_ARRAY volana
2341 #include "vol7d_class_diff.F90"
2342 #undef VOL7D_POLY_ARRAY
2343 #define VOL7D_POLY_ARRAY volanaattr
2344 #include "vol7d_class_diff.F90"
2345 #undef VOL7D_POLY_ARRAY
2346 
2347  if(lana)then
2348  where ( this%ana == that%ana )
2349  that%ana = vol7d_ana_miss
2350  end where
2351  end if
2352 
2353 end if
2354 
2355 
2356 
2357 END SUBROUTINE vol7d_diff_only
2358 
2359 
2360 
2361 ! Creo le routine da ripetere per i vari tipi di dati di v7d
2362 ! tramite un template e il preprocessore
2363 #undef VOL7D_POLY_TYPE
2364 #undef VOL7D_POLY_TYPES
2365 #define VOL7D_POLY_TYPE REAL
2366 #define VOL7D_POLY_TYPES r
2367 #include "vol7d_class_type_templ.F90"
2368 #undef VOL7D_POLY_TYPE
2369 #undef VOL7D_POLY_TYPES
2370 #define VOL7D_POLY_TYPE DOUBLE PRECISION
2371 #define VOL7D_POLY_TYPES d
2372 #include "vol7d_class_type_templ.F90"
2373 #undef VOL7D_POLY_TYPE
2374 #undef VOL7D_POLY_TYPES
2375 #define VOL7D_POLY_TYPE INTEGER
2376 #define VOL7D_POLY_TYPES i
2377 #include "vol7d_class_type_templ.F90"
2378 #undef VOL7D_POLY_TYPE
2379 #undef VOL7D_POLY_TYPES
2380 #define VOL7D_POLY_TYPE INTEGER(kind=int_b)
2381 #define VOL7D_POLY_TYPES b
2382 #include "vol7d_class_type_templ.F90"
2383 #undef VOL7D_POLY_TYPE
2384 #undef VOL7D_POLY_TYPES
2385 #define VOL7D_POLY_TYPE CHARACTER(len=vol7d_cdatalen)
2386 #define VOL7D_POLY_TYPES c
2387 #include "vol7d_class_type_templ.F90"
2388 
2389 ! Creo le routine da ripetere per i vari descrittori di dimensioni di v7d
2390 ! tramite un template e il preprocessore
2391 #define VOL7D_SORT
2392 #undef VOL7D_NO_ZERO_ALLOC
2393 #undef VOL7D_POLY_TYPE
2394 #define VOL7D_POLY_TYPE datetime
2395 #include "vol7d_class_desc_templ.F90"
2396 #undef VOL7D_POLY_TYPE
2397 #define VOL7D_POLY_TYPE vol7d_timerange
2398 #include "vol7d_class_desc_templ.F90"
2399 #undef VOL7D_POLY_TYPE
2400 #define VOL7D_POLY_TYPE vol7d_level
2401 #include "vol7d_class_desc_templ.F90"
2402 #undef VOL7D_SORT
2403 #undef VOL7D_POLY_TYPE
2404 #define VOL7D_POLY_TYPE vol7d_network
2405 #include "vol7d_class_desc_templ.F90"
2406 #undef VOL7D_POLY_TYPE
2407 #define VOL7D_POLY_TYPE vol7d_ana
2408 #include "vol7d_class_desc_templ.F90"
2409 #define VOL7D_NO_ZERO_ALLOC
2410 #undef VOL7D_POLY_TYPE
2411 #define VOL7D_POLY_TYPE vol7d_var
2412 #include "vol7d_class_desc_templ.F90"
2413 
2423 subroutine vol7d_write_on_file (this,unit,description,filename,filename_auto)
2424 
2425 TYPE(vol7d),INTENT(IN) :: this
2426 integer,optional,intent(inout) :: unit
2427 character(len=*),intent(in),optional :: filename
2428 character(len=*),intent(out),optional :: filename_auto
2429 character(len=*),INTENT(IN),optional :: description
2430 
2431 integer :: lunit
2432 character(len=254) :: ldescription,arg,lfilename
2433 integer :: nana, ntime, ntimerange, nlevel, nnetwork, &
2434  ndativarr, ndativari, ndativarb, ndativard, ndativarc,&
2435  ndatiattrr, ndatiattri, ndatiattrb, ndatiattrd, ndatiattrc,&
2436  ndativarattrr, ndativarattri, ndativarattrb, ndativarattrd, ndativarattrc,&
2437  nanavarr, nanavari, nanavarb, nanavard, nanavarc,&
2438  nanaattrr, nanaattri, nanaattrb, nanaattrd, nanaattrc,&
2439  nanavarattrr, nanavarattri, nanavarattrb, nanavarattrd, nanavarattrc
2440 !integer :: im,id,iy
2441 integer :: tarray(8)
2442 logical :: opened,exist
2443 
2444  nana=0
2445  ntime=0
2446  ntimerange=0
2447  nlevel=0
2448  nnetwork=0
2449  ndativarr=0
2450  ndativari=0
2451  ndativarb=0
2452  ndativard=0
2453  ndativarc=0
2454  ndatiattrr=0
2455  ndatiattri=0
2456  ndatiattrb=0
2457  ndatiattrd=0
2458  ndatiattrc=0
2459  ndativarattrr=0
2460  ndativarattri=0
2461  ndativarattrb=0
2462  ndativarattrd=0
2463  ndativarattrc=0
2464  nanavarr=0
2465  nanavari=0
2466  nanavarb=0
2467  nanavard=0
2468  nanavarc=0
2469  nanaattrr=0
2470  nanaattri=0
2471  nanaattrb=0
2472  nanaattrd=0
2473  nanaattrc=0
2474  nanavarattrr=0
2475  nanavarattri=0
2476  nanavarattrb=0
2477  nanavarattrd=0
2478  nanavarattrc=0
2479 
2480 
2481 !call idate(im,id,iy)
2482 call date_and_time(values=tarray)
2483 call getarg(0,arg)
2484 
2485 if (present(description))then
2486  ldescription=description
2487 else
2488  ldescription="Vol7d generated by: "//trim(arg)

Generated with Doxygen.