7   SUBROUTINE fxhyp(xprimm025, rlonv, xprimv, rlonu, xprimu, xprimp025)
 
   25     include 
"dimensions.h" 
   31     REAL, 
intent(out):: xprimm025(:), rlonv(:), xprimv(:) 
 
   32     real, 
intent(out):: rlonu(:), xprimu(:), xprimp025(:) 
 
   35     real rlonm025(
iim + 1), rlonp025(
iim + 1)
 
   38     REAL(K8) xtild(0:2 * 
nmax)
 
   39     REAL(K8) fhyp(
nmax:2 * 
nmax), ffdx, beta, Xprimt(0:2 * 
nmax)
 
   40     REAL(K8) Xf(0:2 * 
nmax), xxpr(2 * 
nmax)
 
   47     print *, 
"Call sequence information: fxhyp" 
   49     test_iim: 
if (
iim==1) 
then 
   52        rlonv(2)=rlonv(1)+
twopi 
   53        rlonu(2)=rlonu(1)+
twopi 
   63           xprimm025(:
iim) = step
 
   64           xprimp025(:
iim) = step
 
   69           rlonm025(:
iim) = rlonv(:
iim) - 0.25 * step
 
   70           rlonp025(:
iim) = rlonv(:
iim) + 0.25 * step
 
   71           rlonu(:
iim) = rlonv(:
iim) + 0.5 * step
 
   78              fa = 
taux * (dzoom / 2. - xtild(i))
 
   79              fb = xtild(i) * (
pi_d - xtild(i))
 
   81              IF (200. * fb < - fa) 
THEN 
   83              ELSE IF (200. * fb < fa) 
THEN 
   86                 IF (abs(fa) < 1e-13 .AND. abs(fb) < 1e-13) 
THEN 
   87                    IF (200. * fb + fa < 1e-10) 
THEN 
   89                    ELSE IF (200. * fb - fa < 1e-10) 
THEN 
   93                    fhyp(i) = tanh(fa / fb)
 
   97              IF (xtild(i) == 0.) fhyp(i) = 1.
 
   98              IF (xtild(i) == 
pi_d) fhyp(i) = -1.
 
  106              xmoy = 0.5 * (xtild(i-1) + xtild(i))
 
  107              fa = 
taux * (dzoom / 2. - xmoy)
 
  108              fb = xmoy * (
pi_d - xmoy)
 
  110              IF (200. * fb < - fa) 
THEN 
  112              ELSE IF (200. * fb < fa) 
THEN 
  115                 IF (abs(fa) < 1e-13 .AND. abs(fb) < 1e-13) 
THEN 
  116                    IF (200. * fb + fa < 1e-10) 
THEN 
  118                    ELSE IF (200. * fb - fa < 1e-10) 
THEN 
  126              IF (xmoy == 0.) fxm = 1.
 
  127              IF (xmoy == 
pi_d) fxm = -1.
 
  129              ffdx = ffdx + fxm * (xtild(i) - xtild(i-1))
 
  132           print *, 
"ffdx = ", ffdx
 
  134           print *, 
"beta = ", beta
 
  137              print *, 
'Bad choice of grossismx, taux, dzoomx.' 
  138              print *, 
'Decrease dzoomx or grossismx.' 
  149              xmoy = 0.5 * (xtild(i-1) + xtild(i))
 
  150              fa = 
taux * (dzoom / 2. - xmoy)
 
  151              fb = xmoy * (
pi_d - xmoy)
 
  153              IF (200. * fb < - fa) 
THEN 
  155              ELSE IF (200. * fb < fa) 
THEN 
  161              IF (xmoy == 0.) fxm = 1.
 
  162              IF (xmoy == 
pi_d) fxm = -1.
 
  163              xxpr(i) = beta + (
grossismx - beta) * fxm
 
  171              xf(i) = xf(i-1) + xxpr(i) * (xtild(i) - xtild(i-1))
 
  177                xprimm025(:
iim), xuv = - 0.25_k8)
 
  183                xprimp025(:
iim), xuv = 0.25_k8)
 
  184        end if test_grossismx
 
  188        IF (minval(rlonm025(:
iim)) < - 
pi - 0.1 &
 
  189             .or. maxval(rlonm025(:
iim)) > 
pi + 0.1) 
THEN 
  193              do while (rlonm025(is2) < - 
pi .and. is2 < 
iim)
 
  197              if (rlonm025(is2) < - 
pi) 
then 
  198                 print *, 
'Rlonm025 plus petit que - pi !' 
  204              do while (rlonm025(is2) > 
pi .and. is2 > 1)
 
  208              if (rlonm025(is2) > 
pi) 
then 
  209                 print *, 
'Rlonm025 plus grand que pi !' 
  220        forall (i = 1: 
iim) d_rlonv(i) = rlonv(i + 1) - rlonv(i)
 
  221        print *, 
"Minimum longitude step:", minval(d_rlonv) * 180. / 
pi, &
 
  223        print *, 
"Maximum longitude step:", maxval(d_rlonv) * 180. / 
pi, &
 
  228           IF (rlonp025(i) < rlonv(i)) 
THEN 
  229              print *, 
'rlonp025(', i, 
') = ', rlonp025(i)
 
  230              print *, 
"< rlonv(", i, 
") = ", rlonv(i)
 
  234           IF (rlonv(i) < rlonm025(i)) 
THEN  
  235              print *, 
'rlonv(', i, 
') = ', rlonv(i)
 
  236              print *, 
"< rlonm025(", i, 
") = ", rlonm025(i)
 
  240           IF (rlonp025(i) > rlonu(i)) 
THEN 
  241              print *, 
'rlonp025(', i, 
') = ', rlonp025(i)
 
  242              print *, 
"> rlonu(", i, 
") = ", rlonu(i)
 
!$Header!c!c!c include serre h!c REAL && grossismx
 
subroutine fxhyp(xprimm025, rlonv, xprimv, rlonu, xprimu, xprimp025)
 
!$Header!c!c!c include serre h!c REAL clon
 
real(k8), parameter twopi_d
 
!$Id mode_top_bound COMMON comconstr && pi
 
subroutine invert_zoom_x(xf, xtild, Xprimt, xlon, xprimm, xuv)
 
!$Header!c!c!c include serre h!c REAL dzoomx
 
!$Header!c!c!c include serre h!c REAL taux
 
c c zjulian c cym CALL iim cym klev iim
 
subroutine principal_cshift(is2, xlon, xprimm)