SUBROUTINE papillon(vcov,ucov,teta,q,nq,p)
  IMPLICIT NONE
  
!=======================================================================
!
!   Auteur:  G.Krinner GK110100
!   -------
!
!   objet:
!   ------
!
!   plein plein plein de beaux papillons en toutes les couleurs !!!! 
!
!=======================================================================
!-----------------------------------------------------------------------
!   Declarations:
!   -------------

#include "dimensions.h"
#include "paramet.h"

!   Arguments:
!   ----------
  
  INTEGER nq
  REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm),teta(ip1jmp1,llm)
  REAL q(ip1jmp1,llm,nq)
  REAL p(ip1jmp1)
  
!   Variables locales:
  INTEGER i,l,iq
  REAL, PARAMETER :: eps=1.e-5
  INTEGER ie
  REAL valmod,valor
  REAL log10
  
!-----------------------------------------------------------------------
  
  log10 = log(10.)
  
  PRINT *,'ATTENTION: PAPILLONS ',eps
  
! les vitesses
! vcov
  DO l = 1,llm
     DO i = 1,ip1jm
        valor = vcov(i,l)
        IF (valor.NE.0.) THEN
           ie = NINT(log(abs(valor))/log10)
           valmod = float(nint(abs(valor)/(10.**ie)/eps))*eps*(10.**ie)
           vcov(i,l) = valmod*sign(-1.,valor)
        ENDIF
     ENDDO
  ENDDO
! ucov
  DO l = 1,llm
     DO i = 1,ip1jmp1
        valor = ucov(i,l)
        IF (valor.NE.0.) THEN
           ie = NINT(log(abs(valor))/log10)
           valmod = float(nint(abs(valor)/(10.**ie)/eps))*eps*(10.**ie)
           ucov(i,l) = valmod*sign(-1.,valor)
        ENDIF
     ENDDO
  ENDDO
! teta 
  DO l = 1,llm
     DO i = 1,ip1jmp1
        valor = teta(i,l)
        IF (valor.NE.0.) THEN
           ie = NINT(log(abs(valor))/log10)
           valmod = float(nint(abs(valor)/(10.**ie)/eps))*eps*(10.**ie)
           teta(i,l) = valmod*sign(-1.,valor)
        ENDIF
     ENDDO
  ENDDO
! q
  DO iq = 1,nq
     DO l = 1,llm
        DO i = 1,ip1jmp1
           valor = q(i,l,iq)
           IF (valor.NE.0.) THEN
              ie = NINT(log(abs(valor))/log10)
              valmod = float(nint(abs(valor)/(10.**ie)/eps))*eps*(10.**ie)
              q(i,l,iq) = valmod*sign(-1.,valor)
           ENDIF
        ENDDO
     ENDDO
  ENDDO
! p
  DO i = 1,ip1jmp1
     valor = p(i)
     IF (valor.NE.0.) THEN
        ie = NINT(log(abs(valor))/log10)
        valmod = float(nint(abs(valor)/(10.**ie)/eps))*eps*(10.**ie)
        p(i) = valmod*sign(-1.,valor)
     ENDIF
  ENDDO
  
  RETURN
END SUBROUTINE papillon
