* fichier :  dcov2.dgibi
'OPTI' 'DIME' 2 'ELEM' 'QUA4' ;
*
DX  = 2.D0  ;
NX = 1 ;
NY = 1 ;
*
PBG = 0.D0 0.D0  ;
PBD = DX   0.D0  ;
PHG = 0.D0 DX    ;
PHD = DX   DX    ;
*
LB = PBG 'DROI' NX PBD ;
LH = PHG 'DROI' NX PHD ;
*
CARRE = LB 'REGLER' NY LH  ;
CARREP = 'CHAN' CARRE POI1  ;
*
ZSIG = 0.5D0 ;
ZL1 = 3.D0  ;
ZL2 = 12.D0 ;
ANGL = 30.D0 ;
*
NN  =  'NBNO' CARRE      ;
NN1 = ('NBNO' CARRE) - 1 ;
NN2 = ('NBNO' CARRE) - 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' CARREP 1 'SCAL' PHI.I ;
  I = I + 1 ;
'FIN' BLOC ;
*
*
*
MMEIC = 'DCOV' CARRE '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' CARREP I)) ;
  YYEIC.I = 'MANU' 'CHPO' ('POIN' CARREP 1) 1 'SCAL' ('PROG' YYEICI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYEICI = 'MAXI' ('REDU' YYEICT.J ('POIN' CARREP I)) ;
    YYEICI = 'MANU' 'CHPO' ('POIN' CARREP 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' CARREP I) ;
  YYI = 'COOR' 2 ('POIN' CARREP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' CARREP J) ;
    YYJ = 'COOR' 2 ('POIN' CARREP J) ;
    DXIJ = XXI - XXJ ;
    DYIJ = YYI - YYJ ;
    RRIJ = ((DXIJ*DXIJ) + (DYIJ * DYIJ)) ** 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' CARRE 'EXPO' 'SIGMA' ZSIG 'LAMBDA1' ZL1 'LAMBDA2' ZL2 ;
*
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' CARREP I)) ;
  YYEAC.I = 'MANU' 'CHPO' ('POIN' CARREP 1) 1 'SCAL' ('PROG' YYEACI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYEACI = 'MAXI' ('REDU' YYEACT.J ('POIN' CARREP I)) ;
    YYEACI = 'MANU' 'CHPO' ('POIN' CARREP 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' CARREP I) ;
  YYI = 'COOR' 2 ('POIN' CARREP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' CARREP J) ;
    YYJ = 'COOR' 2 ('POIN' CARREP J) ;
    DXIJ2 = ((XXI - XXJ) / ZL1) ** 2 ;
    DYIJ2 = ((YYI - YYJ) / ZL2) ** 2 ;
    RRIJ = (DXIJ2 + DYIJ2) ** 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' CARRE 'EXPO' 'SIGMA' ZSIG 'LAMBDA1' ZL1 'LAMBDA2' ZL2
                               'DIRECTION' (('COS' ANGL) ('SIN' ANGL)) ;
*
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' CARREP I)) ;
  YYEDC.I = 'MANU' 'CHPO' ('POIN' CARREP 1) 1 'SCAL' ('PROG' YYEDCI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYEDCI = 'MAXI' ('REDU' YYEDCT.J ('POIN' CARREP I)) ;
    YYEDCI = 'MANU' 'CHPO' ('POIN' CARREP 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' CARREP I) ;
  YYI = 'COOR' 2 ('POIN' CARREP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' CARREP J) ;
    YYJ = 'COOR' 2 ('POIN' CARREP J) ;
    DXIJ2 = 
          ((((XXI - XXJ) * ('COS' ANGL)) + ((YYI - YYJ) * ('SIN' ANGL)))
                                                           / ZL1) ** 2 ;
    DYIJ2 =
          ((((XXI - XXJ) * ('SIN' ANGL)) - ((YYI - YYJ) * ('COS' ANGL)))
                                                           / ZL2) ** 2 ;
    RRIJ = (DXIJ2 + DYIJ2) ** 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' CARRE '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' CARREP I)) ;
  YYGIC.I = 'MANU' 'CHPO' ('POIN' CARREP 1) 1 'SCAL' ('PROG' YYGICI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYGICI = 'MAXI' ('REDU' YYGICT.J ('POIN' CARREP I)) ;
    YYGICI = 'MANU' 'CHPO' ('POIN' CARREP 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' CARREP I) ;
  YYI = 'COOR' 2 ('POIN' CARREP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' CARREP J) ;
    YYJ = 'COOR' 2 ('POIN' CARREP J) ;
    DXIJ = XXI - XXJ ;
    DYIJ = YYI - YYJ ;
    RRIJ = (DXIJ*DXIJ) + (DYIJ * DYIJ) ;
    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' CARRE 'GAUS' 'SIGMA' ZSIG 'LAMBDA1' ZL1 'LAMBDA2' ZL2 ;
*
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' CARREP I)) ;
  YYGAC.I = 'MANU' 'CHPO' ('POIN' CARREP 1) 1 'SCAL' ('PROG' YYGACI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYGACI = 'MAXI' ('REDU' YYGACT.J ('POIN' CARREP I)) ;
    YYGACI = 'MANU' 'CHPO' ('POIN' CARREP 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' CARREP I) ;
  YYI = 'COOR' 2 ('POIN' CARREP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' CARREP J) ;
    YYJ = 'COOR' 2 ('POIN' CARREP J) ;
    DXIJ2 = ((XXI - XXJ) / ZL1) ** 2 ;
    DYIJ2 = ((YYI - YYJ) / ZL2) ** 2 ;
    RRIJ = DXIJ2 + DYIJ2 ;
    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' CARRE 'GAUS' 'SIGMA' ZSIG 'LAMBDA1' ZL1 'LAMBDA2' ZL2
                               'DIRECTION' (('COS' ANGL) ('SIN' ANGL)) ;
*
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' CARREP I)) ;
  YYGDC.I = 'MANU' 'CHPO' ('POIN' CARREP 1) 1 'SCAL' ('PROG' YYGDCI)
                                                    'NATURE' 'DISCRET' ;
  J = 2 ;
  'REPE' BLOCJ NN1 ;
    YYGDCI = 'MAXI' ('REDU' YYGDCT.J ('POIN' CARREP I)) ;
    YYGDCI = 'MANU' 'CHPO' ('POIN' CARREP 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' CARREP I) ;
  YYI = 'COOR' 2 ('POIN' CARREP I) ;
  J = 1 ;
  'REPE' BLOCJ NN ;
    XXJ = 'COOR' 1 ('POIN' CARREP J) ;
    YYJ = 'COOR' 2 ('POIN' CARREP J) ;
    DXIJ2 = 
          ((((XXI - XXJ) * ('COS' ANGL)) + ((YYI - YYJ) * ('SIN' ANGL)))
                                                           / ZL1) ** 2 ;
    DYIJ2 =
          ((((XXI - XXJ) * ('SIN' ANGL)) - ((YYI - YYJ) * ('COS' ANGL)))
                                                           / ZL2) ** 2 ;
    RRIJ = DXIJ2 + DYIJ2 ;
    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' ;
 

 

