* fichier :  dcov3.dgibi
'OPTI' 'DIME' 3 'ELEM' 'CUB8' ;
*
DX  = 2.D0  ;
NX = 1 ;
NY = 1 ;
NZ = 1 ;
*
PBG = 0.D0 0.D0 0.D0 ;
PBD = DX   0.D0 0.D0 ;
PHG = 0.D0 DX   0.D0 ;
PHD = DX   DX   0.D0 ;
*
LB = PBG 'DROI' NX PBD ;
LH = PHG 'DROI' NX PHD ;
*
CARREB = LB 'REGLER' NY LH  ;
CARREH = CARREB 'PLUS' (0.D0 0.D0 DX) ;
*
PAVE = CARREB 'VOLU' NZ CARREH ;
PAVEP = 'CHAN' PAVE POI1  ;
*
ZSIG = 0.5D0 ;
ZL1 = 3.D0  ;
ZL2 = 12.D0 ;
ZL3 = 18.D0 ;
ANGL1 = 30.D0 ;
ANGL2 = 60.D0 ;
XE1 = ('COS' ANGL1) * ('COS' ANGL2) ;
YE1 = ('SIN' ANGL1) * ('COS' ANGL2) ;
ZE1 =                 ('SIN' ANGL2) ;
VE1 = XE1 YE1 ZE1 ;
XE2 = ('SIN' (-1.D0 * ANGL1)) ;
YE2 = ('COS' ANGL1) ;
ZE2 = 0.D0 ;
VE2 = XE2 YE2 ZE2 ;
XE3 = (YE1 * ZE2) - (YE2 * ZE1) ;
YE3 = (ZE1 * XE2) - (ZE2 * XE1) ;
ZE3 = (XE1 * YE2) - (XE2 * YE1) ;
*
NN  =  'NBNO' PAVE      ;
NN1 = ('NBNO' PAVE) - 1 ;
NN2 = ('NBNO' PAVE) - 2 ;
*
PHI = TABLE ;
PHI.1 = 'PROG' 1.D0 NN1*0.D0 ;
I = 1 ;
'REPE' BLOC NN2 ;
  PHI.(I + 1) = 'PROG' I*0.D0 1.D0 (NN1 - I)*0.D0 ;
  I = I + 1 ;
'FIN' BLOC ;
PHI.NN = 'PROG' NN1*0.D0 1.D0 ;
*
PSI = TABLE ;
I = 1 ;
'REPE' BLOC NN ;
  PSI.I = 'MANU' 'CHPO' PAVEP 1 'SCAL' PHI.I ;
  I = I + 1 ;
'FIN' BLOC ;
*
*
*
MMEIC = 'DCOV' PAVE 'EXPO' 'SIGMA' ZSIG 'LAMBDA' ZL1 ;
*
YYEICT = TABLE ;
I = 1 ;
'REPE' BLOC NN ;
  YYEICT.I = MMEIC * (PSI.I) ;
  I = I + 1 ;
'FIN' BLOC ;
*
YYEIC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  YYEICI = 'MAXI' ('REDU' YYEICT.1 ('POIN' PAVEP I)) ;
  YYEIC.I = 'MANU' 'CHPO' ('POIN' PAVEP 1) 1 'SCAL' ('PROG' YYEICI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYEICI = 'MAXI' ('REDU' YYEICT.J ('POIN' PAVEP I)) ;
    YYEICI = 'MANU' 'CHPO' ('POIN' PAVEP J) 1 'SCAL' ('PROG' YYEICI)
                                                    'NATURE' 'DISCRET' ;
    YYEIC.I = YYEIC.I 'ET' YYEICI ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCEIC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCEIC.I = TABLE ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    CCEIC.I.J = 'MAXI' ('RESU' (YYEIC.I * YYEIC.J)) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCEIT = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCEIT.I = TABLE ;
  XXI = 'COOR' 1 ('POIN' PAVEP I) ;
  YYI = 'COOR' 2 ('POIN' PAVEP I) ;
  ZZI = 'COOR' 3 ('POIN' PAVEP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' PAVEP J) ;
    YYJ = 'COOR' 2 ('POIN' PAVEP J) ;
    ZZJ = 'COOR' 3 ('POIN' PAVEP J) ;
    DXIJ = XXI - XXJ ;
    DYIJ = YYI - YYJ ;
    DZIJ = ZZI - ZZJ ;
    RRIJ = ((DXIJ*DXIJ) + (DYIJ * DYIJ) + (DZIJ * DZIJ)) ** 0.5D0 ;
    CCEIT.I.J = ZSIG * ZSIG * ('EXP' (-1.D0 * RRIJ / ZL1)) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
I = 1 ;
'REPE' BLOCI NN ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    ECART = 'ABS' ((CCEIC.I.J - CCEIT.I.J) / CCEIT.I.J) ;
    'SI' (ECART > 1.D-12) ;
      'ERRE' 5 ;
    'FINSI' ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
MMEAC = 'DCOV' PAVE 'EXPO' 'SIGMA' ZSIG 
                             'LAMBDA1' ZL1 'LAMBDA2' ZL2 'LAMBDA3' ZL3 ;
*
YYEACT = TABLE ;
I = 1 ;
'REPE' BLOC NN ;
  YYEACT.I = MMEAC * (PSI.I) ;
  I = I + 1 ;
'FIN' BLOC ;
*
YYEAC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  YYEACI = 'MAXI' ('REDU' YYEACT.1 ('POIN' PAVEP I)) ;
  YYEAC.I = 'MANU' 'CHPO' ('POIN' PAVEP 1) 1 'SCAL' ('PROG' YYEACI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYEACI = 'MAXI' ('REDU' YYEACT.J ('POIN' PAVEP I)) ;
    YYEACI = 'MANU' 'CHPO' ('POIN' PAVEP J) 1 'SCAL' ('PROG' YYEACI)
                                                    'NATURE' 'DISCRET' ;
    YYEAC.I = YYEAC.I 'ET' YYEACI ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCEAC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCEAC.I = TABLE ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    CCEAC.I.J = 'MAXI' ('RESU' (YYEAC.I * YYEAC.J)) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCEAT = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCEAT.I = TABLE ;
  XXI = 'COOR' 1 ('POIN' PAVEP I) ;
  YYI = 'COOR' 2 ('POIN' PAVEP I) ;
  ZZI = 'COOR' 3 ('POIN' PAVEP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' PAVEP J) ;
    YYJ = 'COOR' 2 ('POIN' PAVEP J) ;
    ZZJ = 'COOR' 3 ('POIN' PAVEP J) ;
    DXIJ2 = ((XXI - XXJ) / ZL1) ** 2 ;
    DYIJ2 = ((YYI - YYJ) / ZL2) ** 2 ;
    DZIJ2 = ((ZZI - ZZJ) / ZL3) ** 2 ;
    RRIJ = (DXIJ2 + DYIJ2 + DZIJ2) ** 0.5D0 ;
    CCEAT.I.J = ZSIG * ZSIG * ('EXP' (-1.D0 * RRIJ )) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
I = 1 ;
'REPE' BLOCI NN ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    ECART = 'ABS' ((CCEAC.I.J - CCEAT.I.J) / CCEAT.I.J) ;
    'SI' (ECART > 1.D-12) ;
      'ERRE' 5 ;
    'FINSI' ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
MMEDC = 'DCOV' PAVE 'EXPO' 'SIGMA' ZSIG 
        'LAMBDA1' ZL1 'LAMBDA2' ZL2 'LAMBDA3' ZL3 'DIRECTION' VE1 VE2 ;
*
YYEDCT = TABLE ;
I = 1 ;
'REPE' BLOC NN ;
  YYEDCT.I = MMEDC * (PSI.I) ;
  I = I + 1 ;
'FIN' BLOC ;
*
YYEDC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  YYEDCI = 'MAXI' ('REDU' YYEDCT.1 ('POIN' PAVEP I)) ;
  YYEDC.I = 'MANU' 'CHPO' ('POIN' PAVEP 1) 1 'SCAL' ('PROG' YYEDCI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYEDCI = 'MAXI' ('REDU' YYEDCT.J ('POIN' PAVEP I)) ;
    YYEDCI = 'MANU' 'CHPO' ('POIN' PAVEP J) 1 'SCAL' ('PROG' YYEDCI)
                                                    'NATURE' 'DISCRET' ;
    YYEDC.I = YYEDC.I 'ET' YYEDCI ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCEDC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCEDC.I = TABLE ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    CCEDC.I.J = 'MAXI' ('RESU' (YYEDC.I * YYEDC.J)) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCEDT = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCEDT.I = TABLE ;
  XXI = 'COOR' 1 ('POIN' PAVEP I) ;
  YYI = 'COOR' 2 ('POIN' PAVEP I) ;
  ZZI = 'COOR' 3 ('POIN' PAVEP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' PAVEP J) ;
    YYJ = 'COOR' 2 ('POIN' PAVEP J) ;
    ZZJ = 'COOR' 3 ('POIN' PAVEP J) ;
    DXIJ2 = 
      (((XXI - XXJ) * XE1) + ((YYI - YYJ) * YE1) + ((ZZI - ZZJ) * ZE1)
                                                           / ZL1) ** 2 ;
    DYIJ2 =
      (((XXI - XXJ) * XE2) + ((YYI - YYJ) * YE2) + ((ZZI - ZZJ) * ZE2)
                                                           / ZL2) ** 2 ;
    DZIJ2 =
      (((XXI - XXJ) * XE3) + ((YYI - YYJ) * YE3) + ((ZZI - ZZJ) * ZE3)
                                                           / ZL3) ** 2 ;
    RRIJ = (DXIJ2 + DYIJ2 + DZIJ2) ** 0.5D0 ;
    CCEDT.I.J = ZSIG * ZSIG * ('EXP' (-1.D0 * RRIJ )) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
I = 1 ;
'REPE' BLOCI NN ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    ECART = 'ABS' ((CCEDC.I.J - CCEDT.I.J) / CCEDT.I.J) ;
    'SI' (ECART > 1.D-12) ;
      'ERRE' 5 ;
    'FINSI' ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
*
MMGIC = 'DCOV' PAVE 'GAUS' 'SIGMA' ZSIG 'LAMBDA' ZL1 ;
*
YYGICT = TABLE ;
I = 1 ;
'REPE' BLOC NN ;
  YYGICT.I = MMGIC * (PSI.I) ;
  I = I + 1 ;
'FIN' BLOC ;
*
YYGIC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  YYGICI = 'MAXI' ('REDU' YYGICT.1 ('POIN' PAVEP I)) ;
  YYGIC.I = 'MANU' 'CHPO' ('POIN' PAVEP 1) 1 'SCAL' ('PROG' YYGICI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYGICI = 'MAXI' ('REDU' YYGICT.J ('POIN' PAVEP I)) ;
    YYGICI = 'MANU' 'CHPO' ('POIN' PAVEP J) 1 'SCAL' ('PROG' YYGICI)
                                                    'NATURE' 'DISCRET' ;
    YYGIC.I = YYGIC.I 'ET' YYGICI ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCGIC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCGIC.I = TABLE ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    CCGIC.I.J = 'MAXI' ('RESU' (YYGIC.I * YYGIC.J)) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCGIT = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCGIT.I = TABLE ;
  XXI = 'COOR' 1 ('POIN' PAVEP I) ;
  YYI = 'COOR' 2 ('POIN' PAVEP I) ;
  ZZI = 'COOR' 3 ('POIN' PAVEP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' PAVEP J) ;
    YYJ = 'COOR' 2 ('POIN' PAVEP J) ;
    ZZJ = 'COOR' 3 ('POIN' PAVEP J) ;
    DXIJ = XXI - XXJ ;
    DYIJ = YYI - YYJ ;
    DZIJ = ZZI - ZZJ ;
    RRIJ = (DXIJ*DXIJ) + (DYIJ * DYIJ) + (DZIJ * DZIJ) ;
    CCGIT.I.J = ZSIG * ZSIG * ('EXP' (-1.D0 * RRIJ / ZL1)) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
I = 1 ;
'REPE' BLOCI NN ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    ECART = 'ABS' ((CCGIC.I.J - CCGIT.I.J) / CCGIT.I.J) ;
    'SI' (ECART > 1.D-12) ;
      'ERRE' 5 ;
    'FINSI' ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
MMGAC = 'DCOV' PAVE 'GAUS' 'SIGMA' ZSIG 
                              'LAMBDA1' ZL1 'LAMBDA2' ZL2'LAMBDA3' ZL3 ;
*
YYGACT = TABLE ;
I = 1 ;
'REPE' BLOC NN ;
  YYGACT.I = MMGAC * (PSI.I) ;
  I = I + 1 ;
'FIN' BLOC ;
*
YYGAC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  YYGACI = 'MAXI' ('REDU' YYGACT.1 ('POIN' PAVEP I)) ;
  YYGAC.I = 'MANU' 'CHPO' ('POIN' PAVEP 1) 1 'SCAL' ('PROG' YYGACI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYGACI = 'MAXI' ('REDU' YYGACT.J ('POIN' PAVEP I)) ;
    YYGACI = 'MANU' 'CHPO' ('POIN' PAVEP J) 1 'SCAL' ('PROG' YYGACI)
                                                    'NATURE' 'DISCRET' ;
    YYGAC.I = YYGAC.I 'ET' YYGACI ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCGAC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCGAC.I = TABLE ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    CCGAC.I.J = 'MAXI' ('RESU' (YYGAC.I * YYGAC.J)) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCGAT = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCGAT.I = TABLE ;
  XXI = 'COOR' 1 ('POIN' PAVEP I) ;
  YYI = 'COOR' 2 ('POIN' PAVEP I) ;
  ZZI = 'COOR' 3 ('POIN' PAVEP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' PAVEP J) ;
    YYJ = 'COOR' 2 ('POIN' PAVEP J) ;
    ZZJ = 'COOR' 3 ('POIN' PAVEP J) ;
    DXIJ2 = ((XXI - XXJ) / ZL1) ** 2 ;
    DYIJ2 = ((YYI - YYJ) / ZL2) ** 2 ;
    DZIJ2 = ((ZZI - ZZJ) / ZL3) ** 2 ;
    RRIJ = DXIJ2 + DYIJ2 + DZIJ2 ;
    CCGAT.I.J = ZSIG * ZSIG * ('EXP' (-1.D0 * RRIJ )) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
I = 1 ;
'REPE' BLOCI NN ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    ECART = 'ABS' ((CCGAC.I.J - CCGAT.I.J) / CCGAT.I.J) ;
    'SI' (ECART > 1.D-12) ;
      'ERRE' 5 ;
    'FINSI' ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
MMGDC = 'DCOV' PAVE 'GAUS' 'SIGMA' ZSIG 
        'LAMBDA1' ZL1 'LAMBDA2' ZL2 'LAMBDA3' ZL3 'DIRECTION' VE1 VE2 ;
*
YYGDCT = TABLE ;
I = 1 ;
'REPE' BLOC NN ;
  YYGDCT.I = MMGDC * (PSI.I) ;
  I = I + 1 ;
'FIN' BLOC ;
*
YYGDC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  YYGDCI = 'MAXI' ('REDU' YYGDCT.1 ('POIN' PAVEP I)) ;
  YYGDC.I = 'MANU' 'CHPO' ('POIN' PAVEP 1) 1 'SCAL' ('PROG' YYGDCI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYGDCI = 'MAXI' ('REDU' YYGDCT.J ('POIN' PAVEP I)) ;
    YYGDCI = 'MANU' 'CHPO' ('POIN' PAVEP J) 1 'SCAL' ('PROG' YYGDCI)
                                                    'NATURE' 'DISCRET' ;
    YYGDC.I = YYGDC.I 'ET' YYGDCI ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCGDC = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCGDC.I = TABLE ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    CCGDC.I.J = 'MAXI' ('RESU' (YYGDC.I * YYGDC.J)) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
CCGDT = TABLE ;
I = 1 ;
'REPE' BLOCI NN ;
  CCGDT.I = TABLE ;
  XXI = 'COOR' 1 ('POIN' PAVEP I) ;
  YYI = 'COOR' 2 ('POIN' PAVEP I) ;
  ZZI = 'COOR' 3 ('POIN' PAVEP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' PAVEP J) ;
    YYJ = 'COOR' 2 ('POIN' PAVEP J) ;
    ZZJ = 'COOR' 3 ('POIN' PAVEP J) ;
    DXIJ2 = 
      (((XXI - XXJ) * XE1) + ((YYI - YYJ) * YE1) + ((ZZI - ZZJ) * ZE1)
                                                           / ZL1) ** 2 ;
    DYIJ2 =
      (((XXI - XXJ) * XE2) + ((YYI - YYJ) * YE2) + ((ZZI - ZZJ) * ZE2)
                                                           / ZL2) ** 2 ;
    DZIJ2 =
      (((XXI - XXJ) * XE3) + ((YYI - YYJ) * YE3) + ((ZZI - ZZJ) * ZE3)
                                                           / ZL3) ** 2 ;
    RRIJ = DXIJ2 + DYIJ2 + DZIJ2 ;
    CCGDT.I.J = ZSIG * ZSIG * ('EXP' (-1.D0 * RRIJ )) ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
I = 1 ;
'REPE' BLOCI NN ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    ECART = 'ABS' ((CCGDC.I.J - CCGDT.I.J) / CCGDT.I.J) ;
    'SI' (ECART > 1.D-12) ;
      'ERRE' 5 ;
    'FINSI' ;
    J = J + 1 ;
  'FIN' BLOCJ ;
  I = I + 1 ;
'FIN' BLOCI ;
*
'ERRE' 0 ;
*
'FIN' ;
 

 

