!********************************************************************
!
      subroutine tide_astroarg
!
!********************************************************************
!
!     objet    : calcul des arguments astronomiques pour la
!                l_tide_harmcompo harmonique et le calcul du
!                potentiel generateur de la maree.
!
!     appelant         : mars,tide_genpot,tide_harmcompo
!     appeles          : tool_julien
!     canal d ecriture :
!     canal de lecture :
!     cle cpp          :
!     objet    :
!
!
!
!     appelant         :
!                      :
!     appeles          :
!                      :
!     canal d ecriture :
!                      :
!     canal de lecture :
!                      :
!     cle cpp          :
!                      :
!     variables in     :
!                      :
!     variables out    :
!                      :
!     variables inout  :
!                      :
!     dernieres modifs : 2008-03-07 : C. Herry (correction initialisation)
!                      :
!***********************************************************
!
USE parameters
use comvars2d
   USE comstatic, ONLY : omegat
use comaree
use commar
implicit none
!
integer                        :: tool_julien,n
real(kind=rlg)                 :: TTT,h01,h02,h03,s01,s02,s03,p01
real(kind=rlg)                 :: p02,p03,hh0,s0,p0,omegat1,tps
real(kind=rlg),dimension(10,3) :: arg
real(kind=rsh),dimension(8),parameter   :: periode=(/44712.00, 43200.00, 86164.28, 92949.28,45569.95, 86637.14, 43082.14, 96725.40/)
!
!---------------------------------------------------------------
! donnees de maree dans l ordre des ondes suivant :
! M2, S2, K1, O1, N2, P1, K2, Q1.
!---------------------------------------------------------------
!
!************************************************************
!     Executable statement
!************************************************************
!
!**********************
!     initialisation
!**********************
!
      h01=280.18950_rlg
      h02=36000.768930_rlg
      h03=3.0d-04
!
      s01=277.02236_rlg
      s02=481267.88314_rlg
      s03=-0.00113_rlg
!
      p01=334.385258_rlg
      p02=4069.03403_rlg
      p03=-0.01032_rlg
!
   if(nbouc.eq.0) then

      do n = 1,tide_nbharmcp
       omega(n)=6.283185308_rsh/periode(n)
      enddo
!
!
!     T01=27392.500528_rlg
!     T02=1.0000000356_rlg
!
! nombre de jour depuis le 1er janvier 1975
!
!     dsince1975=dble(day0)+365.0_rlg*(dble(year0)-1975.d0)
!    1          +dble(int((real(year0)-1972.)/4.))
!
! petite bidouille ramenant sans doute le calcul au 1 janvier 1900
!
!      TTT=(T01+T02*dsince1975)/36 525.d0
!
!
   else
!
!**********************
!     calcul des dates
!**********************
!
      tps = 3600.0_rlg*dble(iheure)+60.0_rlg*dble(iminu)+dble(isec)
      TTT=(tool_julien(ijour,imois,ian)-tool_julien(1,1,1900))/36525.0_rlg
!
!
!*******************************************
!     calcul des variables fondamentales
!*******************************************
!
!     hh0 : longitude moyenne du soleil
!     s0  : longitude moyenne de la lune
!     p0  : longitude du périgée de la lune
!
!*******************************************
!
      hh0=h01+h02*TTT+h03*TTT**2
      s0=s01+s02*TTT+s03*TTT**2
      p0=p01+p02*TTT+p03*TTT**2
!
!**************************
!     calcul des arguments
!**************************
!
!
!     calcul de l argument astronomique pour le groupe M2,M4,M6 ...
!------------------------------------------------------------------
!
      arg(1,1)=mod(2.0_rlg*(hh0-s0),360.0_rlg)*pi/180.0_rlg
      arg(1,2)=mod(4.0_rlg*(hh0-s0),360.0_rlg)*pi/180.0_rlg
      arg(1,3)=mod(6.0_rlg*(hh0-s0),360.0_rlg)*pi/180.0_rlg
!
!     calcul de l argument astronomique pour le groupe S2,S4,S6 ...
!------------------------------------------------------------------
!
      arg(2,1)=0.0_rlg
      arg(2,2)=0.0_rlg
      arg(2,3)=0.0_rlg
!
!     calcul de l argument astronomique pour le groupe k1 ...
!------------------------------------------------------------
!
      arg(3,1)=mod(hh0+90.0_rlg,360.0_rlg)*pi/180.0_rlg
!     arg(3,2)=0.0_rlg
!     arg(3,3)=0.0_rlg
!
!
!     calcul de l argument astronomique pour le groupe O1 ...
!------------------------------------------------------------
!
      arg(4,1)=mod(hh0-2.0_rlg*s0-90.0_rlg,360.0_rlg)*pi/180.0_rlg
!     arg(3,2)=0.0_rlg
!     arg(3,3)=0.0_rlg
!
!     calcul de l argument astronomique pour le goupe N2 ...
!-----------------------------------------------------------
!
      arg(5,1)=mod(2.0_rlg*hh0-3.0_rlg*s0+p0,360.0_rlg)*pi/180.0_rlg
!     arg(3,2)=0.0_rlg
!     arg(3,3)=0.0_rlg
!
!     calcul de l argument astronomique pour le goupe P1 ...
!-----------------------------------------------------------
!
      arg(6,1)=mod(-hh0-90.0_rlg,360.0_rlg)*pi/180.0_rlg
!     arg(3,2)=0.0_rlg
!     arg(3,3)=0.0_rlg
!
!     calcul de l argument astronomique pour le goupe k2 ...
!-----------------------------------------------------------
!
      arg(7,1)=mod(2.0_rlg*hh0,360.0_rlg)*pi/180.0_rlg
!     arg(3,2)=0.0_rlg
!     arg(3,3)=0.0_rlg
!
!     calcul de l argument astronomique pour le goupe Q1 ...
!-----------------------------------------------------------
!
      arg(8,1)=mod(hh0-3.0_rlg*s0+p0-90.0_rlg,360.0_rlg)*pi/180.0_rlg
!     arg(3,2)=0.0_rlg
!     arg(3,3)=0.0_rlg
!
!*********************************
!     calcul de la phase relative
!*********************************
!
      do n=1,tide_nbharmcp
!
!??? reste un probleme pour le arg(n,1)
!
!       omegat1=tps*dble(omega(nu(n)))+arg(n,1)
!       omegat(nu(n))=real(dmod(omegat1,2.0_rlg*pi),rsh)
        omegat1=tps*dble(omega(n))+arg(n,1)
        omegat(n)=real(mod(REAL(omegat1,rlg),2.0_rlg*pi),rsh)
      enddo
   end if
!
      end subroutine tide_astroarg
