c****************************************************************** SUBROUTINE zsx_fesh(zfe,z_to_f,dzdf) c routine PUBLIC du module mod_spectroscopie c transformation de Z/X en [Fe/H] si z_ro_f et reciproque c entrée: c z_to_f=.true. : Z/X ==> [Fe/H] c entree/sortie: c z_to_f=.true, entree zfe=(Z/X) sortie zfe=[Fe/H] c z_to_f=.false, entree zfe=[Fe/H] sortie zfe=(Z/X) c argument optionnel c z_to_f=.true, entree dzdf=d(Z/X) sortie dzdf=d[Fe/H] c z_to_f=.false, entree dzdf=d[Fe/H] sortie dzdf=d(Z/X) c Auteur: P. Morel, Laboratoire Lagrange, O.C.A., CESAM2k c------------------------------------------------------------- USE mod_kind USE mod_donnees, ONLY : init_ctes_phys, ln10, zsx_sol IMPLICIT NONE LOGICAL, INTENT(in) :: z_to_f REAL (kind=dp), INTENT(inout) :: zfe REAL (kind=dp), OPTIONAL, INTENT(inout) :: dzdf LOGICAL, SAVE :: init=.TRUE. c------------------------------------------------------------- IF(init)THEN init=.FALSE. ; CALL init_ctes_phys ENDIF IF(z_to_f)THEN !Z/X ==> [Fe/H] IF(PRESENT(dzdf))dzdf=dzdf/zfe/ln10 !d [Fe/H] zfe=LOG10(zfe/zsx_sol) !(Z/X) ==> [Fe/H] ELSE zfe=10.d0**(zfe)*zsx_sol ![Fe/H] ==> (Z/X) IF(PRESENT(dzdf))dzdf=ln10*zfe*dzdf !d (Z/X) ENDIF RETURN END SUBROUTINE zsx_fesh