subroutine Free_Vector3D(this)
implicit none
class(Vector3D),intent(inout) :: this
this%interp => null()
this%nVar = 0
this%nElem = 0
deallocate(this%interior)
deallocate(this%boundary)
deallocate(this%boundaryNormal)
deallocate(this%extBoundary)
deallocate(this%avgBoundary)
deallocate(this%meta)
deallocate(this%eqn)
call gpuCheck(hipFree(this%interior_gpu))
call gpuCheck(hipFree(this%boundary_gpu))
call gpuCheck(hipFree(this%extBoundary_gpu))
call gpuCheck(hipFree(this%avgBoundary_gpu))
call gpuCheck(hipFree(this%boundaryNormal_gpu))
call gpuCheck(hipFree(this%interpWork1))
call gpuCheck(hipFree(this%interpWork2))
call hipblasCheck(hipblasDestroy(this%blas_handle))
endsubroutine Free_Vector3D