
<!--
//average of three air methods added 4-16-2006
function EstimateDiffusion(data,CurrentDate)
{

  var f = document.Diffusion;
  var date = new Date();
  var Ent = new Array();
  var elements = new Array();
  var condition = new Array();
  var number = new Array();

 

  var pressureATM = 1;
  var temperatureC = 15;
  var diffusion01 = 0;
  var diffusion02 = 0;
  var diffusion03 = 0;
  var diffusion04 = "";
  var diffusionW01 = 0; 
  var bpC = 0;

 
  var numberElements=16;

  for (i=0 ; i<numberElements ; i++)
  {
    elements[i] = "";
    condition[i] = "n/a";
    number[i] = 0;
  }  
  
  elements[0] = "carbon";
  elements[1] = "hydrogen";
  elements[2] = "oxygen";
  elements[3] = "nitrogen";
  elements[4] = "chlorine";
  elements[5] = "sulfur";
  elements[6] = "bromium";
  elements[7] = "fluorine";
  elements[8] = "iodine";
  elements[9] = "rings";
  elements[10] = "ring3";
  elements[11] = "ring4";
  elements[12] = "ring5";
  elements[13] = "ring6";
  elements[14] = "ring-naphthalene";
  elements[15] = "ring-anthracene";

     


  if (data=="noexample")
    {
      //gather user supplied data
      number[0] = Input(f.c.value);
      number[1] = Input(f.h.value);
      number[2] = Input(f.o.value);
      number[3] = Input(f.n.value);
      number[4] = Input(f.cl.value);
      number[5] = Input(f.s.value);
      number[6] = Input(f.br.value);
      number[7] = Input(f.fl.value);
      number[8] = Input(f.id.value);
     
      //number[10] through number[15] are used for indivudual rings
      number[10] = Input(f.r3.value);
      number[11] = Input(f.r4.value);
      number[12] = Input(f.r5.value);
      number[13] = Input(f.r6.value);
      number[14] = Input(f.rn.value);
      number[15] = Input(f.ra.value);


      temperatureC = Input(f.temperatureC.value);
      pressureATM = Input(f.pressureATM.value);
      bpC = Input(f.boilingPointC.value);

      condition[2] = f.OCondition.options[f.OCondition.selectedIndex].value;
      condition[3] = f.NCondition.options[f.NCondition.selectedIndex].value;
     


      ChemicalName = f.Chemical.value;
      if (CurrentDate==true) {ChemicalDate=ShortDate(date); f.date.value = ChemicalDate;}
      else {ChemicalDate = f.date.value;}
    
    }
  if (data=="example")
     {
       //create an example data set
     
      number[0] = 5; 
      number[1] = 12;
      number[2] = 1;
   

       temperatureC = 15;
       pressureATM = 1;
       bpC = 55.5;
       rings = 0;
       ChemicalName = "MTBE";
       ChemicalDate = ShortDate(date);
       f.Chemical.value = ChemicalName;
       f.date.value = ChemicalDate;
       f.c.value = number[0];
       f.h.value = number[1];
       f.o.value = number[2];
       f.n.value = 0
       f.cl.value = 0;
       f.s.value = 0;
       f.br.value = 0;
       f.fl.value = 0;
       f.id.value = 0;
       f.r3.value = 0;
       f.r4.value = 0;
       f.r5.value = 0;
       f.r6.value = 0;
       f.rn.value = 0;
       f.ra.value = 0;

       f.pressureATM.value = pressureATM;
       f.temperatureC.value = temperatureC;
       f.boilingPointC.value = bpC;
 
       f.OCondition.selectedIndex = 3;
       f.NCondition.selectedIndex = 0;

       condition[2] = f.OCondition.options[f.OCondition.selectedIndex].value;
       condition[3] = f.NCondition.options[f.NCondition.selectedIndex].value;


     }
 
 
 

  if (data=="clear") {clearAll(f); return;}
  
  //use FSG method with FSG estimates of molal volumes
  //only if only haveing c,h,o,n,cl, or S:::
  f.edcAir01.value = "Not Determined";
  f.edcAir02.value = "Not Determined";
  f.edcAir03.value = "Not Determined";
  f.edcAir04.value = "Not Determined";
  f.edcWater.value = "Not Determined";
  f.edcQACheck171.value = "Not Determined";
  f.edcQACheck172.value = "Not Determined";
  f.edcQACheck173.value = "Not Determined";
  f.edcQACheck174.value = "Not Determined";
  f.edcQACheck175.value = "Not Determined";
  f.edcQACheck176.value = "Not Determined";
  f.err171.value = "Not Determined";
  f.err172.value = "Not Determined";
  f.err173.value = "Not Determined";
  f.err174.value = "Not Determined";
  f.err175.value = "Not Determined";
  f.err176.value = "Not Determined";


  //fsg method has data for C, H, O, N, Cl, S and rings (no data for Br, F, I which are numbers 6, 7 and 8)
  if (number[6]<=0 && number[7]<=0 && number[8]<=0) 
  {
    diffusion01 = DetermineDiffusionCoefficientAirFSG("fsg",temperatureC+273,pressureATM,elements,condition,number);
    f.edcAir01.value = Num2String(diffusion01,3,-7,7,-4,4);
  }

  
  //use FSG method with LaBas estimates of molal volume
  diffusion02 = DetermineDiffusionCoefficientAirFSG("fsgLaBas",temperatureC+273,pressureATM,elements,condition,number);
  f.edcAir02.value = Num2String(diffusion02,3,-7,7,-4,4);

  //use WL method (LaBas estimates of molal volume)
  diffusion03 = DetermineDiffusionCoefficientAirWL("wl",temperatureC+273,pressureATM,bpC+273,elements,condition,number);
  f.edcAir03.value = Num2String(diffusion03,3,-7,7,-4,4);

  if (diffusion01 > 0 && diffusion02 > 0 && diffusion03 > 0)
  {
    //average of three air methods
    diffusion04 = (diffusion01 + diffusion02 + diffusion03)/3;
    f.edcAir04.value = Num2String(diffusion04,3,-7,7,-4,4);
  } 

  //diffusion of chemical into water with Hayduk and Laudie method
  diffusionW01 = DetermineDiffusionCoefficientWater(temperatureC,elements,condition,number);
  f.edcWater.value = Num2String(diffusionW01,3,-7,7,-4,4);


  //QA checks:  comparisons with examples from Tucker and Nelken

  //results from the 6 example problems in Tucker and Nelken
  var r171 = 0.0731;
  var r172 = 0.0815;
  var r173 = 0.0758;
  var r174 = 0.0857;
  var r175 = 0.95e-5;
  var r176 = 0.96e-5;
 

  //example 17-1, m-chlorotoluene (C7H7Cl) using the FSG method
  var exPressure = 1;    //ATM
  var exTemperature = 25;   // C
  var bpCTest;

  for (j=0;j<numberElements;j++)
  {
    condition[j] = "n/a";
    number[j] = 0;
  }

  //m-chlorotoluene props:
  number[0] = 7;  //carbon
  number[1] = 7;  //hydrogen
  number[4] = 1;  //chlorine
  number[9] = 1;  //rings
  //condition[9] = "6-Membered";

  diffusion01 = DetermineDiffusionCoefficientAirFSG("fsg",exTemperature+273,exPressure,elements,condition,number);
  f.edcQACheck171.value = Num2String(diffusion01,3,-7,7,-4,4);
  f.err171.value = Num2String(100*(diffusion01-r171)/r171,3,-7,7,-4,4);

  //WL method, example 17-3 
  number[13] = 1;  //rings - 6
  bpCTest = 435 - 273;
  diffusion03 = DetermineDiffusionCoefficientAirWL("wl",exTemperature+273,exPressure,bpCTest+273,elements,condition,number);
  f.edcQACheck173.value = Num2String(diffusion03,3,-7,7,-4,4);
  f.err173.value = Num2String(100*(diffusion03-r173)/r173,3,-7,7,-4,4);


  //example 17-2, isopropyl iodide ((CH3)2 CHI)  using the FSG-LaBas method
  exPressure = 1;    // ATM
  exTemperature = 25;  // C

  for (j=0;j<numberElements;j++)
  {
    condition[j] = "n/a";
    number[j] = 0;
  }

  number[0] = 3;
  number[1] = 7;
  number[8] = 1;

  diffusion01 = DetermineDiffusionCoefficientAirFSG("fsgLaBas",exTemperature+273,exPressure,elements,condition,number);
  f.edcQACheck172.value = Num2String(diffusion01,3,-7,7,-4,4);
  f.err172.value = Num2String(100*(diffusion01-r172)/r172,3,-7,7,-4,4);

  //WL method, example 17-4
  bpCTest = 362.45 - 273;
  diffusion03 = DetermineDiffusionCoefficientAirWL("wl",exTemperature+273,exPressure,bpCTest+273,elements,condition,number);
  f.edcQACheck174.value = Num2String(diffusion03,3,-7,7,-4,4);
  f.err174.value = Num2String(100*(diffusion03-r174)/r174,3,-7,7,-4,4);


  //Diffusion coefficients in water Hayduk and Laudie method
  //example 17-5, aniline  (C6H5NH2)
  exTemperature = 25;  // C

  for (j=0;j<numberElements;j++)
  {
    condition[j] = "n/a";
    number[j] = 0;
  }
  number[0] = 6;  //carbon
  number[1] = 7;  //hydrogen
  number[3] = 1;  //nitrogen
  condition[3] = "PrimaryAmine";
  number[13] = 1;
 

  //diffusion of chemical into water with Hayduk and Laudie method
  diffusion04 = DetermineDiffusionCoefficientWater(exTemperature,elements,condition,number);
  f.edcQACheck175.value = Num2String(diffusion04,3,-7,7,-4,4);
  f.err175.value = Num2String(100*(diffusion04-r175)/r175,3,-7,7,-4,4);



  //example 17-6, ethyl acetate (CH3C02CH2CH3)
  exTemperature = 25;  // C

  for (j=0;j<numberElements;j++)
  {
    condition[j] = "n/a";
    number[j] = 0;
  }
  number[0] = 4 //carbon
  number[1] = 8 //hydrogen
  number[2] = 2  //oxygen
  condition[2] = "EthylEstersEthers";

  //diffusion of chemical into water with Hayduk and Laudie method
  diffusion04 = DetermineDiffusionCoefficientWater(exTemperature,elements,condition,number);
  f.edcQACheck176.value = Num2String(diffusion04,3,-7,7,-4,4);
  f.err176.value = Num2String(100*(diffusion04-r176)/r176,3,-7,7,-4,4);



}



//  -->
<!-- end estdiffusion-ext_1.js -->