subroutine Free_Scalar3D(this)
implicit none
class(Scalar3D),intent(inout) :: this
this%nVar = 0
this%nElem = 0
this%interp => null()
deallocate(this%interior)
deallocate(this%boundary)
deallocate(this%extBoundary)
deallocate(this%avgBoundary)
deallocate(this%boundarynormal)
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_Scalar3D