c******************************************************************** SUBROUTINE t_vkf(v,dv,k,dk,fesh,dfesh,teff,dteff) c routine PUBLIC du module mod_photo c calcul de la Teff en utilisant les Mv, Mk et [Fe/H] c suivant Alonso et al. A&A 313, 873, 1996 (formules 7 et 8), c Auteur: P. Morel, Laboratoire Lagrange, O.C.A., CESAM2k c entrees c v, dv k, dk : magnitudes absolues V et K et precision c fesh, dfesh : [Fe/H] et precision c sorties c teff, dteff : Teff et precision c------------------------------------------------------------------------ USE mod_kind IMPLICIT NONE REAL (kind=dp), INTENT(in) :: v, dv, k, dk, fesh, dfesh REAL (kind=dp), INTENT(out) :: teff, dteff REAL (kind=dp) :: vmk, teta, dteta_vmk, dteta_fesh LOGICAL, SAVE :: init=.true. LOGICAL :: cas1, cas2 c----------------------------------------------------------------------- if(init)THEN !initialisations init=.FALSE. WRITE(*,10) 10 FORMAT('calcul de la Teff en utilisant les Mv, Mk et [Fe/H]',/, 1 'suivant Alonso et al. A&A 313, 873, 1996 (formules 7 et 8)',/) ENDIF vmk=v-k cas1=(0.4d0 <= vmk .AND. vmk <= 1.6d0) .AND. 1 (0.5d0 >= fesh .AND. fesh > -0.5d0) cas1=cas1 .OR. (0.8d0 <= vmk .AND. vmk <= 1.6d0) .AND. 1 (-0.5d0 >= fesh .AND. fesh > -1.5d0) cas1=cas1 .OR. (1.1d0 <= vmk .AND. vmk <= 1.6d0) .AND. 1 (-1.5d0 >= fesh .AND. fesh > -3.5d0) cas2=(1.6d0 <= vmk .AND. vmk <= 4.1d0) .AND. 1 (0.5d0 >= fesh .AND. fesh > -0.5d0) cas2=cas2 .OR. (1.6d0 <= vmk .AND. vmk <= 3.0d0) .AND. 1 (-0.5d0 >= fesh .AND. fesh > -1.5d0) cas2=cas2 .OR. (1.6d0 <= vmk .AND. vmk <= 2.4d0) .AND. 1 (-1.5d0 >= fesh .AND. fesh > -2.5d0) cas2=cas2 .OR. (1.6d0 <= vmk .AND. vmk <= 2.2d0) .AND. 1 (-2.5d0 >= fesh .AND. fesh > -3.5d0) IF(cas1)THEN !formule 7 teta=0.555d0+vmk*(vmk*0.013d0+0.195d0-0.008d0*fesh) !formule 7 1 +fesh*(0.009d0-0.002d0*fesh) dteta_vmk=0.195d0+0.026d0*vmk-0.008d0*fesh dteta_fesh=0.009d0-0.004d0*fesh-0.008d0*vmk c WRITE(*,4)tef,log10(tef) 4 FORMAT('cas 1: Teff=',f8.1,' Log Teff=',1pe12.5,/) ELSEIF(cas2)THEN !formule 8 teta=0.566d0+vmk*(-vmk*0.003d0+0.217d0-0.024d0*fesh) !formule 8 1 +fesh*(0.037d0-0.002d0*fesh) dteta_vmk=0.217d0-vmk*0.006d0-0.024d0*fesh dteta_fesh=0.037d0-0.004d0*fesh-0.024d0*vmk c WRITE(*,15)tef,log10(tef) 15 FORMAT(1x,'cas 2: Teff=',f8.1,' Log Teff=',1pe12.5,/) ELSEIF(vmk <= 1.6d0)THEN WRITE(*,3)vmk,fesh 3 FORMAT(1x,' V-K=',f8.4,' et [Fe/H]=',f8.4,' hors limites',/, 1 'pour Teff on utilise quand même la formule 7') teta=0.555d0+vmk*(vmk*0.013d0+0.195d0-0.008d0*fesh) !formule 7 1 +fesh*(0.009d0-0.002d0*fesh) dteta_vmk=0.195d0+0.026d0*vmk-0.008d0*fesh dteta_fesh=0.009d0-0.004d0*fesh-0.008d0*vmk ELSE WRITE(*,5)vmk,fesh 5 FORMAT(1x,' V-K=',f8.4,' et [Fe/H]=',f8.4,' hors limites',/, 1 'pour Teff on utilise quand meme la formule 8') teta=0.566d0+vmk*(-vmk*0.003d0+0.217d0-0.024d0*fesh) !formule 8 1 +fesh*(0.037d0-0.002d0*fesh) dteta_vmk=0.217d0-vmk*0.006d0-0.024d0*fesh dteta_fesh=0.037d0-0.004d0*fesh-0.024d0*vmk ENDIF teff=5040.d0/teta dteff=teff/teta*sqrt((dteta_vmk*dv)**2+(dteta_vmk*dk)**2 1 +(dteta_fesh*dfesh)**2) ; dteff=abs(dteff) RETURN END SUBROUTINE t_vkf