sdf initializer
type(sdf) function sdf_new(rhs) result(lhs) !! sdf initializer class(sdf_base), intent(in) :: rhs allocate(lhs%value,source=rhs) end function sdf_new