libsim  Versione8.0.0

◆ 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 2282 del file vol7d_class.F90.

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

Generated with Doxygen.