eulerian_obj_AddEulerianIObj Function

private impure function eulerian_obj_AddEulerianIObj(this, in) result(res)

Performs addition of integer Eulerian objects.

Type Bound

eulerian_obj_base

Arguments

Type IntentOptional Attributes Name
class(eulerian_obj_base), intent(in) :: this

An Eulerian object

type(eulerian_obj_i), intent(in) :: in

An Eulerian object

Return Value class(eulerian_obj_base), allocatable

Result


Calls

proc~~eulerian_obj_addeulerianiobj~~CallsGraph proc~eulerian_obj_addeulerianiobj eulerian_obj_base%eulerian_obj_AddEulerianIObj proc~eulerian_obj_init eulerian_obj_base%eulerian_obj_Init proc~eulerian_obj_addeulerianiobj->proc~eulerian_obj_init

Source Code

    impure function eulerian_obj_AddEulerianIObj(this,in) result (res)
      !> Performs addition of integer Eulerian objects.
      implicit none
      class(eulerian_obj_base), intent(in)  :: this                            !! An Eulerian object
      type(eulerian_obj_i),     intent(in)  :: in                              !! An Eulerian object
      class(eulerian_obj_base), allocatable :: res                             !! Result

      select type (this)
      type is (eulerian_obj_r)
        allocate(eulerian_obj_r:: res)
        call res%Initialize(this%name,this%block,this%parallel,this%staggering)

        select type(res)
        type is (eulerian_obj_r)
          res%cell = this%cell+real(in%cell,wp)
        end select

      type is (eulerian_obj_i)
        allocate(eulerian_obj_i:: res)
        call res%Initialize(this%name,this%block,this%parallel,this%staggering)

        select type(res)
        type is (eulerian_obj_i)
          res%cell = this%cell+in%cell
        end select

      class default
        call this%parallel%Stop("Error performing addition of Eulerian object")
      end select

      return
    end function eulerian_obj_AddEulerianIObj