function iso_verif_noNaN_nostop(x,err_msg) IMPLICIT NONE ! si x est NaN, on affiche message ! d'erreur et return 1 si erreur ! input: real :: x character(len=*) :: err_msg ! message d''erreur à afficher ! output real :: borne parameter (borne=1e19) integer :: iso_verif_noNaN_nostop if ((x>-borne).and.(xerrmax) then if (abs((a-b)/max(max(abs(b),abs(a)),1e-18)) & >errmaxrel) then write(*,*) 'erreur detectee par iso_verif_egalite:' write(*,*) err_msg write(*,*) 'a=',a write(*,*) 'b=',b iso_verif_egalite_nostop=1 endif endif return end function iso_verif_egalite_nostop function iso_verif_aberrant_nostop & (x,iso,q,err_msg) USE infotrac, ONLY: isoName, getKey IMPLICIT NONE ! input: real :: x,q integer :: iso ! 2=HDO, 1=O18 character(len=*) :: err_msg ! message d''erreur à afficher ! locals real :: qmin,deltaD real :: deltaDmax,deltaDmin,tnat parameter (qmin=1e-11) parameter (deltaDmax=200.0,deltaDmin=-999.9) ! output integer :: iso_verif_aberrant_nostop iso_verif_aberrant_nostop=0 ! verifier que HDO est raisonable if (q>qmin) then IF(getKey('tnat', tnat, isoName(iso))) THEN err_msg = 'Missing isotopic parameter "tnat"' iso_verif_aberrant_nostop=1 RETURN END IF deltaD=(x/q/tnat-1)*1000 if ((deltaD>deltaDmax).or.(deltaD