c************************************************************************* SUBROUTINE opa_cond_mestel(xchim,t,ro,kappa,dkapdt,dkapdr,dkapdx) c subroutine PRIVATE du module mod_opa c calcul des dérivées des opacités conductives c entrées: c xchim : comp. chim. en fraction de masse c t : température K c ro : densité cgs c sortie: c kapa : opacité gr / cm2) c dkapdt : kappa / d t c dkapdr : kappa / d densité c dkapdx : kappa / d xchim(1) c Auteur: P. Morel, Département Cassiopée, O.C.A. CESAM2k c------------------------------------------------------------------------- USE mod_donnees, ONLY : nchim USE mod_kind REAL (kind=dp), INTENT(in), DIMENSION(nchim) :: xchim REAL (kind=dp), INTENT(in) :: t, ro REAL (kind=dp), INTENT(inout) :: dkapdt, dkapdr, dkapdx, kappa REAL (kind=dp), PARAMETER :: dd=1.d-5 , unpdd=1.d0+dd REAL (kind=dp), DIMENSION(nchim) :: xchim1 REAL (kind=dp) :: dstor, kappac, kappa_c, stor, stor0 c------------------------------------------------------------------------- 2000 FORMAT(8es10.3) c appel initial CALL cond_mestel(xchim,t,ro,kappa_c) c dérivée / X IF(xchim(1) > 1.d-2)THEN stor0=xchim(1) ; stor=stor0*unpdd ; dstor=stor-stor0 xchim1=xchim ; xchim1(1)=stor CALL cond_mestel(xchim1,t,ro,kappac) dkapdx_c=(kappac-kappa_c)/dstor ELSE dkapdx_c=0.d0 ENDIF c dérivée / T stor0=t ; stor=stor0*unpdd ; dstor=stor-stor0 CALL cond_mestel(xchim,stor,ro,kappac) dkapdt_c=(kappac-kappa_c)/dstor c dérivée / ro stor0=ro ; stor=stor0*unpdd ; dstor=stor-stor0 CALL cond_mestel(xchim,t,stor,kappac) dkapdr_c=(kappac-kappa_c)/dstor c dérivées du kappa dkapdr=(kappa**2*dkapdr_c+kappa_c**2*dkapdr)/(kappa+kappa_c)**2 dkapdt=(kappa**2*dkapdt_c+kappa_c**2*dkapdt)/(kappa+kappa_c)**2 dkapdx=(kappa**2*dkapdx_c+kappa_c**2*dkapdx)/(kappa+kappa_c)**2 kappa=kappa*kappa_c/(kappa+kappa_c) RETURN END SUBROUTINE opa_cond_mestel