libsim Versione 8.0.0

◆ v7d_volgrid6d_transform()

subroutine v7d_volgrid6d_transform ( type(transform_def), intent(in) this,
type(griddim_def), intent(in), optional griddim,
type(vol7d), intent(inout) vol7d_in,
type(volgrid6d), intent(out) volgrid6d_out,
character(len=*), intent(in), optional networkname,
type(grid_id), intent(in), optional gaid_template,
character(len=*), intent(in), optional categoryappend )
private

Performs the specified abstract transformation on the data provided.

The abstract transformation is specified by this parameter; the corresponding specifical transformation (grid_transform object) is created and destroyed internally. The output transformed object is created internally and it does not require preliminary initialisation.

Parametri
[in]thisobject specifying the abstract transformation
[in]griddimgriddim specifying the output grid (required by most transformation types)
[in,out]vol7d_inobject to be transformed, it is not modified, despite the INTENT(inout)
[out]volgrid6d_outtransformed object, it does not require initialisation
[in]networknameselect the network to be processed from the vol7d input object, default the first network
[in]gaid_templatethe template (typically grib_api) to be associated with output data, it also helps in improving variable conversion
[in]categoryappendappend this suffix to log4fortran namespace category

Definizione alla linea 2613 del file volgrid6d_class.F90.

2615CALL init(vol7d_out, time_definition=vol7d_in%time_definition)
2616
2617CALL get_val(this, trans_type=trans_type)
2618
2619var_coord_vol = imiss
2620IF (trans_type == 'vertint') THEN
2621
2622 IF (PRESENT(lev_out)) THEN
2623
2624! if vol7d_coord_in provided and allocated, check that it fits
2625 var_coord_in = -1
2626 IF (PRESENT(vol7d_coord_in)) THEN
2627 IF (ASSOCIATED(vol7d_coord_in%voldatir) .AND. &
2628 ASSOCIATED(vol7d_coord_in%dativar%r)) THEN
2629
2630! strictly 1 time, 1 timerange and 1 network
2631 IF (SIZE(vol7d_coord_in%voldatir,2) /= 1 .OR. &
2632 SIZE(vol7d_coord_in%voldatir,4) /= 1 .OR. &
2633 SIZE(vol7d_coord_in%voldatir,6) /= 1) THEN
2634 CALL l4f_log(l4f_error, &
2635 'volume providing constant input vertical coordinate must have &
2636 &only 1 time, 1 timerange and 1 network')
2637 CALL raise_error()
2638 RETURN
2639 ENDIF
2640
2641! search for variable providing vertical coordinate
2642 CALL get_val(this, output_levtype=output_levtype)
2643 vcoord_var = vol7d_var_new(vol7d_level_to_var(output_levtype))
2644 IF (.NOT.c_e(vcoord_var)) THEN
2645 CALL l4f_log(l4f_error, &
2646 'requested output level type '//t2c(output_levtype%level1)// &
2647 ' does not correspond to any known physical variable for &
2648 &providing vertical coordinate')
2649 CALL raise_error()
2650 RETURN
2651 ENDIF
2652
2653 var_coord_in = index(vol7d_coord_in%dativar%r, vcoord_var)
2654
2655 IF (var_coord_in <= 0) THEN
2656 CALL l4f_log(l4f_error, &
2657 'volume providing constant input vertical coordinate contains no &
2658 &real variables matching output level type '//t2c(output_levtype%level1))
2659 CALL raise_error()
2660 RETURN
2661 ENDIF
2662 CALL l4f_log(l4f_info, &
2663 'Coordinate for vertint found in coord volume at position '// &
2664 t2c(var_coord_in))
2665
2666! check vertical coordinate system
2667 CALL get_val(this, input_levtype=input_levtype)
Index method.

Generated with Doxygen.