c*********************************************************************** SUBROUTINE atm(list,l_rac,r_rac,xchim,pt_rac,dptsdl,dptsdr, 1 t_rac,dtsdl,dtsdr,m_rac,dmsdl,dmsdr,p_rac,dpsdl,dpsdr,teff) c routine générique pour la restitution de l'atmosphère c il y a des appels différents suivant nom_atm c routine public du module mod_atm c entrées : c list=.true. : calcul réduit pour une liste c r_rac : rayon au raccord c l_rac : luminosité au raccord c xchim : composition chimique par gramme c sorties : c pt_rac : pression totale au raccord, c dptsdl : dérivée / L de la pression totale au raccord, c dptsdr : dérivée / R de la pression totale au raccord, c t_rac : température au raccord, c dtsdl : dérivée / L de la température au raccord, c dtsdr : dérivée / R de la température au raccord, c m_rac : masse au raccord, c dmsdl : dérivée / L de la masse au raccord, c dmsdr : dérivée / R de la masse au raccord, c p_rac : pression gazeuse au raccord, c dpsdl : dérivée / L de la pression gazeuse au raccord, c dpsdr : dérivée / R de la pression gazeuse au raccord, c teff : température effective. c Auteur: P. Morel, Département J.D. Cassini, O.C.A., CESAM2k c-------------------------------------------------------------------- USE mod_donnees, ONLY : baratine, langue, nom_atm, nom_fich2 USE mod_kind USE mod_variables, ONLY : log10_teff, lstar, sortie IMPLICIT NONE REAL (kind=dp), INTENT(in), DIMENSION(:) :: xchim REAL (kind=dp), INTENT(in) :: l_rac, r_rac LOGICAL, INTENT(in) :: list REAL (kind=dp), INTENT(out) :: pt_rac, dptsdl, dptsdr, t_rac, 1 dtsdl, dtsdr, m_rac, dmsdl, dmsdr, p_rac, dpsdl, dpsdr, teff LOGICAL, SAVE :: init=.TRUE. c------------------------------------------------------------- IF(init)THEN init=.FALSE. c baratine=.FALSE. permet de dérouter sur le fichier mon_modèle_102 les c informations concernant le déroulement des calculs pour l'atmosphère IF(baratine)THEN usl_atm=6 ELSE usl_atm=102 OPEN(unit=102,form='formatted',status='unknown',!access='append', 1 file=TRIM(nom_fich2)//'_atm') ENDIF SELECT CASE (langue) CASE('english') WRITE(usl_atm,1000) 1000 FORMAT(/,'if the restoration of the atmosphere failed,',/, 1 'erase the binary filemon_modele_B.atm',/) CASE DEFAULT WRITE(usl_atm,1) 1 FORMAT(/,"Si échec de la restitution de l'atmosphère lors de initialisation",/, 1 "ou d'une reprise: supprimer le fichier mon_modele_B.atm s'il existe") END SELECT ENDIF SELECT CASE(nom_atm) CASE('lim_gong1') CALL lim_gong1(l_rac,r_rac,xchim,pt_rac,dptsdl,dptsdr, 1 t_rac,dtsdl,dtsdr,m_rac,dmsdl,dmsdr,p_rac,dpsdl,dpsdr,teff) CASE('lim_tau1') CALL lim_tau1(l_rac,r_rac,xchim,pt_rac,dptsdl,dptsdr, 1 t_rac,dtsdl,dtsdr,m_rac,dmsdl,dmsdr,p_rac,dpsdl,dpsdr,teff) CASE('lim_atm') CALL lim_atm(list,l_rac,r_rac,xchim,pt_rac,dptsdl,dptsdr, 1 t_rac,dtsdl,dtsdr,m_rac,dmsdl,dmsdr,p_rac,dpsdl,dpsdr,teff) CASE DEFAULT PRINT*,'routine de restitution d''atmosphère inconnue: ',nom_atm PRINT*,'routines connues: lim_gong1, lim_tau1, lim_atm' CALL sortie('atm') END SELECT c température effective log10_teff=LOG10(teff) c la luminosité est supposée constante dans l'atmosphère lstar=l_rac RETURN END SUBROUTINE atm