The main documentation of the Valid_State_Ortho_Diffusion Procedure contains additional explanation of this code listing.
function Valid_State_Ortho_Diffusion (Diff_Term) result(Valid)
! Input variables.
! Variable to be checked.
type(Ortho_Diffusion_type), intent(in) :: Diff_Term
! Output variables.
type(logical) :: Valid ! Logical state.
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Start out true.
Valid = .true.
! Check for association of pointered internals.
Valid = Valid .and. ASSOCIATED(Diff_Term%Mesh)
Valid = Valid .and. ASSOCIATED(Diff_Term%Structure)
if (.not.Valid) return
! Check for validity of internals.
Valid = Valid .and. Initialized(Diff_Term)
Valid = Valid .and. Valid_State(Diff_Term%Coefficient)
Valid = Valid .and. Valid_State(Diff_Term%Equation)
Valid = Valid .and. Valid_State(Diff_Term%Extrapolation)
Valid = Valid .and. Valid_State(Diff_Term%Locus)
Valid = Valid .and. Valid_State(Diff_Term%Name)
Valid = Valid .and. Valid_State(Diff_Term%NEquations)
Valid = Valid .and. Valid_State(Diff_Term%Phi)
if (.not.Valid) return
! Checks on the validity of Diff_Term.
Valid = Valid .and. Diff_Term%Extrapolation /= zero
Valid = Valid .and. &
(Diff_Term%Equation .InInterval. (/ 1, Diff_Term%NEquations /))
return
end function Valid_State_Ortho_Diffusion