vs_chp.f 8.3 KB
      subroutine vs_chp
c*
c***********************************************************************
c*
c*PRO MAGLIB
c*
c*VER 01.01.07 - V 3.0
c*VER 13.10.10 - V 4.0
c*VER 2017.02.24 - V 5.0
c*
c*AUT spec. CNES - JC KOSIK - Novembre 2006
c*AUT port. SILOGIC
c*AUT adapt. AKKA
c*
c*ROL Theme : Modeles de champs magnetiques
c*ROL         Calcul des variations seculaires pour les modeles
C*ROL         chp95, chp00, chp05, chp10 et chp15
c*
c*NOT common    : util, util2
c*
c*INF utilise   : sans objet
c*
c*HST version 3.0 - 01.01.07
c*HST version 4.0 - 13.10.10 Coefficients de Schmidt
c*HST                        entre 1995 et 2010
c*HST version 5.0 - 2017.02.24 - Coefficients de Schmidt
c*HST                            entre 1995 et 2015
c*
c***********************************************************************
c*
      implicit none
c
c     ---------------------------------
c*FON Declaration identificateur rcs_id
c     ---------------------------------
c
      character rcs_id*100
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      integer lg(195,5)
c*LOC lg : coefficients entre 1995 et 2015
c
      integer kmax
c*LOC kmax : nombre de pas de calcul (= 14)
c
      integer i,k,l,imin,imax,ntot,nm,inc
c*LOC i,k,l,jj,imin,imax,ntot,nm,inc : indices de boucles et de tableaux
c
      double precision delt,dgg(14,14),dhh(14,14),fn1,fn2

c
      SAVE
c
c     ---------------------------------
c*FON Affectation identificateur rcs_id
c     ---------------------------------
c
      data rcs_id /"
     >$Id$"/
c
c     --------------------------
c*FON Affectation des constantes
c     --------------------------
c
c
c    Revision 24.02.2017
c    Passage au coeff. champ 2010 définitifs
c    Introduction des coeff. champ 2015
c
c    Champ 1995  révisé octobre 2006
      data (lg(i,1),i=1,195)/
     > -296920, -17840, 53060, -22000, 30700, -23660, 16810, -4130, 
     > 13350,-22670,
     > -2620, 12490, 3020, 7590, -4270, 9400, 7800, 2620, 2900, -2360, 
     > -4180, 970, 1220, -3060, -2140, 3520, 460, 2350, 1650, -1180,
     > -1430, -1660, -550, -170, 1070, 680, 670, -170, 680, 720,
     > -1700, 670, -10, -580, 190, 10, -930, 360, 770, -720,
     > -690, 10, -250, 280, 40, 50, 240, 40, 170, 80,
     > -240, -20, -60, 250, 60, 110, -60, -210, -90, 80, 
     > -140, -230, 90, 150, 60, 110, -50, -160, -70, -40,
     >  40, 90, -200, 30, 150, -100, 120, 80, -60, -80,
     > -80, -10, 80, 100, 50, -20, -80, -80, 30, -30,
     > -60, 10, 20, 0, -40, 40, -10, 50, 40, -50,
     > 20, -10, 20, -20, 50, 10, 10, -20, 0, -70,75*0/
c
c    Champ 2000  révisé octobre 2006
c
      data (lg(i,2),i=1,195)/
     > -296194,-17282,51861,-22677,30684,-24816,16709,-4580,13396,
     > -22880,-2276,12521,2934,7145,
     > -4911,9323,7868,2726,2500,-2319,-4030,1198,1113,-3038,-2188,
     >  3514,438,2223,
     >  1719,-1304,-1331,-1686,-393,-129,1063,723,682,-174,742,637,
     > -1609,651,
     > -59,-612,169,7,-904,438,790,-740,-646,0,-242,333,62,91,
     >  240,69,148,73,-254,-12,-58,244,66,119,-92,-215,-79,85,
     > -166,-215,91,155,70,89,-79,-149,-70,-21,50,94,-197,30,
     >  134,-84,125,63,-62,-89,-84,-15,84,93,38,-43,-82,-82,
     >  48,-26,-60,17,17,0,-31,40,-5,49,37,-59,10,-12,
     >  20,-29,42,2,3,-22,-11,-74,27,-17,1,-19,13,15,
     > -9,-1,-26,1,9,-7,-7,7,-28,17,-9,1,-12,12,
     > -19,40,-9,-22,-3,-4,2,3,9,25,-2,-26,9,7,
     > -5,3,3,0,-3,0,-4,3,-1,-9,-2,-4,-4,8,
     > -2,-9,-9,3,2,1,18,-4,-4,13,-10,-4,-1,7,
     >  7,-4,3,3,6,-1,3,4,-2,0,-5,1,-9
     > /
c
c    Champ 2005  révisé octobre 2010
c
      data (lg(i,3),i=1,195)/
     > -2955463,-166905,507799,-233724,304769,-259450,165776,-51543,
     >  133630,-230583,-19886,124639,26972,67251,
     > -52472,92055,79796,28207,21065,-22523,-37986,14515,10000,
     > -30536,-22700,35441,4272,20895,
     >  18025,-13654,-12345,-16805,-1957,-1355,10385,7360,6956,-2033,
     >  7674,5475,-15134,6363,
     > -1458,-6353,1458,24,-8636,5094,7988,-7446,-6114,-165,-2257,
     >  3873,682,1230,
     >  2535,937,1093,542,-2632,194,-464,2480,762,1120,-1173,-2088,
     > -688,983,
     > -1811,-1971,1017,1622,936,761,-1125,-1276,-487,-6,558,976,
     > -2011,358,
     >  1269,-694,1267,501,-672,-1076,-816,-125,810,876,292,-666,-773,
     > -922,
     >  601,-217,-612,219,142,10,-235,446,-15,476,306,-658,29,-101,
     >  206,-347,377,-86,-21,-231,-209,-793,295,-160,26,-188,144,144,
     > -77,-31,-227,29,90,-79,-58,53,-269,180,-108,16,-158,96,
     > -190,399,-139,-215,-29,-55,21,23,89,238,-38,-263,96,61,
     > -30,40,46,1,-35,2,-36,28,8,-87,-49,-34,-8,88,
     > -16,-88,-76,30,33,28,172,-43,-54,118,-107,-37,-4,75,
     >  63,-26,21,35,53,-5,38,41,-22,-10,-57,-18,-82
     > /
c
c    Champ 2010  révisé février 2017
c
      data (lg(i,4),i=1,195)/
     > -2949657,-158642,494426,-239606,302634,-270854,166817,-57573,
     > 133985,-232654,-16040,123210,25175,
     >  63373,-53703,91266,80897,28648,16658,-21103,-35683,16446,8940,
     > -30972,-23087,35729,4458,
     >  20026,18901,-14105,-11806,-16317,-1,-803,10104,7278,6869,
     > -2090,7592,4418,-14140,
     >  6154,-2283,-6626,1310,302,-7809,5540,8044,-7500,-5780,-455,
     > -2120,4524,654,
     >  1400,2496,1046,703,164,-2761,492,-328,2441,821,1084,-1450,
     > -2003,-559,
     >  1183,-1934,-1741,1161,1671,1085,696,-1405,-1074,-354,164,550,
     >  945,-2054,
     >  345,1151,-527,1275,313,-714,-1238,-742,-76,797,843,214,-842,
     > -608,
     > -1008,701,-194,-624,273,89,-10,-107,471,-16,444,245,-722,-33,
     > -96,213,-395,309,-199,-103,-197,-280,-831,305,-148,13,-203,167,
     >  165,-66,-51,-176,54,85,-79,-39,37,-251,179,-127,12,-211,
     >  75,-194,375,-186,-212,-21,-87,30,27,104,213,-63,-249,95,
     >  49,-11,59,52,0,-39,13,-37,27,21,-86,-77,-23,4,
     >  87,-9,-89,-87,31,30,42,166,-45,-59,108,-114,-31,-7,
     >  78,54,-18,10,38,49,2,44,42,-25,-26,-53,-26,-79
     > /
c
c    Champ 2015  révisé février 2017
c
      data (lg(i,5),i=1,195)/
     > -294420,-15010,47971,-24451,30129,-28456,16767,-6419,13507,
     > -23523,-1153,12256,2449,
     >  5820,-5384,9076,8137,2833,1204,-1887,-3349,1809,704,-3295,
     > -2326,3601,473,
     >  1924,1970,-1409,-1193,-1575,160,41,1002,700,677,-208,727,332,
     > -1299,
     >  589,-289,-667,132,73,-709,626,816,-761,-541,-68,-195,518,57,
     >  150,244,94,34,-28,-274,68,-22,242,88,101,-169,-183,-32,
     >  133,-206,-146,134,162,117,57,-159,-91,-20,21,54,88,-216,
     >  31,108,-33,118,7,-68,-133,-69,-1,78,87,10,-91,-40,
     > -105,84,-19,-63,32,1,-4,5,46,-5,44,18,-79,-7,
     > -6,21,-42,24,-28,-18,-12,-36,-87,31,-15,-1,-23,20,
     >  20,-7,-8,-11,6,8,-7,-2,2,-22,17,-14,-2,-25,
     >  4,-20,35,-24,-19,-2,-11,4,4,12,19,-8,-22,9,
     >  3,1,7,5,-1,-3,3,-4,2,2,-9,-9,-1,0,
     >  7,0,-9,-9,4,4,5,16,-5,-5,10,-12,-2,-1,
     >  8,4,-1,-1,3,4,1,5,5,-3,-4,-4,-3,-8
     > /
c
      data kmax /14/

c
c     ******************
c     Debut de programme
c     ******************
c
c     ---------------
c*FON Initialisations
c     ---------------

         delt  =  5.d0
         
         imax = 5
         imin = imax - 1
c
c        *************************
c        Facteur de normalisation
c        *************************
         fn1 = 10.d0
	 fn2 = 10.d0
         if ((imin .ge. 3) .and. (imin .lt. 5)) then
	    fn2 = 100.d0
	 endif
         if ((imax.ge. 3) .and. (imax .lt. 5)) then
	    fn1 = 100.d0
	 endif
	 
         

         ntot = 0
         do 60  k = 2, kmax
            dgg(k,1) = ((+ dble(lg(ntot+1,imax))/fn1 - 
     >	                   dble(lg(ntot+1,imin))/fn2)
     >                  / delt)
     >                 *(fn1*fn2)
            l = 1

            write(1,100)  'k,1,dgg',k, 1, dgg(k,1)
c
            nm = 2 * k - 1
            do 50 l = 2, k
               inc = 2 * l - 2
               dgg(k,l) = ((dble(lg(ntot+inc,imax))/fn1 -
     >	    	    	    dble(lg(ntot+inc,imin))/fn2)
     >                     /delt)
     >                    *(fn1*fn2)
               write(1,100) 'k,l,dgg',  k, l, dgg(k,l)

               dhh(k,l) = ((+ dble(lg(ntot+inc+1,imax))/fn1 -
     >                        dble(lg(ntot+inc+1,imin))/fn2) 
     >                     /delt)
     >                    *(fn1*fn2)
               write(1,100) 'k,l,dgg', k,l, dhh(k,l)
50          continue
            ntot = ntot + nm
60       continue

100      format(a20, 2i5, 2f10.1)

c     ****************
c     Fin de programme
c     ****************
c
      return
      end