/[lmdze]/trunk/Sources/misc/coefpoly.f
ViewVC logotype

Diff of /trunk/Sources/misc/coefpoly.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/dyn3d/coefpoly.f revision 71 by guez, Mon Jul 8 18:12:18 2013 UTC trunk/Sources/misc/coefpoly.f revision 149 by guez, Thu Jun 18 12:23:44 2015 UTC
# Line 1  Line 1 
1  !  module coefpoly_m
 ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/coefpoly.F,v 1.1.1.1 2004/05/19 12:53:05 lmdzadmin Exp $  
 !  
       SUBROUTINE coefpoly ( Xf1, Xf2, Xprim1, Xprim2, xtild1,xtild2 ,  
      ,                                          a0,a1,a2,a3         )  
       IMPLICIT NONE  
 c  
 c   ...  Auteur :   P. Le Van  ...  
 c  
 c  
 c    Calcul des coefficients a0, a1, a2, a3 du polynome de degre 3 qui  
 c      satisfait aux 4 equations  suivantes :  
   
 c    a0 + a1*xtild1 + a2*xtild1*xtild1 + a3*xtild1*xtild1*xtild1 = Xf1  
 c    a0 + a1*xtild2 + a2*xtild2*xtild2 + a3*xtild2*xtild2*xtild2 = Xf2  
 c               a1  +     2.*a2*xtild1 +     3.*a3*xtild1*xtild1 = Xprim1  
 c               a1  +     2.*a2*xtild2 +     3.*a3*xtild2*xtild2 = Xprim2  
   
 c  On en revient a resoudre un systeme de 4 equat.a 4 inconnues a0,a1,a2,a3  
   
       DOUBLE PRECISION Xf1, Xf2,Xprim1,Xprim2, xtild1,xtild2, xi  
       DOUBLE PRECISION Xfout, Xprim  
       DOUBLE PRECISION a1,a2,a3,a0, xtil1car, xtil2car,derr,x1x2car  
   
       xtil1car = xtild1 * xtild1  
       xtil2car = xtild2 * xtild2  
   
       derr= 2. *(Xf2-Xf1)/( xtild1-xtild2)  
   
       x1x2car = ( xtild1-xtild2)*(xtild1-xtild2)  
   
       a3 = (derr + Xprim1+Xprim2 )/x1x2car  
       a2     = ( Xprim1 - Xprim2 + 3.* a3 * ( xtil2car-xtil1car ) )    /  
      /           (  2.* ( xtild1 - xtild2 )  )  
2    
3        a1     = Xprim1 -3.* a3 * xtil1car     -2.* a2 * xtild1    IMPLICIT NONE
       a0     =  Xf1 - a3 * xtild1* xtil1car -a2 * xtil1car - a1 *xtild1  
4    
5        RETURN    DOUBLE PRECISION a0, a1, a2, a3
6        END  
7    contains
8    
9      SUBROUTINE coefpoly(y1, y2, yp1, yp2, x1, x2)
10    
11        ! From LMDZ4/libf/dyn3d/coefpoly.F, version 1.1.1.1 2004/05/19 12:53:05
12    
13        ! Author: P. Le Van
14    
15        ! Calcul des coefficients a0, a1, a2, a3 du polynôme de degré 3
16        ! qui passe par les points (x1, Y1) et (x2, Y2) avec les
17        ! dérivées yp1 et yp2. Système linéaire de 4 équations à 4
18        ! inconnues :
19    
20        ! a0 + a1 * x1 + a2 * x1**2 + a3 * x1**3 = Y1
21        ! a0 + a1 * x2 + a2 * x2**2 + a3 * x2**3 = Y2
22        ! a1 + 2 * a2 * x1 + 3 * a3 * x1**2 = Yp1
23        ! a1 + 2 * a2 * x2 + 3 * a3 * x2**2 = Yp2
24    
25        DOUBLE PRECISION, intent(in):: y1, y2, yp1, yp2, x1, x2
26    
27        ! Local:
28        DOUBLE PRECISION x1car, x2car
29    
30        !------------------------------------------------------------
31    
32        x1car = x1 * x1
33        x2car = x2 * x2
34    
35        a3 = (2d0 * (y2-y1)/(x1-x2)+yp1+yp2)/((x1-x2) * (x1-x2))
36        a2 = (yp1-yp2+3d0 * a3 * (x2car-x1car))/(2d0 * (x1-x2))
37    
38        a1 = yp1 - 3d0 * a3 * x1car - 2d0 * a2 * x1
39        a0 = y1 - a3 * x1 * x1car - a2 * x1car - a1 * x1
40    
41      END SUBROUTINE coefpoly
42    
43    end module coefpoly_m

Legend:
Removed from v.71  
changed lines
  Added in v.149

  ViewVC Help
Powered by ViewVC 1.1.21