c****************************************************************** SUBROUTINE pp1(t,ro,comp,dcomp,jac,deriv,fait, 1 epsilon,et,ero,ex,hhe,be7e,b8e,n13e,o15e,f17e) c routine private du module mod_nuc c réactions thermonucléaires selon GONG c Auteur: P. Morel, Département J.D. Cassini, O.C.A. c CESAM2k c entree : c t : température cgs c ro : densité cgs c comp : abondances c deriv=.TRUE. : on calcule les dérivées dont le jacobien c fait=1 : initialisation de la composition chimique c =2 : dérivée premiere et jacobien si deriv c =3 : énergie nucléaire et dérivées / t c =4 : production de neutrinos c sorties c dcomp : dérivée temporelle (unité de temps : 10**6 ans) c jac : jacobien (unité de temps : 10**6 ans) c e, et, ero, ex : énergie thermonucléaire (unité de temps : s) c et dérivées /t, ro ,X c hhe, be7e, b8e, n13e, o15e, f17e : nombre de neutrinos g/s c pour les réactions designees par le symbole (e pour electron +) c---------------------------------------------------------------- USE mod_donnees, ONLY : ab_ini, ab_min, ah, amu, ihe4, i_ex, 1 nchim, nom_elem, nucleo, rot_solid, secon6, t_inf, t_sup, 2 x0, zi USE mod_kind USE mod_variables, ONLY : wrot IMPLICIT NONE REAL (kind=dp), INTENT(in):: t, ro integer, INTENT(in) :: fait logical, INTENT(in) :: deriv REAL (kind=dp), INTENT(inout), DIMENSION(:) :: comp REAL (kind=dp), INTENT(out), DIMENSION(:,:) :: jac REAL (kind=dp), INTENT(out), DIMENSION(:) :: dcomp, ex, epsilon REAL (kind=dp), INTENT(out) :: et, ero, hhe, be7e, b8e, n13e, 1 o15e, f17e REAL (kind=dp), PARAMETER :: re=6.5d0, a11=4.21d-15, b=3.6d0, 1 qe=6.5d-5, cte3=1.d-9, cte5=1.d0/3.d0 REAL (kind=dp), SAVE :: cte1, cte6 REAL (kind=dp) :: t913, t9 INTEGER :: i LOGICAL, SAVE :: init=.TRUE. c----------------------------------------------------------------- 2000 FORMAT(8es10.3) IF(init)THEN init=.FALSE. ; cte1=-re*a11*secon6/2.d0*ah cte6=qe*a11/2.d0/amu*ah**2 ; l_vent=.FALSE. ; l_planet=.FALSE. ENDIF SELECT CASE(fait) CASE(0) !initialisation, nombre d'éléments c définition de nchim: nombre d'éléments chimiques dont on c calcule l'abondance: H1 nchim=1 ; nreac=1 ; t_inf=1.d6 ; t_sup=20.d6 ; ihe4=-100 ; i_ex=-100 ALLOCATE(ab_ini(nchim),ab_min(nchim),nom_elem(nchim), 1 nucleo(nchim),zi(nchim)) nom_elem(1)=' H1 ' ; nucleo(1)=ah ; zi(1)=1.d0 CASE(1) !initialisation des abondances initiales ab_ini(1)=x0 ; ab_min=ab_ini*1.d-2 ; comp(1)=x0/nucleo(1) WRITE(2,*)'Réaction thermonucléaire du cycle PP simplifie (GONG)' WRITE(2,*)' ' ; WRITE(2,*)'nombre de réactions: ',nreac WRITE(2,*)'nombre d''éléments chimiques: ',nchim WRITE(2,*)' ' ; WRITE(2,3)comp(1:nchim) 3 FORMAT(1x,'Abondance initiale H: ',es10.3) 2 FORMAT(1x,'Abondance négligeable H:', es10.3) WRITE(2,2)ab_min(1:nchim) ; WRITE(2,*)' ' WRITE(2,*)'pour l''évolution temporelle, test de précision sur H' WRITE(2,*)' ' WRITE(*,*)'Réaction thermonucléaire du cycle PP simplifié (GONG)' WRITE(*,*)' ' WRITE(*,*)'nombre de réactions: ',nreac WRITE(*,*)'nombre d''éléments chimiques: ',nchim WRITE(*,*)' ' ; WRITE(*,3)comp(1:nchim) WRITE(*,2)ab_min(1:nchim) ; WRITE(*,*)' ' WRITE(*,*)'pour l''évolution temporelle, test de précision sur H' WRITE(*,*)' ' CASE(2) IF(t < t_inf)THEN !si t