module dgfem_kernel_module
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
!
! This module contains subroutines for solving the within cell equations
! using the LD method
!
! LD: psi(x) = 1 + x + y + z
!
! ** 4  DoFs per cell
!
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
!
implicit none

real(kind=8),allocatable  ::  tmass(:,:),tstiffx(:,:),tstiffy(:,:),tstiffz(:,:),&
                              tfacexO(:,:),tfaceyO(:,:),tfacezO(:,:),           &
                              tfacexI(:,:),tfaceyI(:,:),tfacezI(:,:),           &
                              tfsx(:,:),tfsy(:,:),tfsz(:,:)
!
contains

! LD Subroutine's

subroutine ld_kernel(del,sigt,omega,face_psi,vecx)
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   ! This subroutine solves the ld (linear discontinuous)
   ! equations for a single mesh cell. For performance
   ! purposes MATHEMATICA solved equations are used.
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   ! Arguments

     real(kind=8) :: del(3)           ! vector of cell dimensions dx,dy,dz
     real(kind=8) :: sigt             ! total cross sections
     real(kind=8) :: omega(3)         ! direction cosines
     real(kind=8) :: vecx(4)          ! on input:  vector of length nl containing source moments
                                      ! on output: vector of length nl containing angular flux moments
     real(kind=8) :: face_psi(4,3)    ! on input: inflow fluxes in the 3 inflow faces, on output: outflow fluxes on the three outflow faces

   ! Local Variables

     real(kind=8) :: a11,a22,a33,a44,&
                     a12,a13,a14
     real(kind=8) :: b1,b2,b3,b4
     real(kind=8) :: cm,cmu,ceta,cxi,vol
     real(kind=8) :: delx,dely,delz
     real(kind=8) :: third
     real(kind=8) :: den
     integer :: i,j

   ! Step 1: Assign values to aij

     delx  = del(1)
     dely  = del(2)
     delz  = del(3)
     third = 1.0d0 / 3.0d0
     vol   = delx*dely*delz
     cm    = vol*sigt
     cmu   = dely*delz*omega(1)
     ceta  = delx*delz*omega(2)
     cxi   = delx*dely*omega(3)
     a11   = cm + cmu + ceta + cxi
     a22   = third * ( cm + cmu + ceta ) + cxi
     a33   = third * ( cm + cmu + cxi  ) + ceta
     a44   = third * ( cm + cxi + ceta ) + cmu
     a12   = cxi
     a13   = ceta
     a14   = cmu

   ! Step 2: Build right hand side

     b1 =  vol      *vecx(1) - face_psi(1,1) - face_psi(1,2) - face_psi(1,3)
     b2 =  third*vol*vecx(2) - face_psi(2,1) - face_psi(2,2) - face_psi(2,3)
     b3 =  third*vol*vecx(3) - face_psi(3,1) - face_psi(3,2) - face_psi(3,3)
     b4 =  third*vol*vecx(4) - face_psi(4,1) - face_psi(4,2) - face_psi(4,3)

   ! Step 3: Solve linear system of equations using precomputed solution from
   ! Mathematica in terms of matrix entries aij.

     den     = a14**2*a22*a33 + (a13**2*a22 + (a12**2 + a11*a22)*a33)*a44
     vecx(1) = -(a12*a33*a44*b2) + a22*(a33*a44*b1 - a13*a44*b3 - a14*a33*b4)
     vecx(1) = vecx(1) / den
     vecx(2) = (a14**2*a33 + (a13**2 + a11*a33)*a44)*b2 + a12*(a33*a44*b1 - &
               a13*a44*b3 - a14*a33*b4)
     vecx(2) = vecx(2) / den
     vecx(3) = (a14**2*a22 + (a12**2 + a11*a22)*a44)*b3 + a13*(a22*a44*b1 - &
               a12*a44*b2 - a14*a22*b4)
     vecx(3) = vecx(3) / den
     vecx(4) = a14*(a22*a33*b1 - a12*a33*b2 - a13*a22*b3) + (a13**2*a22 +   &
               (a12**2 + a11*a22)*a33)*b4
     vecx(4) = vecx(4) / den

   ! Step 4: Compute outflow fluxes by multiplying vecx with the edge matrices.

     face_psi=0.0d0

     ! in x-direction

       face_psi(1,1) = -cmu * ( vecx(1) + vecx(4) )
       face_psi(2,1) = -third*cmu*vecx(2)
       face_psi(3,1) = -third*cmu*vecx(3)
       face_psi(4,1) = -face_psi(1,1)

     ! in y-direction

       face_psi(1,2) = -ceta * ( vecx(1) + vecx(3) )
       face_psi(2,2) = -third*ceta*vecx(2)
       face_psi(3,2) = -face_psi(1,2)
       face_psi(4,2) = -third*ceta*vecx(4)

     ! in x-direction

       face_psi(1,3) = -cxi * ( vecx(1) + vecx(2) )
       face_psi(2,3) = -face_psi(1,3)
       face_psi(3,3) = -third*cxi*vecx(3)
       face_psi(4,3) = -third*cxi*vecx(4)

   ! --- The end ---

end subroutine

! SOLVER_COMPLETE_DENSE SUBROUTINES ("DENSE")

subroutine complete_kernel_dense(nl,del,sigt,omega,face_psi,vecx)
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   ! This subroutine solves the dgfem (complete family)
   ! equations for a single mesh cell.
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   ! Arguments

     integer :: nl                    ! vector of cell indices, degrees of freedom/cell = (lambda+1)^3
     real(kind=8) :: del(3)           ! vector of cell dimensions dx,dy,dz
     real(kind=8) :: sigt             ! total cross sections
     real(kind=8) :: omega(3)         ! direction cosines
     real(kind=8) :: vecx(nl)         ! on input:  vector of length nl containing source moments
                                      ! on output: vector of length nl containing angular flux moments
     real(kind=8) :: face_psi(nl,3)   ! on input: inflow fluxes in the 3 inflow faces, on output: outflow fluxes on the three outflow faces

   ! Local Variables

     real(kind=8) :: T(nl,nl)
     real(kind=8) :: delx,dely,delz
     real(kind=8) :: cm,csm,cfx,cfy,cfz,csx,csy,csz
     integer :: ipiv(nl),info
     integer :: i,j

   ! Step 1: Contruct matrix T

     delx = del(1)
     dely = del(2)
     delz = del(3)
     cm   = delx * dely * delz
     csm  = sigt*cm
     cfx  = omega(1) * dely * delz
     cfy  = omega(2) * delx * delz
     cfz  = omega(3) * delx * dely
     csx  = -cfx
     csy  = -cfy
     csz  = -cfz

     T = cfx * tfsx + cfy * tfsy + cfz * tfsz
     do i=1,nl
        T(i,i) = T(i,i) + csm*tmass(i,i)
        vecx(i)= cm*tmass(i,i)*vecx(i)
     end do

   ! Step 2: Build right hand side

     vecx = vecx - face_psi(:,1) - face_psi(:,2) - face_psi(:,3)

   ! Step 3: Solve linear system of equations

     call dgesv(nl,1,T,nl,ipiv,vecx,nl,info)

   ! Step 4: Compute outflow fluxes by multiplying vecx with the edge matrices.
   !         BLAS-2 subroutines are used because they are faster than matmul.
   !         The factors in front of the inflow edge
   !         matrices for the NEXT cell happen to be equal to the stiffness matrix
   !         factors. This is not bug.

     face_psi=0.0d0

     ! in x-direction
     call dgemv('N',nl,nl,csx,tfacexI,nl,vecx,1,0.d0,face_psi(:,1),1)
!!     face_psi(:,1) = csx * matmul(tfacexI,vecx)

     ! in y-direction
     call dgemv('N',nl,nl,csy,tfaceyI,nl,vecx,1,0.d0,face_psi(:,2),1)
!!     face_psi(:,2) = csy * matmul(tfaceyI,vecx)

     ! in x-direction
     call dgemv('N',nl,nl,csz,tfacezI,nl,vecx,1,0.d0,face_psi(:,3),1)
!!     face_psi(:,3) = csz * matmul(tfacezI,vecx)

   ! --- The end ---

end subroutine

subroutine lagrange_kernel_dense(nl,del,sigt,omega,face_psi,vecx)
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   ! This subroutine solves the dgfem (lagrange family)
   ! equations for a single mesh cell.
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   ! Arguments

     integer :: nl                    ! vector of cell indices, degrees of freedom/cell = (lambda+1)^3
     real(kind=8) :: del(3)           ! vector of cell dimensions dx,dy,dz
     real(kind=8) :: sigt             ! total cross sections
     real(kind=8) :: omega(3)         ! direction cosines
     real(kind=8) :: vecx(nl)         ! on input:  vector of length nl containing source moments
                                      ! on output: vector of length nl containing angular flux moments
     real(kind=8) :: face_psi(nl,3)   ! on input: inflow fluxes in the 3 inflow faces, on output: outflow fluxes on the three outflow faces

   ! Local Variables

     real(kind=8) :: T(nl,nl),mass(nl,nl)
     real(kind=8) :: delx,dely,delz
     real(kind=8) :: cm,csm,cfx,cfy,cfz,csx,csy,csz
     integer :: ipiv(nl),info
     integer :: i,j

   ! Step 1: Contruct matrix T

     delx = del(1)
     dely = del(2)
     delz = del(3)
     cm   = delx * dely * delz
     csm  = sigt*cm
     cfx  = omega(1) * dely * delz
     cfy  = omega(2) * delx * delz
     cfz  = omega(3) * delx * dely
     csx  = -cfx
     csy  = -cfy
     csz  = -cfz

     T = cfx * tfsx + cfy * tfsy + cfz * tfsz
     do i=1,nl
        T(i,i) = T(i,i) + csm*tmass(i,i)
        vecx(i)= cm*tmass(i,i)*vecx(i)
     end do

   ! Step 2: Build right hand side

     vecx = vecx - face_psi(:,1) - face_psi(:,2) - face_psi(:,3)

   ! Step 3: Solve linear system of equations

     call dgesv(nl,1,T,nl,ipiv,vecx,nl,info)

   ! Step 4: Compute outflow fluxes by multiplying vecx with the edge matrices.
   !         BLAS-2 subroutines are used because they are faster than matmul.
   !         The factors in front of the inflow edge
   !         matrices for the NEXT cell happen to be equal to the stiffness matrix
   !         factors. This is not bug.

     face_psi=0.0d0

     ! in x-direction
     call dgemv('N',nl,nl,csx,tfacexI,nl,vecx,1,0.d0,face_psi(:,1),1)
!!     face_psi(:,1) = csx * matmul(tfacexI,vecx)

     ! in y-direction
     call dgemv('N',nl,nl,csy,tfaceyI,nl,vecx,1,0.d0,face_psi(:,2),1)
!!     face_psi(:,2) = csy * matmul(tfaceyI,vecx)

     ! in x-direction
     call dgemv('N',nl,nl,csz,tfacezI,nl,vecx,1,0.d0,face_psi(:,3),1)
!!     face_psi(:,3) = csz * matmul(tfacezI,vecx)

   ! --- The end ---

end subroutine

subroutine build_tmats_complete(lmbd)
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   ! This subroutines allocates and pre-computes the
   ! templates of the mass,stiffness and face matrices.
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   ! Arguments

     integer :: lmbd

   ! Local variables

     integer :: ix,iy,iz,jx,jy,jz,i,j

   ! Allocate and initialize matrix templates

     j = (lmbd+3)*(lmbd+2)*(lmbd+1)/6
     allocate( tmass(j,j) )
     allocate( tstiffx(j,j),tstiffy(j,j),tstiffz(j,j) )
     allocate( tfacexO(j,j),tfaceyO(j,j),tfacezO(j,j) )
     allocate( tfacexI(j,j),tfaceyI(j,j),tfacezI(j,j) )
     allocate( tfsx(j,j),tfsy(j,j),tfsz(j,j) )

     tmass=0.0d0;tstiffx=0.0d0;tstiffy=0.0d0;tstiffz=0.0d0
     tfacexO=0.0d0;tfaceyO=0.0d0;tfacezO=0.0d0
     tfacexI=0.0d0;tfaceyI=0.0d0;tfacezI=0.0d0

   ! Fill matrix templates

     do jx=0,lmbd
       do jy=0,lmbd-jx
         do jz=0,lmbd-jx-jy
           do ix=0,lmbd
             do iy=0,lmbd-ix
               do iz=0,lmbd-ix-iy

                  ! compute position in flattened form

                   i = iz+1-iy*(-3+2*ix+iy-2*lmbd)/2+ix*(11+ix**2-3*ix*(2+lmbd)+3*lmbd*(4+lmbd))/6
                   j = jz+1-jy*(-3+2*jx+jy-2*lmbd)/2+jx*(11+jx**2-3*jx*(2+lmbd)+3*lmbd*(4+lmbd))/6

                  ! mass matrix

                   if(ix.eq.jx .and. iy.eq.jy .and. iz.eq.jz) then
                      tmass(i,j)  = 1.0d0 / real( (2*ix+1)*(2*iy+1)*(2*iz+1) ,8)
                   end if

                  ! stiffness matrix in x, condition for iy, jy, ix and jz is
                  ! self-explaining, the last two conditions arise from the sum
                  ! in PhD notes.

                    if(iy.eq.jy .and. iz.eq.jz .and. jx.le.ix-1  .and. mod(jx+ix+1,2).eq.0) then
                      tstiffx(i,j)  = 2.0d0 / real( (2*iy+1)*(2*iz+1) ,8)
                    end if

                  ! stiffness matrix in y

                    if(ix.eq.jx .and. iz.eq.jz .and. jy.le.iy-1  .and. mod(jy+iy+1,2).eq.0) then
                      tstiffy(i,j)  = 2.0d0 / real( (2*ix+1)*(2*iz+1) ,8)
                    end if

                  ! stiffness matrix in z

                    if(ix.eq.jx .and. iy.eq.jy .and. jz.le.iz-1  .and. mod(jz+iz+1,2).eq.0) then
                      tstiffz(i,j)  = 2.0d0 / real( (2*ix+1)*(2*iy+1) ,8)
                    end if

                  ! face matrices on the west/east faces (normal to x-axis)

                    if(iy.eq.jy .and. iz.eq.jz) then
                      ! outflow face
                      tfacexO(i,j)  = 1.0d0 / real( (2*iy+1)*(2*iz+1) ,8)
                      ! inflow face
                      tfacexI(i,j)  = (-1.0d0)**(ix) / real( (2*iy+1)*(2*iz+1) ,8)
                    end if

                  ! face matrices on the south/north faces (normal to y-axis)

                    if(ix.eq.jx .and. iz.eq.jz) then
                      ! outflow face
                      tfaceyO(i,j)  = 1.0d0 / real( (2*ix+1)*(2*iz+1) ,8)
                      ! inflow face
                      tfaceyI(i,j)  = (-1.0d0)**(iy) / real((2*ix+1)*(2*iz+1) ,8)
                    end if

                  ! face matrices on the bottom/top faces (normal to z-axis)

                    if(ix.eq.jx .and. iy.eq.jy) then
                      ! outflow face
                      tfacezO(i,j)  = 1.0d0 / real( (2*ix+1)*(2*iy+1) ,8)
                      ! inflow face
                      tfacezI(i,j)  = (-1.0d0)**(iz) / real((2*ix+1)*(2*iy+1) ,8)
                    end if

               end do
             end do
           end do
         end do
       end do
     end do

   ! Compute tfsx, tfsy, tfsz

     tfsx = tfacexO - tstiffx
     tfsy = tfaceyO - tstiffy
     tfsz = tfacezO - tstiffz

end subroutine

subroutine build_tmats_lagrange(lmbd)
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   ! This subroutines allocates and pre-computes the
   ! templates of the mass,stiffness and face matrices.
   !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   ! Arguments

     integer :: lmbd

   ! Local variables

     integer :: ix,iy,iz,jx,jy,jz,i,j

   ! Allocate and initialize matrix templates

     j = (lmbd+1)**3
     allocate( tmass(j,j) )
     allocate( tstiffx(j,j),tstiffy(j,j),tstiffz(j,j) )
     allocate( tfacexO(j,j),tfaceyO(j,j),tfacezO(j,j) )
     allocate( tfacexI(j,j),tfaceyI(j,j),tfacezI(j,j) )
     allocate( tfsx(j,j),tfsy(j,j),tfsz(j,j) )

     tmass=0.0d0;tstiffx=0.0d0;tstiffy=0.0d0;tstiffz=0.0d0
     tfacexO=0.0d0;tfaceyO=0.0d0;tfacezO=0.0d0
     tfacexI=0.0d0;tfaceyI=0.0d0;tfacezI=0.0d0

   ! Fill matrix templates

     do jx=0,lmbd
       do jy=0,lmbd
         do jz=0,lmbd
           do ix=0,lmbd
             do iy=0,lmbd
               do iz=0,lmbd

                  ! compute position in flattened form

                   i = iz+1+(lmbd+1)*iy+(lmbd+1)**2*ix
                   j = jz+1+(lmbd+1)*jy+(lmbd+1)**2*jx

                  ! mass matrix

                   if(ix.eq.jx .and. iy.eq.jy .and. iz.eq.jz) then
                      tmass(i,j)  = 1.0d0 / real( (2*ix+1)*(2*iy+1)*(2*iz+1) ,8)
                   end if

                  ! stiffness matrix in x, condition for iy, jy, ix and jz is
                  ! self-explaining, the last two conditions arise from the sum
                  ! in PhD notes.

                    if(iy.eq.jy .and. iz.eq.jz .and. jx.le.ix-1  .and. mod(jx+ix+1,2).eq.0) then
                      tstiffx(i,j)  = 2.0d0 / real( (2*iy+1)*(2*iz+1) ,8)
                    end if

                  ! stiffness matrix in y

                    if(ix.eq.jx .and. iz.eq.jz .and. jy.le.iy-1  .and. mod(jy+iy+1,2).eq.0) then
                      tstiffy(i,j)  = 2.0d0 / real( (2*ix+1)*(2*iz+1) ,8)
                    end if

                  ! stiffness matrix in z

                    if(ix.eq.jx .and. iy.eq.jy .and. jz.le.iz-1  .and. mod(jz+iz+1,2).eq.0) then
                      tstiffz(i,j)  = 2.0d0 / real( (2*ix+1)*(2*iy+1) ,8)
                    end if

                  ! face matrices on the west/east faces (normal to x-axis)

                    if(iy.eq.jy .and. iz.eq.jz) then
                      ! outflow face
                      tfacexO(i,j)  = 1.0d0 / real( (2*iy+1)*(2*iz+1) ,8)
                      ! inflow face
                      tfacexI(i,j)  = (-1.0d0)**(ix) / real( (2*iy+1)*(2*iz+1) ,8)
                    end if

                  ! face matrices on the south/north faces (normal to y-axis)

                    if(ix.eq.jx .and. iz.eq.jz) then
                      ! outflow face
                      tfaceyO(i,j)  = 1.0d0 / real( (2*ix+1)*(2*iz+1) ,8)
                      ! inflow face
                      tfaceyI(i,j)  = (-1.0d0)**(iy) / real((2*ix+1)*(2*iz+1) ,8)
                    end if

                  ! face matrices on the bottom/top faces (normal to z-axis)

                    if(ix.eq.jx .and. iy.eq.jy) then
                      ! outflow face
                      tfacezO(i,j)  = 1.0d0 / real( (2*ix+1)*(2*iy+1) ,8)
                      ! inflow face
                      tfacezI(i,j)  = (-1.0d0)**(iz) / real((2*ix+1)*(2*iy+1) ,8)
                    end if

               end do
             end do
           end do
         end do
       end do
     end do

   ! Compute tfsx, tfsy, tfsz

     tfsx = tfacexO - tstiffx
     tfsy = tfaceyO - tstiffy
     tfsz = tfacezO - tstiffz

end subroutine

subroutine clean_complete_kernel
  ! cleaning not needed?
   if( allocated(tmass) )   deallocate(tmass)
   if( allocated(tstiffx) ) deallocate(tstiffx)
   if( allocated(tstiffy) ) deallocate(tstiffy)
   if( allocated(tstiffz) ) deallocate(tstiffz)
   if( allocated(tfacexO) ) deallocate(tfacexO)
   if( allocated(tfaceyO) ) deallocate(tfaceyO)
   if( allocated(tfacezO) ) deallocate(tfacezO)
   if( allocated(tfacexI) ) deallocate(tfacexI)
   if( allocated(tfaceyI) ) deallocate(tfaceyI)
   if( allocated(tfacezI) ) deallocate(tfacezI)
   if( allocated(tfsx))     deallocate(tfsx)
   if( allocated(tfsy))     deallocate(tfsy)
   if( allocated(tfsz))     deallocate(tfsz)
end subroutine

subroutine clean_lagrange_kernel
   if( allocated(tmass) )   deallocate(tmass)
   if( allocated(tstiffx) ) deallocate(tstiffx)
   if( allocated(tstiffy) ) deallocate(tstiffy)
   if( allocated(tstiffz) ) deallocate(tstiffz)
   if( allocated(tfacexO) ) deallocate(tfacexO)
   if( allocated(tfaceyO) ) deallocate(tfaceyO)
   if( allocated(tfacezO) ) deallocate(tfacezO)
   if( allocated(tfacexI) ) deallocate(tfacexI)
   if( allocated(tfaceyI) ) deallocate(tfaceyI)
   if( allocated(tfacezI) ) deallocate(tfacezI)
   if( allocated(tfsx))     deallocate(tfsx)
   if( allocated(tfsy))     deallocate(tfsy)
   if( allocated(tfsz))     deallocate(tfsz)
end subroutine

end module


text:
!!
!! @HEADER
!!
!!!!**********************************************************************
!!
!!  Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
!!                  Copyright 2012 Sandia Corporation
!!
!! Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
!! the U.S. Government retains certain rights in this software.
!!
!! Redistribution and use in source and binary forms, with or without
!! modification, are permitted provided that the following conditions are
!! met:
!!
!! 1. Redistributions of source code must retain the above copyright
!! notice, this list of conditions and the following disclaimer.
!!
!! 2. Redistributions in binary form must reproduce the above copyright
!! notice, this list of conditions and the following disclaimer in the
!! documentation and/or other materials provided with the distribution.
!!
!! 3. Neither the name of the Corporation nor the names of the
!! contributors may be used to endorse or promote products derived from
!! this software without specific prior written permission.
!!
!! THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
!! EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
!! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
!! CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
!! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
!! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
!! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
!! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
!! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
!! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
!!
!! Questions? Contact Karen Devine	kddevin@sandia.gov
!!                    Erik Boman	egboman@sandia.gov
!!
!!!!**********************************************************************
!!
!! @HEADER
 !!

module zoltan_user_data
use zoltan_types
implicit none

! User defined data types for passing data to the query functions.  These can
! be used any way you want, but one suggestion is to use them as "wrapper"
! types for your own user defined types, e.g.
! type Zoltan_User_Data_1
!    type(your_type), pointer :: ptr
! end type
! Exactly four data types must be defined, but you don't have to use them.

type Zoltan_User_Data_1
   integer :: dummy
end type Zoltan_User_Data_1

type Zoltan_User_Data_2
   integer :: dummy
end type Zoltan_User_Data_2

type Zoltan_User_Data_3
   integer :: dummy
end type Zoltan_User_Data_3

type Zoltan_User_Data_4
   integer :: dummy
end type Zoltan_User_Data_4

end module zoltan_user_data

max_stars_repo_name: jschueller/seacas

max_issues_repo_name: jschueller/seacas

max_forks_repo_name: jschueller/seacas


text:
Debats du Senat (hansard)
1ere Session, 36e Legislature,
Volume 137, Numero 36
Le mardi 10 fevrier 1998
L'honorable Gildas L. Molgat, President
Le deces de l'honorable Guy Charbonneau
Le deces de l'honorable Gerald Ryan Ottenheimer, c.r.
L'ouverture des Jeux de 1998 a Nagano, au Japon
Le devouement des professionnels de la sante-Hommages
Le deces de J.B. Salsberg
LES TRAVAUX DU SENAT
Le Programme d'echange de pages avec la Chambre des communes
Projet de loi modificatif-Premiere lecture
Projet de loi modificatif-Premiere lecture
Affaires sociales, sciences et technologie
Autorisation au sous-comite des Anciens combattants de sieger en meme temps que le Senat
Les preoccupations des Albertains-Avis d'interpellation
Les sciences, la recherche et le developpement
Les coupes dans le financement de la recherche medicale-La position du gouvernement
Reponses differees a des questions orales
Les boises dans les Maritimes-Les recommandations du groupe de travail-La position du gouvernement
L'identification et l'inventaire des lieux contamines federaux-La position du gouvernement
Surveillance de l'evolution des revendications des refugies-La politique du gouvernement
Les services communautaires destines aux contrevenants-L'admissibilite des contrevenants non violents-Demande de clarifications
Les relations Canada-Etats-Unis
La reduction des paiements de transfert aux provinces-L'effet sur le Canada atlantique
Etablissements de detention pour les revendicateurs du statut de refugie-Requetes pour des particuliers
Le sommet de l'APEC-La preponderance des questionscommerciales et economiques-La position du gouvernement
Les affaires indiennes et le Nord canadien
La proportion des impots percus au Quebec controlee par la province-Demande de precisions
L'imposition de peages federaux sur les routes
Le phenomene informatique du millenaire-Repercussions sur les ordinateurs du gouvernement-La position du gouvernement
Depot des reponses a des questions au Feuilleton
Les transports-L'aeroport Pearson-Le paiement a titre gracieux a Goudge S
L'energie-Postes Canada-La conformite avec la Loi sur les carburants de remplacement
L'energie-Le Service correctionnel-La conformite avec la Loi sur les carburants de remplacement
La defense nationale-La desaffection ou la mise au rebut des equipements
La defense nationale-Les penuries de personnel navigant dans les Forces canadiennes
La defense nationale-Le transfert a la Turquie de munitions d'artillerie excedentaires
L'energie-Les restrictions sur le transport du plutonium et du combustible MOX
Projet de loi modificatif-Deuxieme lecture-Ajournement du debat
La creation d'un comite special-Suite du debat
Les rapports sur le developpement social et economique
Deuxieme lecture-Ajournement du debat
Le mardi 10 fevrier 1998
La seance est ouverte a 14 heures, le President etant au fauteuil.
Le deces de l'honorable Guy Charbonneau
L'honorable John Lynch-Staunton (chef de l'opposition) :
Je suis fier d'avoir compte parmi ses amis.
Le President a les moyens de defendre tout le monde sauf lui-meme.
Qui aurait cru que Guy Charbonneau aurait eu besoin de l'aide de quelqu'un?
A ce titre, il a egalement preside le comite de la regie interne.
Les grands hommes n'ont pas conquis du jour au lendemain
Les grands sommets ou ils se sont maintenus;
Pendant que leurs compagnons dormaient,
a la tache ils s'acharnaient.
Que Guy Charbonneau repose dans la paix si justement meritee.
L'honorable B. Alasdair Graham (leader du gouvernement) :
Ce courage etait en quelque sorte la marque de Guy Charbonneau.
Nous offrons nos plus sinceres condoleances a sa famille.
Si courte, elle n'a, a toutes fins utiles, pas existe.
Dieu en a decide autrement pour lui!
Je le ferais encore, si j'avais a le faire.
L'honorable Brenda M. Robertson :
Guy a ete un pilier du Parti progressiste-conservateur pendant50 ans.
Vous aurez remarque comme moi la determination de son regard.
Personne ne peut nier sa loyaute envers son pays et son parti politique.
Je l'ai rencontre pour la premiere fois il y a plus de30 ans.
Grace a Dieu, il a vecu assez longtemps pour voir la realisation de cet objectif.
Comme tout politicien, il avait ses detracteurs.
Ces deux Canadiens francais etaient jeunes au moment du declenchement de la Seconde Guerre mondiale.
Comme on le sait, l'autre a choisi de ne pas le faire.
M. Charbonneau n'est plus, moralement parlant, notre President.
Quand il ouvrira la bouche, nous n'entendrons pas ce qu'il dit.
Quand il prendra une decision, nous ne voudrons pas la connaitre.
Quand il entrera au Senat, nous ne le verrons pas.
S'il revient au fauteuil, nous ne verrons qu'un siege vide.
Je regrette d'avoir a dire que Charbonneau, le President, a cesse d'exister.
C'est un fantome.
Vous avez ete prostitue par deux hommes:
Lowell Murray qui est assis la-bas et Brian Mulroney.
A sa femme Yolande, a ses enfants et a leurs familles, je presente mes condoleances.
J'ai appris a le connaitre apres ma nomination au Senat en septembre 1988.
Les annees qui suivirent furent mouvementees.
Suivit le celebre debat sur la TPS qui fit beaucoup de bruit.
Le President Guy Charbonneau a tenu la barque avec courage et determination.
Les historiens apprecieront cette periode de notre histoire.
L'honorable Marcel Prud'homme :
Je veux offrir a son epouse mes plus sinceres condoleances.
Je ne repeterai pas tout ce qui a ete dit.
Le deces de l'honorable Gerald Ryan Ottenheimer, c.r.
L'honorable John Lynch-Staunton (chef de l'opposition) :
C'etait une question a propos de laquelle le senateur Ottenheimer nourrissait de fermes convictions.
Mais, a mon avis, on ne peut pas s'arreter a ce seul critere.
L'honorable B. Alasdair Graham (leader du gouvernement) :
Son amour, sa passion ainsi que sa facilite pour les langues etaient bien connus.
Cette phrase de lui suffira a le decrire pour la circonstance:
Honorables senateurs, il n'y a pas de nuances la-dedans.
Lui et moi en avons souvent discute ensemble.
Nous offrons a sa famille nos plus sinceres condoleances.
L'honorable C. William Doody :
J'ai connu Gerry pendant pratiquement toute ma vie.
Ses etudes universitaires ont ete tres poussees.
Il prenait ses notes en grec.
Il etait sur de lui, sans contredit.
Il parlait aussi le russe.
Gerry a ete un pionnier.
Il etait alors difficile d'y trouver des foules conservatrices pour vous y acclamer.
Il n'y en avait tout simplement pas.
Je suis fier de l'avoir connu.
Je vais certainement le regretter.
Nous allons tous le regretter.
Honorables senateurs, je tiens a rendre aussi hommage a Gerry Ottenheimer.
Cependant, il fut un temps ou le Parti conservateur ne connaissait pas des heures creuses.
Du temps de Peckford, notamment.
Je ne l'ai pas mieux connu grace a ce service commemoratif.
Une d'entre elles fait un doctorat en sociologie et enseignera a l'Universite Memorial.
Gerry adorait ses filles et sa famille.
Il faisait grand cas de ses livres.
Son epouse m'a dit qu'il en prenait grand soin.
C'etait un intellectuel qui aimait l'apprentissage et les livres.
Il etait tres fier de ses racines.
Il en etait tres fier.
C'etait un homme politique devoue.
Je voudrais lui dedier les vers suivants de Stan Rogers, ce troubadour de Nouvelle-Ecosse:
Nous renaissons dans les voix de nos enfants.
Nous renaissons dans le rire de nos chansons.
Nous renaissons comme les vagues de la mer.
Nous saurons garder de Gerry Ottenheimer un excellent souvenir.
Honorables senateurs, j'ai ete profondement attristee par le deces du senateur Gerry Ottenheimer.
J'ai apprecie sa courtoisie et son sens de l'humour.
Il a ete chef de l'opposition de 1967 a 1969.
L'honorable Marcel Prud'homme :
J'ai alors compris que le senateur Gerry Ottenheimer etait special.
J'ai decouvert par la suite sa facilite a apprendre les langues.
En voyageant avec lui, j'ai decouvert son immense talent.
Il etait acharne, determine a faire en sorte que les droits des minorite soient respectes.
Malheureusement, vous connaissez les evenements, je n'ai pas pu assister a ce debat.
C'est la premiere fois en 34 ans.
D'ailleurs, cela fait 34 ans aujourd'hui que j'ai ete elu.
Ottenheimer, lui qui se battait pour sa vie a Terre-Neuve.
J'ai aussi voyage avec lui.
Je l'avais prie de m'accompagner au Liban et au Koweit.
Et vous auriez du le voir.
Je l'ai visite chez lui a Trinite.
Ecoutez bien les noms de ses quatre filles:
Geraldine, Suzanne, Bernadette et Anne-Marie.
Quatre filles avec des noms semblables a Terre-Neuve.
J'aurai l'occasion de les recevoir l'ete prochain.
L'honorable P. Derek Lewis :
A sa femme Alma et a toute sa famille, je presente mes plus sinceres condoleances.
Comme les autres senateurs le savent, ils etaient d'une grande hospitalite.
Il s'asseyait puis se relevait et marchait encore.
Alma disait qu'elle devait constamment lui acheter de nouvelles chaussures pour chaque occasion.
Son Honneur le President :
Honorables senateurs, veuillez vous lever pour une minute de silence.
Les honorables senateurs se recueillent en silence.
L'ouverture des Jeux de 1998 a Nagano, au Japon
L'honorable B. Alasdair Graham (leader du gouvernement) :
Les Jeux olympiques signifient bien des choses.
Les Jeux olympiques de Nagano sont les derniers jeux d'hiver avant le nouveau millenaire.
L'honorable J. Michael Forrestall :
Nous sommes-nous effondres au point de n'avoir a peu pres rien a offrir?
Sommes-nous uniquement spectateurs parmi nos allies?
Sommes-nous devenus un pays que l'on ne consulte qu'apres coup?
Les Forces armees canadiennes sont-elles devenues amorphes?
Son Honneur le President:
Son Honneur le President:
Voudriez-vous avoir la permission de poursuivre?
Son Honneur le President:
Honorables senateurs, je vous remercie de votre indulgence.
En tout cas, le pire est a venir.
Honorables senateurs, amener le materiel sur place, c'est long.
Le devouement des professionnels de la sante-Hommages
Sans leur conscience professionnelle, comment pourrions-nous survivre?
Je le sais maintenant d'experience.
On m'a alors envoye au Centre hospitalier universitaire de London.
Ils travaillent quand on a besoin d'eux.
On m'a opere avec succes.
Le deces de J.B. Salsberg
L'honorable Jerahmiel S. Grafstein:
Pourtant, la vie de J.B. a ete tout sauf paisible.
Conformement au desir de son pere, il fait des etudes pour devenir rabbin.
Ses efforts lui valent rapidement une augmentation de salaire, lequel passe a 5 $ par semaine.
Cette experience fait de Salsberg un avocat de la classe ouvriere.
Il le fait avec humour et honneur.
Parallelement, il devint membre du comite central du Parti communiste du Canada.
Salsberg etait invite aux reunions secretes des travailleurs dans tout le Canada.
Son Honneur le President:
Honorables senateurs, puis-je avoir la permission de continuer?
Son Honneur le President:
C'est alors que J.B. a epouse Dora Wilensky, la passion de sa vie.
En 1959, Dora est decedee prematurement d'un cancer.
Ils n'avaient pas eu d'enfants et J.B. ne s'est jamais remarie.
Il devint le tribun de la classe ouvriere et fut regulierement reelu.
Un grand orateur, il se faisait generalement enormement chahuter a l'assemblee legislative.
J.B. croyait vraiment dans sa cause.
Il s'en est suivi notamment une confrontation acerbe avec Nikita Khrouchtchev, au Kremlin.
En 1957, a son retour a Toronto, desillusionne, il a denonce le communisme.
Cela a conduit, en fait, a la destruction a jamais du Parti communiste au Canada.
Il avait le coeur brise.
Il s'est tourne vers les affaires et le travail communautaire.
Joe connait intimement chaque membre de ma famille.
Joe avait une connaissance encyclopedique de la politique et des gens.
Il connaissait chaque membre de ma famille - mes oncles paternels, ma grand-mere maternelle.
Il disait que chaque homme devait suivre sa voie.
C'etait J.B., me parlant en yiddish.
Il m'a repondu c'etait parce que des gens ecoutaient encore a Ottawa.
Comme je l'ai deja dit, J.B. croyait vraiment dans sa cause.
Je suis toujours blesse lorsque je vois ou entends des gens cruels envers d'autres.
On lui a demande ensuite, s'il devait ecrire son epitaphe, ce qu'elle dirait.
LES TRAVAUX DU SENAT
Son Honneur le President:
Honorables senateurs, je suis certain que vous revenez tous rafraichis et remplis d'enthousiasme.
Je voudrais vous presenter un nouveau page.
Il etudie presentement a l'Universite d'Ottawa, en sciences politiques et en histoire.
Alors bienvenue au Senat a titre de page.
Le Programme d'echange de pages avec la Chambre des communes
Son Honneur le President:
Je vous souhaite tous deux la bienvenue au Senat.
J'espere que votre stage avec nous sera interessant et utile.
L'honorable Sharon Carstairs (leader adjoint du gouvernement):
Son Honneur le President:
Projet de loi modificatif-Premiere lecture
(Le projet de loi est lu une premiere fois.)
Son Honneur le President:
Honorables senateurs, quand lirons-nous ce projet de loi une deuxieme fois?
Projet de loi modificatif-Premiere lecture
(Le projet de loi est lu une premiere fois.)
Son Honneur le President:
Quand lirons-nous le projet de loi une deuxieme fois?
Son Honneur le President:
Vous etes en train d'intervenir.
Honorables senateurs, il s'agissait d'un preambule a ma motion.
Son Honneur le President:
Au cours de cette periode, on presente des avis de motion.
Honorables senateurs, je demande l'autorisation de proposer la motion suivante cet apres-midi.
Son Honneur le President:
Son Honneur le President:
J'entends un non.
Que le comite presente son rapport final au plus tard le 31 mars 1998.
Affaires sociales, sciences et technologie
Autorisation au sous-comite des Anciens combattants de sieger en meme temps que le Senat
Son Honneur le President:
Permission est-elle accordee, honorables senateurs, de proceder maintenant?
Les preoccupations des Albertains-Avis d'interpellation
L'honorable J. Michael Forrestall:
L'honorable B. Alasdair Graham (leader du gouvernement):
Le Canada jouera evidemment un role de soutien, comme le mentionnait le senateur Forrestall.
J'ai fait ma demande en novembre de l'an dernier.
Cela ne pourra que renforcer l'engagement que nous avons pris.
L'honorable Brenda M. Robertson :
Honorables senateurs, ma question s'adresse au leader du gouvernement au Senat.
Elle porte sur un aspect du crime organise qui est particulierement grave au Nouveau-Brunswick.
L'honorable B. Alasdair Graham (leader du gouvernement) :
Honorables senateurs, comme d'habitude, l'honorable senateur souleve une question tres importante.
L'honorable Brenda M. Robertson :
Honorables senateurs, j'ai une autre question a poser au leader du gouvernement au Senat.
J'aimerais vraiment savoir de quoi parle le ministre.
De quoi parle le solliciteur general?
L'honorable B. Alasdair Graham (leader du gouvernement) :
Le ministre Scott a eu plusieurs entretiens.
Je suis persuadee que le senteur serait d'accord avec moi.
L'honorable B. Alasdair Graham (leader du gouvernement) :
Le renouveau dans le domaine de la justice est bien sur une priorite du gouvernement.
La correspondance entre ces gouvernements a cet egard peut-elle nous etre divulguee?
Un examen approfondi a ete fait sur cette question l'an dernier.
Un terme circule beaucoup, a savoir justice reparatrice.
L'honorable Noel A. Kinsella (chef adjoint suppleant de l'opposition) :
Je presume qu'on a fait une certaine evaluation des risques.
L'honorable B. Alasdair Graham (leader du gouvernement) :
Il fallait passer a l'action.
On nous dit qu'il n'y aura pas d'intervention de forces terrestres.
Honorables senateurs, je comprends parfaitement.
C'est une chose qui inquiete le monde entier.
Il n'y a pas de vainqueurs dans une situation comme celle-ci.
Nous esperons toujours que l'on pourra trouver une solution diplomatique.
Toutefois, on ne peut pas remettre la decision indefiniment.
Ce sont leurs populations qui seront touchees.
Est-ce que le Canada a eu des contacts diplomatiques avec ces pays?
La reponse sans equivoque est: Oui, de facon permanente.
L'honorable Norman K. Atkins :
Honorables senateurs, ma question s'adresse au leader du gouvernement.
Dans l'affirmative, quels sont les criteres qui presideront au processus decisionnel?
L'honorable B. Alasdair Graham (leader du gouvernement) :
Le gouvernement privilegie toujours l'approche adoptee.
Les sciences, la recherche et le developpement
Les coupes dans le financement de la recherche medicale-La position du gouvernement
L'honorable B. Alasdair Graham (leader du gouvernement) :
Honorables senateurs, comme je l'ai dit, le budget sera presente le 24 fevrier.
Des chercheurs d'experience reclament plus de fonds.
De toute evidence, la position du gouvernement sera rendue publique dans le budget de 1998.
Je sais que vous le ferez.
Cependant, un autre groupe de contribuables a grandement besoin d'aide.
L'honorable B. Alasdair Graham (leader du gouvernement) :
Je suis certain que les fonctionnaires responsables sont au courant des besoins.
Reponses differees a des questions orales
L'honorable Sharon Carstairs (leader adjoint du gouvernement) :
Honorables senateurs, j'ai un certain nombre de reponses differees.
( Reponse a la question posee par l'honorableMarjory LeBreton le 30 octobre 1997 )
Il faut souligner que dans l'accord de reglement:
( Reponse a la question posee par l'honorableJohn Lynch-Staunton le 30 octobre 1997 )
( Reponse a la question posee par l'honorableJohn Lynch-Staunton le 5 novembre 1997 )
Il faut souligner que dans l'accord de reglement:
Les boises dans les Maritimes-Les recommandations du groupe de travail-La position du gouvernement
( Reponse a la question posee par l'honorableBrenda M. Robertson le 19 novembre 1997 )
La gestion des boises prives des Maritimes.
Une seance a porte sur les moyens de favoriser la gestion durable des boises prives.
( Reponse a la question posee par l'honorableMarjorie LeBreton le 20 novembre 1997 )
L'identification et l'inventaire des lieux contamines federaux-La position du gouvernement
( Reponse a la question posee par l'honorableFernand Roberge le 2 decembre 1997 )
Environnement Canada s'occupait principalement du suivi concernant les substances chimiques ailleurs qu'en mer.
Environnement Canada est copresident du Comite federal des urgences environnementales.
Ce projet de loi contient des dispositions concernant les urgences environnementales.
( Reponse a la question posee par l'honorable Donald H. Oliver le 3 decembre 1997 )
Surveillance de l'evolution des revendications des refugies-La politique du gouvernement
a) Le Ministere surveille l'etat d'avancement des revendications du statut de refugie.
La majorite des personnes qui revendiquent le statut de refugie n'ont pas de documents.
Plus de 1 900 verifications ont ainsi ete effectuees.
Obtenir des renseignements sur les antecedents des revendicateurs constitue un defi de taille.
Les services communautaires destines aux contrevenants-L'admissibilite des contrevenants non violents-Demande de clarifications
( Reponse a la question posee par l'honorable Brenda M. Robertson le 8 decembre 1997 )
Pour certains delinquants et pour certaines infractions, l'incarceration est la seule sanction appropriee.
L'un des principes qui figurent dans ce document est le suivant:
Voici certains des facteurs dont il faut tenir compte:
les antecedents criminels du delinquant;
la nature de l'infraction a l'origine de la peine actuelle;
les antecedents du delinquant au point de vue social;
ses antecedents en matiere de toxicomanie;
la disponibilite de programmes qui conviennent dans la collectivite, et de nombreux autres facteurs.
Les relations Canada-Etats-Unis
( Reponse a la question posee par l'honorableNorman K. Atkins le 8 decembre 1997 )
Au 16 decembre 1997, 29 des 30 Sea King avaient ete inspectes.
Des29 helicopteres, 27 ont ete inspectes et juges en bon etat de service.
( Reponse a la question posee par l'honorableFernand Roberge le 9 decembre 1997 )
Il n'y a pas de seuils de financement distincts pour chaque province et territoire.
( Reponse aux questions posees par l'honorableDonald H. Oliver le 8 decembre 1997 )
Ce NE SONT donc PAS des criminels.
Le Reglement sur l'immigration a ete modifie pour simplifier certains processus de revision (DNRSRC).
La reduction des paiements de transfert aux provinces-L'effet sur le Canada atlantique
( Reponse a la question posee par l'honorableMabel M. DeWare le 9 decembre 1997 )
L'Ontario, l'Alberta et la Colombie-Britannique ne touchent pas de perequation.
Les transferts de points d'impot doivent etre inclus dans le calcul du montant total.
( Reponse aux questions posees par l'honorable Donald H. Oliver le 9 decembre 1997 )
Les interdictions legales sont exposees dans la Loi sur l'immigration.
CIC dispose de trois centres de detention situes a Mississauga, Laval et Vancouver.
Etablissements de detention pour les revendicateurs du statut de refugie-Requetes pour des particuliers
Environ 94 % des personnes detenues se retrouvent dans ces trois regions.
( Reponse a la question posee par l'honorableGerald J. Comeau le 9 decembre 1997 )
Ces reserves sont les memes que celles que le Canada a obtenues dans l'ALENA.
( Reponse a la question posee par l'honorableBrenda M. Robertson le 9 decembre 1997 )
Ce n'est pas le signe d'une situation sociale qui exige une attention immediate.
Le Canada appuie fermement le travail des comites charges d'etudier l'application des traites.
Il serait inapproprie du gouvernement de deposer des lettres en provenance d'un autre organisme.
comite des droits economiques,
a/s Bureau du Haut Commissaire des
CH 1211 Geneve 10
Le sommet de l'APEC-La preponderance des questionscommerciales et economiques-La position du gouvernement
( Reponse a la question posee par l'honorableDonald H. Oliver le 10 decembre 1997 )
Elle etait la seule personne a pouvoir le faire, en compagnie du Premier ministre.
C'est pourquoi les allocutions ont ete supprimees du programme.
Ces decisions n'ont aucun lien avec le contenu de l'allocution de Mme Sparrow.
Les affaires indiennes et le Nord canadien
( Reponse a la question posee par l'honorable Mira Spivak le 12 decembre 1997 )
Le mauvais temps a egalement retarde l'arrivee des deux helicopteres Griffon de Cold Lake.
Ce qu'il faut regarder, c'est le resultat final de l'operation SAR SOWIND.
En fait, pres de 80 p. 100 des operations de SAR sont de nature maritime.
De plus, tous les aeronefs des Forces canadiennes peuvent participer a des missions de SAR.
La proportion des impots percus au Quebec controlee par la province-Demande de precisions
( Reponse a la question posee par l'honorableJerahmiel S. Grafstein le 12 decembre 1997 )
( Reponse a la question posee par l'honorableLowell Murray le 12 decembre 1997 )
A l'heure actuelle, on presume que le Canada ratifiera le Protocole de Kyoto.
Ce travail est deja amorce.
L'imposition de peages federaux sur les routes
( Reponse a la question posee par l'honorableDonald H. Oliver le 15 decembre 1997 )
En vertu de la Constitution canadienne, les routes relevent des administrations provinciales.
( Reponse a la question posee par l'honorableBrenda M. Robertson le 15 decembre 1997 )
Les ministres ont convenu que cette question exige un examen attentif.
Deux etapes importantes seront bientot franchies a ce sujet.
C'est un crime grave qui a pour cible les membres vulnerables de notre societe.
( Reponse a la question posee par l'honorableLowell Murray le 16 decembre 1997 )
Le phenomene informatique du millenaire-Repercussions sur les ordinateurs du gouvernement-La position du gouvernement
( Reponse a la question posee par l'honorableFernand Roberge le 16 decembre 1997 )
Le gouvernement a mene deux sondages aupres de tous ses ministeres et organismes.
D'apres les reponses recues, la plupart des ministeres faisaient des progres raisonnables.
Quant aux autres, ils etaient encourages a redoubler leurs efforts.
Bien des progres ont ete realises depuis.
On met en place des installations d'essai a l'echelle de l'administration publique.
( Reponse a la question posee par l'honorableEymard G. Corbin le 16 decembre 1997 )
( Reponse a la question posee par l'honorableBrenda M. Robertson le 17 decembre 1997 )
( Reponse a la question posee par l'honorable Stanley Haidasz le 18 decembre 1997 )
Dans ces lettres, M. Richter n'a fait aucune demande de financement au gouvernement federal.
Les actes et les recommandations de la Conference ont ete deposees au Senat.
( Reponse a la question posee par l'honorable Janis Johnsonle 18 decembre 1997 )
Rien n'indique que cette epidemie touche egalement d'autres regions du Canada atlantique.
( Reponse a la question posee par l'honorableEymard G. Corbin le 18 decembre 1997 )
Depot des reponses a des questions au Feuilleton
Les transports-L'aeroport Pearson-Le paiement a titre gracieux a Goudge S
L'energie-Postes Canada-La conformite avec la Loi sur les carburants de remplacement
L'energie-Le Service correctionnel-La conformite avec la Loi sur les carburants de remplacement
La defense nationale-La desaffection ou la mise au rebut des equipements
La defense nationale-Les penuries de personnel navigant dans les Forces canadiennes
La defense nationale-Le transfert a la Turquie de munitions d'artillerie excedentaires
L'energie-Les restrictions sur le transport du plutonium et du combustible MOX
Projet de loi modificatif-Deuxieme lecture-Ajournement du debat
Les Etats-Unis, l'Australie, la Grande-Bretagne et le Japon ne le font pas.
De nombreuses affirmations et denegations ont ete formulees des deux cotes de la Chambre.
Je fais plutot appel au bon sens, notamment au bon sens politique.
Nous nous devons a nous-memes de donner suite a cette declaration.
Je ne parle pas ici d'un consensus entre les parties interessees seulement.
Cependant, ces groupes seuls ne forment pas un consensus national.
Pour cela, on a besoin de gens, de beaucoup de gens.
Je pense qu'un tel groupe existe.
Il s'agit de Canadiens moyens et non d'interets speciaux.
Il me semble improbable que ces chiffres aient change radicalement depuis les dernieres elections.
Je serais tres surpris d'apprendre qu'il ne pense plus ainsi.
Je suis sur que la plupart d'entre vous les connaissez.
Taxer l'investissement n'a jamais ete une bonne idee.
C'est aussi taxer les emplois d'une certaine maniere.
En outre, 34 p. 100 ne peuvent lire que des choses simples.
Je suis sur que vous conviendrez avec moi que ces chiffres sont alarmants.
En termes larges, disons que l'alphabetisation touche notre productivite.
Elle a des consequences sur notre competitivite.
Elle influence notre aptitude a faire des affaires dans une economie globale.
Il est donc tres important que nous nous assurions que tous nos concitoyens savent lire.
Nous abordons ici le vif du sujet.
C'est le bons sens qui parle.
Cela s'applique tout particulierement aux jeunes.
Les jeunes representent notre avenir.
C'est notre bien le plus precieux.
De nos jours, l'economie est fondee sur les services et la technologie.
Elle permettent de fournir les nombreux services dont nous avons besoin dans notre societe.
Toutefois, le materiel de lecture devrait faire exception a la regle generale.
L'elimination de la TPS sur le materiel de lecture devrait etre une priorite.
C'est logique sur le plan economique.
(Sur la motion du senateur Carstairs, au nom du senateur Adams, le debat est ajourne.)
La creation d'un comite special-Suite du debat
L'honorable William M. Kelly :
Je voudrais que le debat sur cette motion soit ajourne a mardi...
Son Honneur le President :
Il s'agit de votre motion.
L'article resterait en suspens jusqu'au 3 mars.
Son Honneur le President :
Est-ce d'accord, honorables senateurs?
(Sur la motion du senateur Carstairs, le debat est ajourne.)
Les rapports sur le developpement social et economique
Malheureusement, tres peu de Canadiens connaissent ces rapports.
Le rapport dont il est ici question est tres important.
Ce rapport est en quelque sorte une verification sociale.
Il est important que nous commencions a examiner les rapports que le Canada presente.
(Sur la motion du senateur Carstairs, le debat est ajourne.)
Deuxieme lecture-Ajournement du debat
Permission ayant ete accordee de revenir aux affaires du gouvernement, ordre du jour No 2:
Il beneficie d'un appui important du milieu maritime.
Cela represente le maintien du statu quo pour la plupart.
Le besoin d'emprunter doit etre justifie selon les criteres commerciaux.
Il existe beaucoup d'options a part le transfert au secteur prive.
Des groupes provinciaux, municipaux et communautaires peuvent mettre au point des arrangements novateurs.
Ce reseau est une voie d'eau essentielle, mais c'est aussi une entreprise.
Le gouvernement federal conservera le controle reglementaire de la navigation dans la voie maritime.
L'actuelle administration de la voie maritime serait dissoute en temps opportun.
L'honorable J. Michael Forrestall :
Honorables senateurs, j'ai beaucoup apprecie la presentation qu'a faite notre collegue.
De ce cote-ci, nous avons hate d'etudier ce projet de loi.
Nous voudrons que le projet de loi soit etudie, mais non dans tous ses aspects.
Nous voudrons que le comite permanent convoque des temoins.
La preparation du projet de loi a ete longue.
Ce projet de loi est trop important pour qu'on l'etudie a la hate.
(Sur la motion du senateur Forrestall, le debat est ajourne.)
(Le Senat s'ajourne a 13 h 30, le mercredi 11 fevrier 1998.)

ext: f


text:
program hello_world

  use messaging

  implicit none

  type(Messenger) :: hello, bye

  hello%message_ = 'Hello, CMake world!'
  print *, print_message(hello)

  bye%message_ = 'Bye, CMake world!'
  print *, print_message(bye)

end program

max_stars_repo_name: istupsm/cmake-cookbook

max_issues_repo_name: istupsm/cmake-cookbook

max_forks_repo_name: istupsm/cmake-cookbook


#INCLUDE 'MR_H_ALIGN_PADDING.H'
!***********************************************************************************************************************************
! UNIT:
!
!  (MODULE)
!
! PURPOSE:
!
!   TO
!
! DEFINITION OF VARIABLES:
!
!
!
! RECORD OF REVISIONS:
!
!      DATE       |    PROGRAMMER    |    DESCRIPTION OF CHANGE
!      ====       |    ==========    |    =====================
!   20XX-XX-XX    |     DR. HYDE     |    ORIGINAL CODE.
!
!***********************************************************************************************************************************
  MODULE MR_MOD_CALC_UNIT_ENERGY

    USE MR_KINDS

    USE MR_DEF_CONSTS_N_REF_PARS
    USE MR_DEF_CURVED_GEOS
    USE MR_DEF_FIELD_VARS
    USE MR_DEF_ACTIVITY

    IMPLICIT NONE

    PRIVATE

    PUBLIC :: MR_CALC_UNIT_ENERGY

!***********************************************************************************************************************************

  CONTAINS

!***********************************************************************************************************************************
! UNIT:
!
!  (SUBROUTINE)
!
! PURPOSE:
!
!   TO
!
! DEFINITION OF VARIABLES:
!
!
!
! RECORD OF REVISIONS:
!
!      DATE       |    PROGRAMMER    |    DESCRIPTION OF CHANGE
!      ====       |    ==========    |    =====================
!   20XX-XX-XX    |     DR. HYDE     |    ORIGINAL CODE.
!
!***********************************************************************************************************************************
  SUBROUTINE MR_CALC_UNIT_ENERGY( NI , NJ , NK , UNIT_ENERGY )

    IMPLICIT NONE

    INTEGER(IJID_KIND) , INTENT(IN ) :: NI , NJ
    INTEGER(KKID_KIND) , INTENT(IN ) :: NK

    REAL   (FDRD_KIND) , INTENT(OUT) , DIMENSION(1:NI1(NI,FDRD_KIND),1:NJ,1:2) :: UNIT_ENERGY

    INTEGER(IJID_KIND) :: I , J
    INTEGER            :: DIM
    INTEGER(KKID_KIND) :: K

    !BLOCK
      DO DIM = 1 , 2

        DO J = 1 , NJ
         !DIR$ VECTOR ALIGNED
          DO I = 1 , NI
            !BLOCK
              UNIT_ENERGY( I , J ,DIM) = 0.0
            !END BLOCK
          END DO
        END DO

      END DO
    !END BLOCK

    DO K = 1 , NK

      DO DIM = 1 , 2

        DO J = 1 , NJ
         !DIR$ VECTOR ALIGNED
          DO I = 1 , NI
            IF( ACTIVITY( I , J ) == BEACTIVE ) THEN
              UNIT_ENERGY( I , J ,DIM) = UNIT_ENERGY( I , J ,DIM) +   &
              & DSIGMA * H( I , J ) *   &
              & 0.5 * GUV( I , J ,DIM,DIM) * UV( I , J ,DIM, K ) * UV( I , J ,DIM, K )
            END IF
          END DO
        END DO

      END DO

    END DO

  END SUBROUTINE MR_CALC_UNIT_ENERGY

  END MODULE MR_MOD_CALC_UNIT_ENERGY


text:
      program t
      complex a

!      read(*, *) a
      a = (1.2, 3.4)
      print *, a

      end program


text:
! DART software - Copyright UCAR. This open source software is provided
! by UCAR, "as is", without charge, subject to all terms of use at
! http://www.image.ucar.edu/DAReS/DART/DART_download
!
! $Id$

program netcdf_to_gitm_blocks

!----------------------------------------------------------------------
! purpose: interface between DART and the GITM model
!
! method: Read DART state netcdf files and overwrite values in a gitm restart file.
!
! NOT FINISHED!  HARDLY STARTED.
! this version assumes that the grid is global and the data needs to be
! blocked into one block per gitm mpi task.  there is a different converter
! for when gitm only needs a single input/output file.
!
!----------------------------------------------------------------------

use        types_mod, only : r8

use    utilities_mod, only : initialize_utilities, finalize_utilities, &
                             find_namelist_in_file, check_namelist_read, &
                             logfileunit, open_file, close_file

use        model_mod, only : static_init_model, get_model_size, &
                             get_gitm_restart_dirname !! , statevector_to_restart_file

use time_manager_mod, only : time_type, print_time, print_date, operator(-), &
                             get_time, get_date

implicit none

! version controlled file description for error handling, do not edit
character(len=256), parameter :: source   = &
   "$URL$"
character(len=32 ), parameter :: revision = "$Revision$"
character(len=128), parameter :: revdate  = "$Date$"

!-----------------------------------------------------------------------
! namelist parameters with default values.
!-----------------------------------------------------------------------

character (len = 256) :: netcdf_to_gitm_blocks_input_file = 'filter_restart.nc'

namelist /netcdf_to_gitm_blocks_nml/ netcdf_to_gitm_blocks_input_file

!----------------------------------------------------------------------
! global storage
!----------------------------------------------------------------------

integer               :: iunit, io, x_size
type(time_type)       :: model_time, adv_to_time
character(len=256)    :: gitm_restart_dirname  = 'none'

!======================================================================

call initialize_utilities(progname='netcdf_to_gitm_blocks')

!----------------------------------------------------------------------
! Read the namelist.
!----------------------------------------------------------------------

call find_namelist_in_file("input.nml", "netcdf_to_gitm_blocks_nml", iunit)
read(iunit, nml = netcdf_to_gitm_blocks_nml, iostat = io)
call check_namelist_read(iunit, io, "netcdf_to_gitm_blocks_nml")

!----------------------------------------------------------------------
! Call model_mod:static_init_model() which reads the gitm namelists
! to set grid sizes, etc.
!----------------------------------------------------------------------

call static_init_model()
call get_gitm_restart_dirname(gitm_restart_dirname)

write(*,*)
write(*,*) 'netcdf_to_gitm_blocks: converting DART file ', "'"//trim(netcdf_to_gitm_blocks_input_file)//"'"
write(*,*) 'to gitm restart files in directory ', "'"//trim(gitm_restart_dirname)//"'"

x_size = get_model_size()
!allocate(statevector(x_size))

!----------------------------------------------------------------------
! Reads the valid time, the state, and the target time.
!----------------------------------------------------------------------

!iunit = open_restart_read(netcdf_to_gitm_blocks_input_file)

!if ( advance_time_present ) then
!   call aread_state_restart(model_time, statevector, iunit, adv_to_time)
!else
!   call aread_state_restart(model_time, statevector, iunit)
!endif
!call close_restart(iunit)

!----------------------------------------------------------------------
! update the current gitm state vector
! Convey the amount of time to integrate the model ...
! time_manager_nml: stop_option, stop_count increments
!----------------------------------------------------------------------

!call statevector_to_restart_file(statevector, gitm_restart_dirname, model_time)

!if ( advance_time_present ) then
!   call write_gitm_time_control(model_time, adv_to_time)
!endif

!----------------------------------------------------------------------
! Log what we think we're doing, and exit.
!----------------------------------------------------------------------

call print_date( model_time,'netcdf_to_gitm_blocks:gitm model date')
call print_time( model_time,'netcdf_to_gitm_blocks:DART model time')
call print_date( model_time,'netcdf_to_gitm_blocks:gitm model date',logfileunit)
call print_time( model_time,'netcdf_to_gitm_blocks:DART model time',logfileunit)

! end - close the log, etc
call finalize_utilities()

!======================================================================
contains
!======================================================================

subroutine write_gitm_time_control(model_time, adv_to_time)
! The idea is to write a text file with the following structure:
!
!#TIMESTART
!2003            year
!06              month
!21              day
!00              hour
!00              minute
!00              second
!
!#TIMEEND
!2003            year
!07              month
!21              day
!00              hour
!00              minute
!00              second
!

type(time_type), intent(in) :: model_time, adv_to_time
integer :: iyear,imonth,iday,ihour,imin,isec

iunit = open_file('DART_GITM_time_control.txt', action='write')
write(iunit,*)

! the end time comes first.

call get_date(adv_to_time,iyear,imonth,iday,ihour,imin,isec)
write(iunit,'(''#TIMEEND'')')
write(iunit,'(i4.4,10x,''year''  )')iyear
write(iunit,'(i2.2,12x,''month'' )')imonth
write(iunit,'(i2.2,12x,''day''   )')iday
write(iunit,'(i2.2,12x,''hour''  )')ihour
write(iunit,'(i2.2,12x,''minute'')')imin
write(iunit,'(i2.2,12x,''second'')')isec
write(iunit,*)

call get_date(model_time,iyear,imonth,iday,ihour,imin,isec)
write(iunit,'(''#TIMESTART'')')
write(iunit,'(i4.4,10x,''year''  )')iyear
write(iunit,'(i2.2,12x,''month'' )')imonth
write(iunit,'(i2.2,12x,''day''   )')iday
write(iunit,'(i2.2,12x,''hour''  )')ihour
write(iunit,'(i2.2,12x,''minute'')')imin
write(iunit,'(i2.2,12x,''second'')')isec
write(iunit,*)

call close_file(iunit)
end subroutine write_gitm_time_control

end program netcdf_to_gitm_blocks

! <next few lines under version control, do not edit>
! $URL$
! $Id$
! $Revision$
! $Date$

max_stars_repo_name: nancycollins/DART

max_issues_repo_name: nancycollins/DART

max_forks_repo_name: nancycollins/DART