size_4d Function

private pure function size_4d(me) result(s)

Actual size of a bspline_4d structure in bits.

Type Bound

bspline_4d

Arguments

Type IntentOptional Attributes Name
class(bspline_4d), intent(in) :: me

Return Value integer(kind=ip)

size of the structure in bits


Source Code

    pure function size_4d(me) result(s)

    implicit none

    class(bspline_4d),intent(in) :: me
    integer(ip) :: s !! size of the structure in bits

    s = 2_ip*int_size + logical_size + 14_ip*int_size

    if (allocated(me%bcoef))      s = s + real_size*size(me%bcoef,1_ip,kind=ip)*&
                                                    size(me%bcoef,2_ip,kind=ip)*&
                                                    size(me%bcoef,3_ip,kind=ip)*&
                                                    size(me%bcoef,4_ip,kind=ip)
    if (allocated(me%tx))         s = s + real_size*size(me%tx,kind=ip)
    if (allocated(me%ty))         s = s + real_size*size(me%ty,kind=ip)
    if (allocated(me%tz))         s = s + real_size*size(me%tz,kind=ip)
    if (allocated(me%tq))         s = s + real_size*size(me%tq,kind=ip)
    if (allocated(me%work_val_1)) s = s + real_size*size(me%work_val_1,1_ip,kind=ip)*&
                                                    size(me%work_val_1,2_ip,kind=ip)*&
                                                    size(me%work_val_1,3_ip,kind=ip)
    if (allocated(me%work_val_2)) s = s + real_size*size(me%work_val_2,1_ip,kind=ip)*&
                                                    size(me%work_val_2,2_ip,kind=ip)
    if (allocated(me%work_val_3)) s = s + real_size*size(me%work_val_3,kind=ip)
    if (allocated(me%work_val_4)) s = s + real_size*size(me%work_val_4,kind=ip)

    end function size_4d