libsim  Versione6.3.0

◆ volgrid6dv_v7d_transform()

subroutine volgrid6dv_v7d_transform ( type(transform_def), intent(in)  this,
type(volgrid6d), dimension(:), intent(inout)  volgrid6d_in,
type(vol7d), intent(out)  vol7d_out,
type(vol7d), intent(in), optional  v7d,
real, dimension(:,:), intent(in), optional  maskgrid,
real, dimension(:), intent(in), optional  maskbounds,
character(len=*), intent(in), optional  networkname,
logical, intent(in), optional  noconvert,
character(len=*), intent(in), optional  categoryappend 
)

Performs the specified abstract transformation on the arrays of 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. The transformation performed on each element of the input volgrid6d array object is merged into a single vol7d output object.

Parametri
[in]thisobject specifying the abstract transformation
[in,out]volgrid6d_inobject to be transformed, it is an array of volgrid6d objects, each of which will be transformed, it is not modified, despite the INTENT(inout)
[out]vol7d_outtransformed object, it does not require initialisation
[in]v7dobject containing a list of points over which transformation has to be done (required by some transformation types)
[in]maskgrid2D field to be used for defining subareas according to its values, it must have the same shape as the field to be interpolated (for transformation type 'maskinter')
[in]maskboundsarray of boundary values for defining subareas from the values of maskgrid, the number of subareas is SIZE(maskbounds) - 1, if not provided a default based on extreme values of makgrid is used
[in]networknameset the output network name in vol7d_out (default='generic')
[in]noconvertdo not try to match variable and convert values during transform
[in]categoryappendappend this suffix to log4fortran namespace category

Definizione alla linea 2438 del file volgrid6d_class.F90.

2438  vol7d_out%level(:) = lev_out(:)
2439 ELSE
2440  vol7d_out%level(:) = vol7d_in%level(:)
2441 ENDIF
2442 vol7d_out%network(:) = vol7d_in%network(:)
2443 IF (ASSOCIATED(vol7d_in%dativar%r)) THEN ! work only when real vars are available
2444  vol7d_out%dativar%r(:) = vol7d_in%dativar%r(:)
2445 
2446  CALL get_val(this, levshift=levshift, levused=levused)
2447  spos = imiss
2448  IF (c_e(lvar_coord_vol)) THEN
2449  CALL get_val(this%trans, output_levtype=output_levtype)
2450  IF (output_levtype%level1 == 103 .OR. output_levtype%level1 == 108) THEN
2451  spos = firsttrue(vol7d_in%level(:) == vol7d_level_new(1))
2452  IF (spos == 0) THEN
2453  CALL l4f_log(l4f_error, &
2454  'output level '//t2c(output_levtype%level1)// &
2455  ' requested, but height/press of surface not provided in volume')
2456  ENDIF
2457  IF (.NOT.c_e(levshift) .AND. .NOT.c_e(levused)) THEN
2458  CALL l4f_log(l4f_error, &
2459  'internal inconsistence, levshift and levused undefined when they should be')
2460  ENDIF
2461  ALLOCATE(coord_3d_in(SIZE(vol7d_in%ana),1,SIZE(vol7d_in%level)))
Functions that return a trimmed CHARACTER representation of the input variable.

Generated with Doxygen.