module gms_assign2
  use model_info
  use datatype
  use mem_manager
  implicit none

  interface assignment(=)
     module procedure data_real_equal_x
     module procedure data_real_equal_y
     module procedure data_real_equal_z
     module procedure data_real_equal_xy
     module procedure data_real_equal_xz
     module procedure data_real_equal_yz
     module procedure data_real_equal_xyz

  end interface
contains
!---FOR X
  subroutine data_real_equal_x(output, input)
    type(var_x), intent(inout):: output 
    real(8), intent(in) :: input

    work_x(:,:,:,output%id) = input

    call garbege_collect

  end subroutine data_real_equal_x

!---FOR Y
  subroutine data_real_equal_y(output, input)
    type(var_y), intent(inout):: output 
    real(8), intent(in) :: input

    work_y(:,:,:,output%id) = input

    call garbege_collect

  end subroutine data_real_equal_y

!---FOR Z
  subroutine data_real_equal_z(output, input)
    type(var_z), intent(inout):: output 
    real(8), intent(in) :: input

    work_z(:,:,:,output%id) = input

    call garbege_collect

  end subroutine data_real_equal_z

!---FOR XY
  subroutine data_real_equal_xy(output, input)
    type(var_xy), intent(inout):: output 
    real(8), intent(in) :: input

    work_xy(:,:,:,output%id) = input

    call garbege_collect

  end subroutine data_real_equal_xy

!---FOR XZ
  subroutine data_real_equal_xz(output, input)
    type(var_xz), intent(inout):: output 
    real(8), intent(in) :: input

    work_xz(:,:,:,output%id) = input

    call garbege_collect

  end subroutine data_real_equal_xz

!---FOR YZ
  subroutine data_real_equal_yz(output, input)
    type(var_yz), intent(inout):: output 
    real(8), intent(in) :: input

    work_yz(:,:,:,output%id) = input

    call garbege_collect

  end subroutine data_real_equal_yz

!---FOR XYZ
  subroutine data_real_equal_xyz(output, input)
    type(var_xyz), intent(inout):: output 
    real(8), intent(in) :: input

    work_xyz(:,:,:,output%id) = input

    call garbege_collect

  end subroutine data_real_equal_xyz

end module gms_assign2
