c****************************************************************** SUBROUTINE bmv_teff_flower(bmv,dbmv,teff,dteff) c détermination de Teff en fonction de B-V c suivant la table 3 de Flower 1996, ApJ 469, 355 c routine du module mod_photo c entrées c bmv, dbmv: B-V, erreur c sorties c teff, dteff: Teff, erreur c Auteur: P. Morel, Laboratoire Lagrange O.C.A., CESAM2k c----------------------------------------------------------------------- USE mod_kind USE mod_numerique, ONLY: bsp1dn IMPLICIT NONE c m: ordre des splines INTEGER, PARAMETER :: pt=216, m=4 REAL (kind=dp), INTENT(in):: bmv, dbmv REAL (kind=dp), INTENT(out):: teff, dteff INTEGER :: i REAL (kind=dp), SAVE, DIMENSION(pt) :: b= 1 (/ (1.8d0-(i-1)*0.01d0,i=1,pt) /) REAL (kind=dp), SAVE, DIMENSION(pt+m) :: bt REAL (kind=dp), SAVE, DIMENSION(1,pt) :: t REAL (kind=dp), DIMENSION(1) :: fx, dfxdx REAL (kind=dp) :: bid INTEGER, SAVE :: knot, l LOGICAL, SAVE :: init=.TRUE. c----------------------------------------------------------------------- 2000 FORMAT(8es10.3) if(init)then init=.FALSE. c initialisation des Teff t(1,:)= (/ 1 2936.d0, 3000.d0, 3061.d0, 3119.d0, 3175.d0, 3228.d0, 3278.d0, 2 3326.d0, 3372.d0, 3415.d0, 2 3457.d0, 3496.d0, 3533.d0, 3 3568.d0, 3601.d0, 3634.d0, 3664.d0, 3693.d0, 3721.d0, 3748.d0, 4 3773.d0, 3797.d0, 3821.d0, 3843.d0, 3865.d0, 3885.d0, 3906.d0, 5 3926.d0, 3945.d0, 3964.d0, 3982.d0, 4001.d0, 4018.d0, 4036.d0, 6 4053.d0, 4070.d0, 4086.d0, 4103.d0, 4120.d0, 4137.d0, 7 4153.d0, 4169.d0, 4186.d0, 4202.d0, 4217.d0, 4234.d0, 4251.d0, 8 4266.d0, 4283.d0, 4300.d0, 4316.d0, 4333.d0, 4349.d0, 4366.d0, 9 4382.d0, 4399.d0, 4415.d0, 4433.d0, 4449.d0, 4466.d0, 1 4483.d0, 4500.d0, 4518.d0, 4535.d0, 4553.d0, 4569.d0, 2 4587.d0, 4605.d0, 4622.d0, 4640.d0, 3 4658.d0, 4676.d0, 4694.d0, 4713.d0, 4731.d0, 4748.d0, 4 4767.d0, 4786.d0, 4806.d0, 4825.d0, 5 4843.d0, 4862.d0, 4883.d0, 4902.d0, 4922.d0, 4943.d0, 6 4963.d0, 4984.d0, 5004.d0, 5025.d0, 7 5047.d0, 5068.d0, 5090.d0, 5114.d0, 5136.d0, 5159.d0, 8 5183.d0, 5207.d0, 5231.d0, 5256.d0, 9 5282.d0, 5307.d0, 5333.d0, 5359.d0, 5386.d0, 5413.d0, 1 5442.d0, 5470.d0, 5499.d0, 5528.d0, 2 5559.d0, 5589.d0, 5620.d0, 5653.d0, 5684.d0, 5717.d0, 3 5751.d0, 5784.d0, 5819.d0, 5855.d0, 4 5891.d0, 5927.d0, 5964.d0, 6002.d0, 6040.d0, 6078.d0, 5 6117.d0, 6158.d0, 6198.d0, 6240.d0, 6 6282.d0, 6324.d0, 6366.d0, 6409.d0, 6453.d0, 6496.d0, 7 6541.d0, 6587.d0, 6632.d0, 6678.d0, 8 6725.d0, 6771.d0, 6820.d0, 6867.d0, 6916.d0, 6964.d0, 9 7014.d0, 7063.d0, 7113.d0, 7164.d0, 1 77216.d0, 7267.d0, 7319.d0, 7372.d0, 7426.d0, 7481.d0, 2 7535.d0, 7592.d0, 7648.d0, 7707.d0, 3 87766.d0, 7825.d0, 7886.d0, 7950.d0, 8016.d0, 8083.d0, 4 8152.d0, 8222.d0, 8296.d0, 8373.d0, 5 8454.d0, 8538.d0, 8625.d0, 8717.d0, 8814.d0, 8916.d0, 6 9026.d0, 9139.d0, 9262.d0, 9392.d0, 7 9530.d0, 9680.d0, 9840.d0,10011.d0,10195.d0,10396.d0, 8 10612.d0,10846.d0, 11099.d0,11376.d0, 9 11678.d0,12008.d0,12368.d0,12764.d0,13197.d0,13677.d0,14203.d0, 1 14787.d0,15434.d0,16154.d0, 2 16958.d0,17852.d0,18858.d0,19989.d0,21261.d0,22703.d0,24339.d0, 3 26199.d0,28333.d0,30789.d0, 4 33620.d0,36897.d0,40719.d0,45196.d0,50477.d0,56728.d0 /) c on retourne DO i=1,pt/2 bid=b(i) ; b(i)=b(pt-i+1) ; b(pt-i+1)=bid bid=t(1,i) ; t(1,i)=t(1,pt-i+1) ; t(1,pt-i+1)=bid ENDDO c initialisation de l'interpolation CALL bsp1dn(1,t,b,bt,pt,m,knot,.FALSE.,b(1),l,fx,dfxdx) PRINT* ; WRITE(*,1) 1 FORMAT('détermination de Teff en fonction de B-V',/, 1 'suivant la table 3 de Flower 1996, ApJ 469, 355') PRINT* ENDIF c------------------initialisations fin------------------------- c interpolation CALL bsp1dn(1,t,b,bt,pt,m,knot,.true.,bmv,l,fx,dfxdx) teff=fx(1) ; dteff=abs(dfxdx(1))*dbmv RETURN END SUBROUTINE bmv_teff_flower