c********************************************************************** subroutine lum_teff_VKF c routine PUBLIC du mod_photo c determination des luminosites, temperatures effectives et ecarts c a partir de pi, K, V, [Fe/H] c Auteur: P. Morel, Departement J.D. Cassini, O.C.A., Observatoire de Nice c------------------------------------------------------------------ use mod_kind implicit none real (kind=dp), dimension(2,4) :: jac real (kind=dp), dimension(4) :: x, dx real (kind=dp), dimension(2) :: f, f0, sig real (kind=dp), parameter :: h=1.d-5, unph=1.d0+h real (kind=dp) :: v, sv, k, sk, para, spara, fesh, sfesh, loge, va, ka, 1 stor, stor0, dstor integer :: i,j c--------------------------------------------------------------------------- 2000 format(1x,8es10.3) loge=log10(exp(1.d0)) print* print*,'calcul de L a partir de para, V, K, [Fe/H]' print* b1: do print*,'entrer pi, sigma pi en mas, Exemple: 737.d0 2.7d0, sortie: -1 0' read*,para,spara if(para <= 0.d0)exit b1 print* write(*,"('para=',es10.3,' +/-',es10.3)")para,spara print* print*,'entrer magnitude V, sigma V, Exemple: -0.01d0 0.005d0' read*,v,sv print* write(*,"('V=',es10.3,' +/-',es10.3)")v,sv print* print*,'entrer magnitude K, sigma K, Exemple: -1.51d0 0.01d0' read*,k,sk print* write(*,"('K=',es10.3,' +/-',es10.3)")k,sk print* print*,'entrer [Fe/H], sigma [Fe/H], Exemple: 0.22d0 0.02d0' read*,fesh,sfesh print* write(*,"('[Fe/H=]',es10.3,' +/-',es10.3)")fesh,sfesh c variables muettes pour le calcul du jacobien x(1)=para ; x(2)=v ; x(3)=k ; x(4)=fesh dx(1)=spara ; dx(2)=sv ;dx(3)=sk ; dx(4)=sfesh c magnitudes absolues va=m_abs(x(2),x(1)) ; ka=m_abs(x(3),x(1)) print* write(*,"('Magnitudes absolues')") write(*,"('K=',es10.3,', V=',es10.3)")ka,va print* call tl_vkf(va,ka,x(4),f0(1),f0(2)) print* c write(*,2000)f0(1),f0(2) write(*,"('Teff=',es10.3,', L/Lsol=',es10.3)")(f0(i),i=1,2) print* c pause do i=1,4 stor0=x(i) stor=stor0*unph if(stor == 0.d0)stor=h dstor=stor-stor0 x(i)=stor va=m_abs(x(2),x(1)) ; ka=m_abs(x(3),x(1)) call tl_vkf(va,ka,x(4),f(1),f(2)) x(i)=stor0 jac(:,i)=(f-f0)/dstor enddo print* ; print*,'jacobien' ; write(*,"(4es10.3)")(jac(:,j),j=1,4) sig=matmul(abs(jac),dx) c en Log print* print*,'en Log' write(*,1)log10(f0(1)),loge*sig(1)/f0(1) 1 format(1x,'Log Teff =',es10.3,' +/-',es10.3) write(*,3)log10(f0(2)),loge*sig(2)/f0(2) 3 format(1x,'Log L/Lsol =',es10.3,' +/-',es10.3) c en valeurs naturelles print* print*,'en valeurs naturelles' write(*,5)f0(1),sig(1) 5 format(1x,'Teff =',es10.3,' +/-',es10.3) write(*,7)f0(2),sig(2) 7 format(1x,'L/Lsol =',es10.3,' +/-',es10.3,/) enddo b1 stop end subroutine lum_teff_VKF