{***	ELM-MODEL	***}
  procedure ELM;
   var
    KPs: integer;									
    Liste: integer;									
    KPNr: integer;								
    VAIntens: real;
    count: integer;
    PeriReizKomm: real;
    EinstKomm: real;
    ArguQualiKomm: real;
    derBeeinflusser: CIndividuum;
    lokWerBeeinflusst: integer;
   function FctVerarbMot: real;	{* Box 1 *}
   begin
    FctVerarbMot := Betroff * (1 + (0.5 - ((abs(Betroff - 5) / 10))));
   end;
   function FctVerarbFkt: real;	{* Box 2 *}
   begin
    FctVerarbFkt := ArguQuali * (1 - (Ablenkung / 10));
   end;
   function FctVAIntens: real;		{* Box 3 *}
    var
     intrVAI, Hilfsvar: real;
   begin
    intrVAI := sqrt(VerarbMot * VerarbFkt);
    Hilfsvar := intrVAI + (((PeriReizKomm - 5) / 2) * (1 - (abs(intrVAI - 5) / 5)));
    PoolVAIntensELM := Hilfsvar + PoolVAIntensELM;
    FctVAIntens := Hilfsvar;
   end;
   function FctEinst: real;		{* Box 7 *}
    var
     EinstFaktor: real;
    function Fctperi: real;		{* Box 5 *}
    begin
     Fctperi := ((PeriReizKomm - 5) / 1.65);
    end;
    function Fctzent: real;		{* Box 6 *}
    begin
     if ((Voreingenom > 5) and (EinstKomm < 5)) or ((Voreingenom < 5) and (EinstKomm > 5)) then
      Fctzent := ((ArguQualiKomm - 5) / 2.5) + ((((5 - ArguQualiKomm) / 5) - 2) * (sqr((abs(Voreingenom - 5)) / 5)))
     else
      Fctzent := ((ArguQualiKomm - 5) / 2.5) + ((((5 - ArguQualiKomm) / 5) + 2) * (sqr((abs(Voreingenom - 5)) / 5)));
    end;
   begin
    EinstFaktor := (Fctzent * (VAIntens / 10)) + (Fctperi * (1 - (VAIntens / 10)));
    FctEinst := VarCheck(Einst + (EinstFaktor * ((EinstKomm - Einst) / 3)));
   end;
   function FctArguQualiNeuELM: real;	{* Box 8 *}
    var
     AQzent, AQperi, AQEinfluss: real;
   begin
    if (ArguQualiKomm > ArguQuali) then
     AQzent := ((ArguQualiKomm - ArguQuali) / 10)
    else
     AQzent := 0;
    AQperi := ((ArguQualiKomm - ArguQuali) / 10);
    AQEinfluss := (AQzent * (VAIntens / 10)) + (AQperi * (1 - (VAIntens / 10)));
    FctArguQualiNeuELM := VarCheck(ArguQuali + AQEinfluss);
   end;
  begin							{** BEGIN ELM-Mainproc **}
   if ID <> 1 then
    begin
     PoolVAIntensELM := 0;
     count := 0;
     Voreingenom := (WertH + Einst) / 2;
     for Liste := Freunde to Nachbarn do			
      begin
       KPs := (GetAnzKPs(Liste));
       if not ListIsEmpty(Liste) then
       for KPNr := 1 to KPs do					
       begin
       count := count + 1;
       theKP := GetKP(Liste, KPNr);			
       PeriReizKomm := theKP.GiveOutValue(6);
       EinstKomm := theKP.GiveOutValue(1);
       ArguQualiKomm := theKP.GiveOutValue(2);
       VerarbFkt := FctVerarbFkt;
       VerarbMot := FctVerarbMot;
       VAIntens := FctVAIntens;
       Einst := FctEinst;
       ArguQuali := FctArguQualiNeuELM;
       end;	 {* for KPNr ... *}
      end;	{* for Liste ... *}
     theKP := nil;
     if count <> 0 then
      PoolVAIntensELM := PoolVAIntensELM / count;
    end;	{* if ID ... *)
  end;
{END	ELM-Mainproc}