Note : Some parts of the source code are omitted from these listings (mainly functions for debugging the code)..

Globals: fake_rossi_ecat_global_v311.php

<?php  // php energy calculator globals  v3 110305
global $dbg;
global $feed_on;
global $observed_power,$observed_runtime;  // KWH, hrs
global $section_max, $section_volume, $section_name, $section_abrv,$section_mass;
global $material_max, $material_name, $material_abrv, $material_cmt,
       $material_mj_per_l, $material_mj_per_kg, 
       $material_kwh_per_l, $material_kwh_per_kg, 
	   $material_sp_heat;
global $rad_max, $rad_name, $rad_abrv, $rad_kw_per_kg, $rad_kw_per_l, $rad_sp_gravity;
global $expt_num, $expt_max, $expt_name, $expt_abrv, $expt_power, $expt_time, $expt_comment,
       $expt_sec_from, $expt_sec_to,
       $expt_sec_max, $expt_sec, $expt_mat; 
global $g_expt; // current experiment	   
global $color_real, $color_fake;   
global $unknown_val;
global $pKW,$pKWH,$pMJ,$pH,$pL,$pKG,$pMJpKG,$pMJpL,$pKWHpKG,$pKWHpL,$pSPH;  // print spans
global $pkJmol,$pgmol,$pgcm3,$pkJg;
global $paH, $paH2, $paO, $paO2, $paO3, $paH2O; // common molecules
global $paB, $paB2, $paB3;
global $paMg, $paMg2, $paMg3;
// stuff for element/molecular calculations
global $am; // atomic/molecular mass
global $dkgL; // density[]
// AB reactions ['AB']
global $mab_ab_title,$mab_ab_formula,$mab_a_name,$mab_b_name;
global $mab_a_pa, $mab_b_pa; // pATOM formats
global $mab_a_m, $mab_b_m, $mab_tot_m, $mab_a_mfac, $mab_b_mfac;
global $mab_a_dens, $mab_b_dens;
global $mab_a_num, $mab_b_num;
global $mab_a_elt, $mab_b_elt;
global $mab_a_v, $mab_b_v, $mab_tot_v, $mab_a_vfac, $mab_b_vfac;
global $table_bgcolor;
// specific heat
global $sph_max, $sph_material, $sph_sph, $sph_tmax,  $sph_tmin, $sph_comment, $sph_mjL;
global $send_holmes;
// magnesium-steam
global   $kJmolMg,$kJkGMG,$MJkGMG,$kJmolH2,$kJkGH2,$MJkGH2,$MJpLH2,$MJpLMG; 
?>

Functions: fake_rossi_ecat_calc_v311.php

<?php  // php energy calculator
include(INCLUDE_GLOBALS);

define('AF_MJ2KWH','0.27778');



$material_max = 0;
$rad_max      = 0;
$section_max  = 0;
$expt_max     = 0;


function pUNIT($a_string)  // print the UNIT in a span, with its own class
{ include(INCLUDE_GLOBALS);
  $r = <<< PRINT_UNITS
  <span class="afUnits">{$a_string}</span>
PRINT_UNITS;
  return $r;
}


// Pre-format all the common units : the names are picture-coded
$pKW = pUNIT("kW");
$pKWH = pUNIT("kWH");
$pMJ = pUNIT("MJ");
$pH = pUNIT("Hrs");
$pL = pUNIT("L");
$pKG = pUNIT("kg");
$pMJpKG = pUNIT("MJ/kg");
$pMJpL = pUNIT("MJ/L");
$pKWHpKG = pUNIT("kWH/kg");
$pKWHpL = pUNIT("kWH/L");
$pSPH = pUNIT("MJ/kg.K");
$pkJmol = pUNIT("kJ/mol");
$pgmol = pUNIT("g/mol");
$pgcm3 = pUnit("g/cm3");
$pkJg  = pUnit("kJ/g");

function print_val_fmt($a_val)
{ include(INCLUDE_GLOBALS);
  $l_absval = abs($a_val);
  if ( $l_absval <= 0.00000000001 )
  { $r = "";
  }
  else if ( $l_absval < 0.0001 )
  { $r = sprintf("%4.7f",$a_val);
  }
  else if ( $l_absval < 0.001 )
  { $r = sprintf("%4.6f",$a_val);
  }
  else if ( $l_absval < 0.01 )
  { $r = sprintf("%4.5f",$a_val);
  }
  else if ( $l_absval < 0.1 )
  { $r = sprintf("%4.4f",$a_val);
  }
  else if ( $l_absval < 1.0 )
  { $r = sprintf("%4.3f",$a_val);
  }
  else if ( $l_absval < 10.0 )
  { $r = sprintf("%4.2f",$a_val);
  }
  else if ( $l_absval < 100.0 )
  { $r = sprintf("%4.1f",$a_val);
  }
  else 
  { $r = sprintf("%4.0f",$a_val);
  }
  return $r;
}
function pV($a_val)  // shorthand
{ return print_val_fmt($a_val);
}
function print_unit_fmt($a_val,$a_unit)  // changes format to three significant digits
{ include(INCLUDE_GLOBALS);
  $l_absval = abs($a_val);
  if ( $l_absval <= 0.00000000001 )
  { $r = "";
  }
  else 
  { $v = print_val_fmt($a_val);
    $r = sprintf("%s %s",$v,$a_unit);
  }
  return $r;
}
function pUF($a_val,$a_unit) // shorthand
{ print_unit_fmt($a_val,$a_unit);
}

function td_fmt3($v,$z,$f,$u,$s)  // val, formats for zero,float,unknown  style
{
  if ($v==0) 
  { $r = '<td align="center" valign="top"' . $s . '>' . $z . '</td>'; 
  }
  else if ( $v >= 999 )
  {  $r = '<td align="center"  valign="top"' . $s . '>' . $u . '</td>'; 
  }
  else
  { $r = '<td align="right"  valign="top"' . $s . '>' . sprintf($f,$v) . '</td>';
  }
  return $r;
}

function pATOM($a,$s)  // Print an Atom with subscript
{  include(INCLUDE_GLOBALS);
   $r = "<span class=\"afAtom\">$a</span>";
   if($s>1) { $r .= "<span class=\"afSubs\">$s</span>"; }
   return $r;
}

$paH   = pATOM('H',1);
$paH2  = pATOM('H',2);
$paO   = pATOM('O',1);
$paO2  = pATOM('O',2);
$paO3  = pATOM('O',3);
$paH2O = $paH2 . $paO;
$paB   = pATOM('B',1);
$paB2  = pATOM('B',2);
$paB3  = pATOM('B',3);

$paMg   = pATOM('Mg',1);
$paMg2  = pATOM('Mg',2);
$paMg3  = pATOM('Mg',3);

function print_direct_energy_mass($a_mass,$a_mj_per_kg) 
{ include(INCLUDE_GLOBALS);
  $l_mj = $a_mass *$a_mj_per_kg;
  $l_kwh = AF_MJ2KWH * $l_mj;
  $l_mj_str = print_unit_fmt($l_mj,"MJ");
  $l_kwh_str =  print_unit_fmt($l_kwh,"kWH");
  echo <<< ENERGY_MASS
  {$l_mj_str} ({$l_kwh_str})
ENERGY_MASS;
}

function set_section($a_section,$a_name,$a_abrv,$a_volume,$a_mass)
{ include(INCLUDE_GLOBALS);
  if($section_max < $a_section ) { $section_max = $a_section; }
  $section_name[$a_section] = $a_name;
  $section_abrv[$a_section] = $a_abrv;
  $section_volume[$a_section] = $a_volume;
  $section_mass[$a_section] = $a_mass;
}
function print_section_table_row($a_sec)
{  include(INCLUDE_GLOBALS);
   if($dbg>9) { printf("<br/>DBG sec %d name $s </br>",$a_mat,$section_name[$a_sec]); }
   $fmt1 = 'valign="top"';
   $fmt2 = 'align="right" valign="top"';
   if ( isset($section_name[$a_sec]) )
   { printf("<tr>");
     printf("<td %s>%s</td>",$fmt1,
	     $section_name[$a_sec]);
     printf("<td %s>%s</td>",$fmt1,
	     $section_abrv[$a_sec]);
     echo td_fmt3($section_mass[$a_sec],"-","%6.3f","???",'');
     echo td_fmt3($section_volume[$a_sec],"-","%6.3f","???",'');
     printf("</tr>");
   }
}

function print_section_table($a_sec_from,$a_sec_to)
{ include(INCLUDE_GLOBALS);
echo <<< SEC_TABLE_HEAD
  <table width="400" border="1" class="afTable"  style="background-color: $table_bgcolor[0];">
    <tr>
      <th width="189" scope="col" rowspan="2">Section</th>
      <th width="189" scope="col" rowspan="2">Abrev</th>
      <th width="80" scope="col" align="right"  style="border-bottom: 0px;">Mass</th>
      <th width="80" scope="col" align="right" style="border-bottom: 0px;">Volume</th>
    </tr>
	<tr><td align="right">$pKG</td><td align="right">$pL</td>
	</tr>
SEC_TABLE_HEAD;
  for($l_sec=$a_sec_from;$l_sec<=$a_sec_to;$l_sec++)
  { if( isset($section_name[$l_sec]) ) { print_section_table_row($l_sec); }
  }
echo <<< SEC_TABLE_TAIL
  </table>
SEC_TABLE_TAIL;
}	 

function set_material($a_mat,$a_mat_name,$a_mat_abrv,$a_mat_mj_per_kg,$a_mat_mj_per_l,$a_mat_sp_heat,$a_cmt)
{ include(INCLUDE_GLOBALS);
  if($material_max < $a_mat ) { $material_max = $a_mat; }
  $material_name[$a_mat] = $a_mat_name; 
  $material_abrv[$a_mat] = $a_mat_abrv; 
  $material_cmt[$a_mat] = $a_mat_cmt; 
  $material_mj_per_l[$a_mat] = $a_mat_mj_per_l;
  $material_kwh_per_l[$a_mat] = $a_mat_mj_per_l == $unknown_val? $unknown_val : $a_mat_mj_per_l * AF_MJ2KWH;
  $material_mj_per_kg[$a_mat] = $a_mat_mj_per_kg;
  $material_kwh_per_kg[$a_mat] = $a_mat_mj_per_kg == $unknown_val? $unknown_val : $a_mat_mj_per_kg * AF_MJ2KWH;
  $material_sp_heat[$a_mat] = $a_mat_sp_heat;
}
function print_material_table_row($a_mat)
{  include(INCLUDE_GLOBALS);
   if($dbg>9) { printf("<br/>DBG mat %d name $s </br>",$a_mat,$material_name[$a_mat]); }
   $fmt1 = 'valign="top"';
   $fmt2 = 'align="right" valign="top"';
   if ( isset($material_name[$a_mat]) )
   { printf("<tr>");
     printf("<td %s>%s</td>",$fmt1,
	     $material_name[$a_mat]);
     printf("<td %s>%s</td>",$fmt1,
	     $material_abrv[$a_mat]);
     echo td_fmt3($material_mj_per_kg[$a_mat],"-","%6.3f","???",'style="border-right:0px;"' );
     echo td_fmt3($material_kwh_per_kg[$a_mat],"-","%6.3f","???",'');
     echo td_fmt3($material_mj_per_l[$a_mat],"-","%6.3f","???",'style="border-right:0px;"');
     echo td_fmt3($material_kwh_per_l[$a_mat],"-","%6.3f","???",'');
	 printf("<td %s>%s </td>",$fmt1,$material_cmnt[$a_mat]);
     printf("</tr>");
   }
}

function print_material_table($a_mat_from,$a_mat_to)
{ include(INCLUDE_GLOBALS);
echo <<< MAT_TABLE_HEAD
  <table width="700" border="1" class="afTable" style="background-color: $table_bgcolor[0];">
    <tr>
      <th  scope="col" valign="top" rowspan="2" style="width: 150px;">Material</th>
      <th  scope="col" valign="top" rowspan="2" style="width: 100px;">Abrev</th>
      <th  scope="col" valign="top" colspan="2" style="width: 100px;">Energy<br />by Mass</th>
      <th  scope="col" valign="top" colspan="2" style="width: 100px;">Energy<br />by Volume</th>
      <th  scope="col" valign="top" rowspan="2" style="width: 200px;" >Comment</th>
    </tr>
	    <td style="width: 100px; border-top: 0px;  border-right: 0px;" align="right"  >$pMJpKG</td>
	    <td style="width: 100px;  border-top: 0px;" align="right" >$pKWHpKG</td>
	    <td style="width: 100px;  border-top: 0px; border-right: 0px;" align="right" >$pMJpL</td>
	    <td style="width: 100px;  border-top: 0px;" align="right" >$pKWHpL</td>
	</tr>
MAT_TABLE_HEAD;
  for($l_mat=$a_mat_from;$l_mat<=$a_mat_to;$l_mat++)
  { if( isset($material_name[$l_mat]) ) { print_material_table_row($l_mat); }
  }
  
echo <<< MAT_TABLE_TAIL
  </table>
MAT_TABLE_TAIL;
}	 

function set_expt($a_expt,$a_name,$a_abrv,$a_power,$a_time,$a_cmnt)
{  include(INCLUDE_GLOBALS);
  $g_expt = $a_expt;
  if($expt_max < $a_expt ) { $expt_max = $a_expt; }
  $expt_name[$a_expt] = $a_name; 
  $expt_abrv[$a_expt] = $a_abrv; 
  $expt_power[$a_expt] = $a_power; 
  $expt_time[$a_expt] = $a_time; 
  $expt_comment[$a_expt] = $a_cmnt; 
  $expt_sec_max[$a_expt] = 0; 
  $expt_sec_from[$a_expt] = 999999999; 
  $expt_sec_to[$a_expt]   = -999999999; 
}
function set_expt_sec($a_sec,$a_mat)
{  include(INCLUDE_GLOBALS);
  $l_sec = ++$expt_sec_max[$g_expt]; 
  $expt_sec[$g_expt][$l_sec] = $a_sec; 
  $expt_mat[$g_expt][$l_sec] = $a_mat; 
  if ( $expt_sec_from[$g_expt] < $l_sec ) { $expt_sec_from[$g_expt] = $l_sec; }  
  if ( $expt_sec_to[$g_expt]   > $l_sec ) { $expt_sec_to[$g_expt]   = $l_sec; }
}



function print_expt_table_row_v3($a_expt)
{  include(INCLUDE_GLOBALS);
   $l_tot_energy = 0;
   $l_prt_sec_num = 0;
   for($l_sec_num=1;$l_sec_num<= $expt_sec_max[$a_expt];$l_sec_num++)
   { $l_mat = $expt_mat[$a_expt][$l_sec_num];
     $l_sec = $expt_sec[$a_expt][$l_sec_num];
     $l_energy_kwh = $section_volume[$l_sec]*$material_kwh_per_l[$l_mat];
	 $l_tot_energy += $l_energy_kwh;
	$l_prt_sec_num++;
	$l_sec_abrv[$l_prt_sec_num] = $section_abrv[$l_sec];
	$l_mat_abrv[$l_prt_sec_num] = $material_abrv[$l_mat];
	$l_sec_kwh[$l_prt_sec_num]  = print_unit_fmt($l_energy_kwh,$pKWH);
  }
    $l_runtime = $l_tot_energy/$expt_power[$a_expt];
   if ( $l_runtime <= $expt_time[$a_expt] )
   { $time_color = $color_real;
     $result = "REAL";
   }
   else
   { $time_color = $color_fake;
     $result= "FAKE?";
   }
   $l_hrs_expt = print_unit_fmt($expt_time[$a_expt],$pH); 
   $l_hrs_fake = print_unit_fmt($l_runtime,$pH);
   $l_kw_expt = print_unit_fmt($expt_power[$a_expt],$pKW);
   $l_kwh_fake = print_unit_fmt($l_tot_energy,$pKWH);
 
echo <<< EXPT_ROW_V3
<tr>
<th width="110" rowspan="4" align="left" valign="top">{$expt_abrv[$a_expt]}</th>
<th width="70" align="left" style="border-bottom: 0px;  border-right: 0px;">Section</th>
<td width="70" align="center" style="border-bottom: 0px; border-right: 0px;">{$l_sec_abrv[1]} </td>
<td width="70" align="center" style="border-bottom: 0px; border-right: 0px;">{$l_sec_abrv[2]}</td>
<td width="70" align="center" style="border-bottom: 0px;  border-right: 0px;">{$l_sec_abrv[3]}</td>
<th width="70" rowspan="2"  valign="top" style="border-bottom: 0px;">Fake<br />
  Energy</th>
<th width="70"  rowspan="2" valign="top" style="border-bottom: 0px; ">Expt<br />
  Power</th>
<td valign="top" colspan="2" style="background-color:$time_color;">$result</td>
</tr>
<tr>
<th height="19" align="left" style="border-bottom: 0px;  border-right: 0px;">Material</th>
<td align="center" style="border-bottom: 0px; border-right: 0px;">{$l_mat_abrv[1]}</td>
<td align="center" style="border-bottom: 0px; border-right: 0px;">{$l_mat_abrv[2]}</td>
<td align="center" style="border-bottom: 0px;  border-right: 0px;">{$l_mat_abrv[3]}</td>
<th width="65" style="border-bottom: 0px red ; border-right: 0px; background-color:$time_color;">Fake</th>
<th width="65" style="border-bottom: 0px; background-color:$time_color;">Expt</th>
</tr>
<tr>
<th align="left"  style="border-right: 0px;">Energy</th>
<td align="right" style="border-right: 0px;">{$l_sec_kwh[1]}</td>
<td align="right"  style="border-right: 0px;">{$l_sec_kwh[2]}</td>
<td align="right"  style="border-right: 0px;">{$l_sec_kwh[3]}</td>
<td>$l_kwh_fake</td>
<td>$l_kw_expt</td>
<td align="right" style="border-right: 0px; border-top: 0px red; background-color:$time_color;">{$l_hrs_fake}</td>
<td align="right" style="border-top: 0px; background-color:$time_color;">{$l_hrs_expt}</td>
</tr>
<tr>
  <td height="28" colspan="8" align="left" valign="top">$expt_comment[$a_expt]</td>
</tr>

EXPT_ROW_V3;
}
function print_expt_table_v3($a_expt_from,$a_expt_to)
{ include(INCLUDE_GLOBALS);
  echo <<< EXPT_TABLE_HEAD3
<table width="700" border="1" class="afTable">
EXPT_TABLE_HEAD3;
    for($l_expt=$a_expt_from;$l_expt<=$a_expt_to;$l_expt++)
	{  if($dbg>3) { printf("<tr><td>EXPT {$l_expt} NAME {$expt_name[$l_expt]} </td></tr>\n"); }
	   if (isset($expt_name[$l_expt]) ){ print_expt_table_row_v3($l_expt);  }
	}
echo <<< EXPT_TABLE_TAIL3
    </table>
EXPT_TABLE_TAIL3;
// <tr><td colspan="7">Units<br />Power: kW Energy: kWH  Time: Hours  Mass: kg Volume : Liters </td></tr>
}

function print_expt_table_row_v4($a_expt,$bgcolor)
{  include(INCLUDE_GLOBALS);
   $l_tot_energy = 0;
   $l_prt_sec_num = 0;
   for($l_sec_num=1;$l_sec_num<= $expt_sec_max[$a_expt];$l_sec_num++)
   { $l_mat = $expt_mat[$a_expt][$l_sec_num];
     $l_sec = $expt_sec[$a_expt][$l_sec_num];
     $l_energy_kwh = $section_volume[$l_sec]*$material_kwh_per_l[$l_mat];
	 $l_tot_energy += $l_energy_kwh;
	$l_prt_sec_num++;
	$l_sec_abrv[$l_prt_sec_num] = $section_abrv[$l_sec];
	$l_mat_abrv[$l_prt_sec_num] = $material_abrv[$l_mat];
	$l_sec_kwh[$l_prt_sec_num]  = print_unit_fmt($l_energy_kwh,$pKWH);
  }
    $l_runtime = $l_tot_energy/$expt_power[$a_expt];
   if ( $l_runtime <= $expt_time[$a_expt] )
   { $time_color = $color_real;
     $result = "REAL";
   }
   else
   { $time_color = $color_fake;
     $result= "FAKE?";
   }
   $l_hrs_expt = print_unit_fmt($expt_time[$a_expt],$pH); 
   $l_hrs_fake = print_unit_fmt($l_runtime,$pH);
   $l_kw_expt = print_unit_fmt($expt_power[$a_expt],$pKW);
   $l_kwh_fake = print_unit_fmt($l_tot_energy,$pKWH);
 
echo <<< EXPT_ROW_V4
<tr style="background-color: $bgcolor;">
<th colspan="8" align="left" valign="top" >{$expt_name[$a_expt]}</th>
</tr>
<tr style="background-color: $bgcolor;">
<th width="70" align="left" style="border-bottom: 0px;  border-right: 0px; ">Section</th>
<td width="70" align="center" style="border-bottom: 0px; border-right: 0px;">{$l_sec_abrv[1]} </td>
<td width="70" align="center" style="border-bottom: 0px; border-right: 0px;">{$l_sec_abrv[2]}</td>
<td width="70" align="center" style="border-bottom: 0px;  border-right: 0px;">{$l_sec_abrv[3]}</td>
<th width="70" rowspan="2"  valign="top" style="border-bottom: 0px;">Fake<br />
  Energy</th>
<th width="70"  rowspan="2" valign="top" style="border-bottom: 0px; ">Expt<br />
  Power</th>
<td valign="top" colspan="2" style="background-color:$time_color;">$result</td>
</tr>
<tr style="background-color: $bgcolor;">
<th height="19" align="left" style="border-bottom: 0px;  border-right: 0px;">Material</th>
<td align="center" style="border-bottom: 0px; border-right: 0px;">{$l_mat_abrv[1]}</td>
<td align="center" style="border-bottom: 0px; border-right: 0px;">{$l_mat_abrv[2]}</td>
<td align="center" style="border-bottom: 0px;  border-right: 0px;">{$l_mat_abrv[3]}</td>
<th width="65" style="border-bottom: 0px red ; border-right: 0px; background-color:$time_color;">Fake</th>
<th width="65" style="border-bottom: 0px; background-color:$time_color;">Expt</th>
</tr>
<tr style="background-color: $bgcolor;">
<th align="left"  style="border-right: 0px;">Energy</th>
<td align="right" style="border-right: 0px;">{$l_sec_kwh[1]}</td>
<td align="right"  style="border-right: 0px;">{$l_sec_kwh[2]}</td>
<td align="right"  style="border-right: 0px;">{$l_sec_kwh[3]}</td>
<td>$l_kwh_fake</td>
<td>$l_kw_expt</td>
<td align="right" style="border-right: 0px; border-top: 0px red; background-color:$time_color;">{$l_hrs_fake}</td>
<td align="right" style="border-top: 0px; background-color:$time_color;">{$l_hrs_expt}</td>
</tr>
<tr style="background-color: $bgcolor;">
  <td height="28" colspan="8" align="left" valign="top">$expt_comment[$a_expt]</td>
</tr>
EXPT_ROW_V4;
}

function print_expt_table_v4($a_expt_from,$a_expt_to,$send_table)
{ include(INCLUDE_GLOBALS);
  $bgindx = 0;
  if($send_table) { echo <<< EXPT_TABLE_HEAD4A
         <table width="700" border="1" class="afTable">
EXPT_TABLE_HEAD4A;
    }
    for($l_expt=$a_expt_from;$l_expt<=$a_expt_to;$l_expt++)
	{    	   
	   if (isset($expt_name[$l_expt]) )
	   {  if($send_table) { $bgindx = $bgindx==0?1:0; }
          if(!$send_table) { echo <<< EXPT_TABLE_HEAD4B
          <table width="700" border="1" class="afTable"  >
EXPT_TABLE_HEAD4B;
          }
	         print_expt_table_row_v4($l_expt,$table_bgcolor[$bgindx]);  
          if(!$send_table) { echo <<< EXPT_TABLE_TAIL4B
           </table><br />
EXPT_TABLE_TAIL4B;
          }
	   }
	} 
	if($send_table) { $bgindx = $bgindx==0?1:0; $bgcolor = $table_bgcolor[$bgindx]; $l_width = "50px";
	echo <<< EXPT_TABLE_TAIL4A
		   <tr ><td colspan="10" style="background-color: $bgcolor;">
		   <span style="display: inline-block; width: $l_width; background-color: $color_fake";
		   >FAKE?</span> 
            means that the fake could run longer than the experiment, and is NOT eliminated
		   <br /><span style="display: inline-block; width: $l_width;  background-color: $color_real";
		   >REAL</span>
		    means that the fake is ELIMINATED by an experiment, so the device could be REAL
			</td></tr>
           </table>
		   <br />
EXPT_TABLE_TAIL4A;
     }

// <tr><td colspan="7">Units<br />Power: kW Energy: kWH  Time: Hours  Mass: kg Volume : Liters </td></tr>
}

// used for radioactive materials
function set_rad($a_rad,$a_rad_name,$a_rad_abrv,$a_rad_kw_per_kg,$a_rad_kw_per_l,$a_rad_sp_gravity)
{ include(INCLUDE_GLOBALS);
  if($rad_max < $a_rad ) { $rad_max = $a_rad; }
  $rad_name[$a_rad] = $a_rad_name; 
  $rad_abrv[$a_rad] = $a_rad_abrv; 
  $rad_kw_per_l[$a_rad] = $a_rad_kw_per_l;
  $rad_kw_per_kg[$a_rad] = $a_rad_kw_per_kg;
  $rad_sp_gravity[$a_rad] = $a_rad_sp_gravity;
}
function print_rad_table_row($a_rad)
{  include(INCLUDE_GLOBALS);
   if($dbg>9) { printf("<br/>DBG rad %d name $s </br>",$a_rad,$rad_name[$a_rad]); }
   $fmt1 = 'valign="top"';
   $fmt2 = 'align="right" valign="top"';
   if ( isset($rad_name[$a_rad]) )
   { printf("<tr>");
     printf("<td %s>%s</td>",$fmt1,
	     $rad_name[$a_rad]);
     printf("<td %s>%s</td>",$fmt1,
	     $rad_abrv[$a_rad]);
     printf("<td %s>%6.3f</td>",$fmt2,
		 $rad_kw_per_kg[$a_rad]);
     printf("<td %s>%6.3f</td>",$fmt2,
		 $rad_kw_per_l[$a_rad]);
     printf("<td %s>%6.3f</td>",$fmt2,
		 $rad_sp_gravity[$a_rad]);
     printf("</tr>");
   }
}

function print_rad_table($a_rad_from,$a_rad_to)
{ include(INCLUDE_GLOBALS);
echo <<< RAD_TABLE_HEAD
  <table width="500" border="1"  class="afTable" style="background-color: $table_bgcolor[0];">
    <tr>
      <th width="100" scope="col" valign="top">Material</th>
      <th width="80" scope="col" valign="top">Abrev</th>
      <th width="80" scope="col" valign="top">Power<br />by<br />Mass<br>kW/kg</th>
      <th width="80" scope="col" valign="top">Power<br />by<br />Volume<br>kW/L</th>
      <th width="80" scope="col" valign="top">Specific<br />gravity</th>
    </tr>
RAD_TABLE_HEAD;
  for($l_rad=$a_rad_from;$l_rad<=$a_rad_to;$l_rad++)
  { if( isset($rad_name[$l_rad]) ) { print_rad_table_row($l_rad); }
  }
echo <<< RAD_TABLE_TAIL
  </table>
RAD_TABLE_TAIL;
}	 

function set_sph($index,$mat,$sph,$tmax,$tmin,$cmt)
  { include(INCLUDE_GLOBALS);
    $sph_material[$index] = $mat;
    $sph_sph[$index] = $sph;
	$sph_tmax[$index] = $tmax;
	$sph_tmin[$index] = $tmin;
	$sph_comment[$index] = $cmt;
	$sph_mjL[$index]  = $sph * ($tmax - $tmin) * 1000 / 1000000 ; // *1000 :cc/L /100000 : j to MJ
  }

function print_sph_table($sph_from,$sph_to)
  {  include(INCLUDE_GLOBALS);
  echo <<< HEAT_SINK_END1
  <table width="474" border="1" style="background-color: $table_bgcolor[0];">
  <tr>
      <th width="65">Material </th>
      <th width="78">Specific<br />
        Heat</th>
      <th width="103">Maximum<br />
        Temperature</th>
	 <th width="103">Minimum<br />
        Temperature</th>
		
      <th width="103">MJ/<br />
        Liter</th>
      <th width="210">Comments</th>
    </tr>
HEAT_SINK_END1;
 for($sph= $sph_from;$sph<=$sph_to;$sph++)
 { echo <<< HEAT_SINK_ROW
      <tr>
      <td>$sph_material[$sph]</td>
      <td>$sph_sph[$sph]</td>
      <td>$sph_tmax[$sph]</td>  
      <td>$sph_tmin[$sph]</td>
      <td>$sph_mjL[$sph]</td>
      <td>$sph_comment[$sph]</td>
    </tr>
HEAT_SINK_ROW;
 }
 echo <<< HEAT_SINK_END2
  </table>
HEAT_SINK_END2;
  }
?>

Set Values: fake_rossi_ecat_setvalues_v311.php

<?php  // php energy calculator

$color_real = "#66ff66";
$color_fake = "#ff6666";

// alternating colors for dense tables
$table_bgcolor[0] = "#F0F0F0"; 
$table_bgcolor[1] = "#E0E0E0";
  
$unknown_val = 999;

// sections
define('AF_C',1);
define('AF_H',2);
define('AF_V',3);
define('AF_R',4);
define('AF_RCH',5);

define('AF_DEMO',5);

$mat_num = 0;

$rad_num = 0;
define('RAD_HF178',++$rad_num);
define('RAD_PU238',++$rad_num);

function set_ecat_values_031()
{ include(INCLUDE_GLOBALS);

  // sections  VOL-MASS
  set_section(AF_C,"Control Box","Ctrl",60,7);
  set_section(AF_H,"Horizontal Arm","Horz",22,0);
  set_section(AF_V,"Vertical Arm","Vert",9,0);
  set_section(AF_R,"Reactor","React",0.5*$section_volume[AF_H],30);
  set_section(AF_RCH,"Reactor Chamber","Chamber",1,0);
  set_section(AF_DEMO1,"Section Name 1","SEC-1",12,11);
  set_section(AF_DEMO2,"Section Name 2","SEC-2",22,21);
  set_section(AF_DEMO3,"Section Name 3","SEC-3",32,31);
  
  // materials  mass,vol, sp-heat
  
  $mjkg_h = 143;
  $mjL_h = 5.6;
  $mjkg_b =  58.9;
  $mjL_b  = 137.8;
  
  define('MAT_NONE',++$mat_num);
  set_material(MAT_NONE,"None","-",0,0,0,"");
  
  define('MAT_BAT_START',$mat_num+1);
  define('MAT_LEAD_BAT',++$mat_num);
  set_material(MAT_LEAD_BAT,"Lead-Acid Batteries","Lead B",0.14,0.36,0,"");  
  define('MAT_LI_ION_BAT',++$mat_num);
  set_material(MAT_LI_ION_BAT,"Lithium-Ion Batteries","L-i B",0.72,3.6,0,"");   
  define('MAT_BAT_FIN',$mat_num);
  
  define('MAT_FC_START',$mat_num+1);
  define('MAT_CHA_FC',++$mat_num); 
  set_material(MAT_CHA_FC,"Compressed Hydrogen/External Air Fuel Cell","CH/Air-FC",$mjkg_h,$mjL_h,0,"");  
  define('MAT_LHA_FC',++$mat_num);
  set_material(MAT_LHA_FC,"Liquid Hydrogen/External Air Fuel Cell","LH/Air-FC",143,10.1,0,"");     
  define('MAT_CHCO_FC',++$mat_num);
  set_material(MAT_CHCO_FC,"Compressed Hydrogen/Compressed Oxygen Fuel Cell","CH/CO-FC",$mab_a_mfac['CH-CO']*$mjkg_h,$mab_a_vfac['CH-CO']*$mjL_h,0,"");   
  define('MAT_LHLO_FC',++$mat_num);
  set_material(MAT_LHLO_FC,"Liquid Hydrogen/Liquid Oxygen Fuel Cell","LH/LO-FC",$mab_a_mfac['LH-LO']*$mjkg_h,$mab_a_vfac['LH-LO']*$mjL_h,0,"");  
  define('MAT_FC_FIN',$mat_num);
  
  define('MAT_HO_START',$mat_num+1);
  define('MAT_CHA',++$mat_num);
  set_material(MAT_CHA,"Compressed Hydrogen/External Air","CH/Air",$mjkg_h,$mjL_h,0,"");   
  define('MAT_LHA',++$mat_num);
  set_material(MAT_LHA,"Liquid Hydrogen/External Air","LH/Air",143,10.1,0,"");  
  define('MAT_CHCO',++$mat_num);
  set_material(MAT_CHCO,"Compressed Hydrogen/Compressed Oxygen","CH/CO",$mab_a_mfac['CH-CO']*$mjkg_h,$mab_a_vfac['CH-CO']*$mjL_h,0,""); 
  define('MAT_LHLO',++$mat_num);
  set_material(MAT_LHLO,"Liquid Hydrogen/Liquid Oxygen","LH/LO",$mab_a_mfac['LH-LO']*$mjkg_h,$mab_a_vfac['LH-LO']*$mjL_h,0,""); 
  define('MAT_HO_FIN',$mat_num);

  define('MAT_BO_START',$mat_num+1);
  define('MAT_BO_AIR',++$mat_num);
  set_material(MAT_BO_AIR,"Boron/External Air","B/Air",$mjkg_b,$mjL_b,0,""); 
  define('MAT_BO_CO',++$mat_num);
  set_material(MAT_BO_CO,"Boron/Compressed Oxygen","B/CO",$mab_a_mfac['B-CO']*$mjkg_b,$mab_a_vfac['B-CO']*$mjL_b,0,""); 
  define('MAT_BO_LO',++$mat_num);
  set_material(MAT_BO_LO,"Boron/Liquid Oxygen","B/LO",$mab_a_mfac['B-LO']*$mjkg_b,$mab_a_vfac['B-LO']*$mjL_b,0,""); 
  define('MAT_BO_FIN',$mat_num);
  
  define('MAT_DSL_AIR',++$mat_num);
  set_material(MAT_DSL_AIR,"Diesel/Air","Dsl/Air",46.2,37.3,0,""); 
  
  define('MAT_MG_H2O',++$mat_num);
  set_material(MAT_MG_H2O,"Magnesium/Steam","Mg/Steam",24.8837,43.24799,0,""); 
  // define('MAT_BO_H2O',++$mat_num);
  // set_material(MAT_BO_H2O,"Boron/Steam + Hydrogen/Air","B/St + H/Air",2*58.9,2*137.8,0,""); 
  
  define('MAT_DEMO',++$mat_num); 
  set_material(MAT_DEMO,"Material 1","MAT-1",12.3,45.6,0,""); 
  
  set_rad(RAD_HF178,"Haffnium 178","Hf178",$unknown_val,0,0); 
  set_rad(RAD_PU238,"Plutonium 238","Pu238",0.5,0,0); 
  
  define('FLOW_JAN',17.5); // L/h
  define('FLOW_FEB',3000);
  
  
  $sph_max = 0;  $tmin = 14;
  define('SPH_START',$sph_max+1);	  
  define('SPH_H2O',++$sph_max);
  set_sph(SPH_H2O,"Water",4.21,100,$tmin,"Boils");
  define('SPH_BE',++$sph_max);
  set_sph(SPH_BE,"Be",3.38,1287,$tmin,"Melts. Poisonous");
  define('SPH_IRON',++$sph_max);
  set_sph(SPH_IRON,"Iron",3.53,1538,$tmin,"Melts");
  define('SPH_LEAD',++$sph_max);
  set_sph(SPH_LEAD,"Lead",1.44,327.46,$tmin,"Melts"); 
  define('SPH_FIN',$sph_max);	
	   
  define('MAT_SPH_START',$mat_num+1);
  define('MAT_SPH_H2O',++$mat_num);
  set_material(MAT_SPH_H2O,"SPH " . $sph_material[SPH_H2O],"SPH " . $sph_material[SPH_H2O],$unknown_value,$sph_mjL[SPH_H2O],0,"From SPH Table"); 
  define('MAT_SPH_BE',++$mat_num);
  set_material(MAT_SPH_BE,"SPH " . $sph_material[SPH_BE],"SPH " . $sph_material[SPH_BE],$unknown_value,$sph_mjL[SPH_BE],0,"From SPH Table"); 
  define('MAT_SPH_IRON',++$mat_num);
  set_material(MAT_SPH_IRON,"SPH " . $sph_material[SPH_IRON],"SPH " . $sph_material[SPH_IRON],$unknown_value,$sph_mjL[SPH_IRON],0,"From SPH Table"); 
  define('MAT_SPH_LEAD',++$mat_num);
  set_material(MAT_SPH_LEAD,"SPH " . $sph_material[SPH_LEAD],"SPH " . $sph_material[SPH_LEAD],$unknown_value,$sph_mjL[SPH_LEAD],0,"From SPH Table"); 
  define('MAT_SPH_FIN',$mat_num); 
	 
  $expt_num = 0;
  
  $cmt_a = " with ALL sections";
  $cmt_b = " with MAIN unit -- excluding Control Box";
  $cmt_c = " with HORIZONTAL unit";
  $cmt_d = " with ESTIMATED reactor volume";  
  $cmt_e = " with reactor CHAMBER volume";
  $cmt_jan_a = "January"  . $cmt_a;
  $cmt_jan_b = "January"  . $cmt_b;
  $cmt_feb_a = "February" . $cmt_a;
  $cmt_feb_b = "February" . $cmt_b;
  $cmt_feb_c = "February" . $cmt_c;
  $cmt_feb_d = "February" . $cmt_d;
  $cmt_feb_e = "February" . $cmt_e;
  // experiments
  
function set_expt_multi($a_ctrl,$a_main)
{  include(INCLUDE_GLOBALS);

  if($dbg>3) echo "set_expt_multi($a_ctrl,$a_main) expt $expt_num";
  $cmt_a = " with ALL sections";
  $cmt_b = " with MAIN unit -- excluding Control Box";
  $cmt_c = " with HORIZONTAL unit";
  $cmt_d = " with ESTIMATED reactor volume";  
  $cmt_e = " with reactor CHAMBER volume";
  $cmt_jan_a = "January"  . $cmt_a;
  $cmt_jan_b = "January"  . $cmt_b;
  $cmt_feb_a = "February" . $cmt_a;
  $cmt_feb_b = "February" . $cmt_b;
  $cmt_feb_c = "February" . $cmt_c;
  $cmt_feb_d = "February" . $cmt_d;
  $cmt_feb_e = "February" . $cmt_e;
  
   set_expt(++$expt_num,"Control Box: $material_name[$a_ctrl] Main Unit: $material_name[$a_main]","All Secs Li/i",10,0.5,$cmt_jan_a);
        set_expt_sec(AF_C,$a_ctrl);	// expt number is in a global
        set_expt_sec(AF_H,$a_main);	
        set_expt_sec(AF_V,$a_main);

   set_expt(++$expt_num,"Main Unit: $material_name[$a_main]","Main Secs Li/i",10,0.5,$cmt_jan_b);
        set_expt_sec(AF_C,MAT_NONE);	// expt number is in a global
        set_expt_sec(AF_H,$a_main);	
        set_expt_sec(AF_V,$a_main);

   set_expt(++$expt_num,"Horizontal Arm: $material_name[$a_main]","Main Secs Li/i",16,18,$cmt_feb_c);
        set_expt_sec(AF_C,MAT_NONE);	
        set_expt_sec(AF_H,$a_main);	
        set_expt_sec(AF_V,MAT_NONE);
   
   set_expt(++$expt_num,"Reactor:  $material_name[$a_main]","React Sec Li/i",16,18,$cmt_feb_d);
        set_expt_sec(AF_C,MAT_NONE);	
        set_expt_sec(AF_R,$a_main);	
        set_expt_sec(AF_V,MAT_NONE);
		

   set_expt(++$expt_num,"Reactor chamber:  $material_name[$a_main]","React Sec Li/i",16,18,$cmt_feb_e);
        set_expt_sec(AF_C,MAT_NONE);	
        set_expt_sec(AF_RCH,$a_main);	
        set_expt_sec(AF_V,MAT_NONE);
	
	  if($dbg>3) echo "...  expt $expt_num <br />";				
}

   define('EXPT_MULTI_START',$expt_num+1);
   set_expt_multi(MAT_LI_ION_BAT,MAT_LHA);
   define('EXPT_MULTI_FIN',$expt_num);

   define('EXPT_BAT_START',$expt_num+1);
   set_expt_multi(MAT_LI_ION_BAT,MAT_LI_ION_BAT);
   define('EXPT_BAT_FIN',$expt_num);

 
   // experiments
   define('EXPT_LHA_START',$expt_num+1);   
   set_expt_multi(MAT_LHA_FC,MAT_LHA);
   define('EXPT_LHA_FIN',$expt_num);
	
  // experiments
   define('EXPT_CHA_START',$expt_num+1); 
   set_expt_multi(MAT_CHA_FC,MAT_CHA);
   define('EXPT_CHA_FIN',$expt_num);

	
	
   define('EXPT_CHCO_START',$expt_num+1);
   set_expt_multi(MAT_CHCO_FC,MAT_CHCO);
	define('EXPT_CHCO_FIN',$expt_num);
	

  define('EXPT_LHLO_START',$expt_num+1);
   set_expt_multi(MAT_LHLO_FC,MAT_LHLO);
	define('EXPT_LHLO_FIN',$expt_num);
	
	// experiments
   define('EXPT_BOA_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_BO_AIR);
	define('EXPT_BOA_FIN',$expt_num);
	
		// experiments
   define('EXPT_BOCO_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_BO_CO);
	define('EXPT_BOCO_FIN',$expt_num);
	
			// experiments
   define('EXPT_BOLO_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_BO_LO);
	define('EXPT_BOLO_FIN',$expt_num);
	
	// experiments
   define('EXPT_MGS_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_MG_H2O);
	define('EXPT_MGS_FIN',$expt_num);
		
		// experiments
   define('EXPT_DFA_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_DSL_AIR);	
  define('EXPT_DFA_FIN',$expt_num);
  
     define('EXPT_SPHH2O_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_SPH_H2O);	
  define('EXPT_SPHH2O_FIN',$expt_num);
  
     define('EXPT_SPHBE_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_SPH_BE);	
  define('EXPT_SPHBE_FIN',$expt_num);
  
     define('EXPT_SPHIRON_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_SPH_IRON);	
  define('EXPT_SPHIRON_FIN',$expt_num);
  
     define('EXPT_SPHLEAD_START',$expt_num+1);
   set_expt_multi(MAT_LHA_FC,MAT_SPH_LEAD);	
  define('EXPT_SPHLEAD_FIN',$expt_num);
  
  	// experiments
   define('EXPT_JAN_DEMO_ALL',++$expt_num); 
   define('EXPT_DEMO_START',$expt_num);
   set_expt(EXPT_JAN_DEMO_ALL,"Experiment 1 : All sections contain MAT-1","All sections contain MAT-1",10,0.5,"Fake can run longer than the experiment: fake is NOT eliminated");
        set_expt_sec(AF_DEMO1,MAT_DEMO);	
        set_expt_sec(AF_DEMO2,MAT_DEMO);	
        set_expt_sec(AF_DEMO3,MAT_DEMO);
 
   define('EXPT_FEB_DEMO_ALL',++$expt_num);
   set_expt(EXPT_FEB_DEMO_ALL,"Experiment 2 : Only SEC-2 contain MAT-1","Only SEC-2 contains MAT-1",16,18,"Fake cannot run as long as the experiment  -- Fake is eliminated");
        set_expt_sec(AF_DEMO1,MAT_NONE);	
        set_expt_sec(AF_DEMO2,MAT_DEMO);	
        set_expt_sec(AF_DEMO3,MAT_NONE);
   
  define('EXPT_DEMO_FIN',$expt_num);
}
?>

Set 'mole' Values: fake_rossi_ecat_setmoles_v311.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php // atomic weight calc test section

function calc_moles()
{ include(INCLUDE_GLOBALS);
$am['B'] = 10.811;  $dkgL['B'] = 2.52; // 2.34? g/cc == kg/L
$am['H'] = 1.0071;  $am['H2'] = 2*$am['H']; 
  $dkgL['H2'] = 0.08988 * 0.001 ; // wiki 0.08988 g/L  ==> kg/L 
  $dkgL['H2-700B'] =  $dkgL['H2'] * (5.6/0.01079); // wiki-ED
  $dkgL['H2-L']    =  0.07099; // wiki 0.07099 g/cm3 = kg/L
// $dkgL['H2-L']= 67.8*0.001; // kg/m3 ==> kg/L
$am['O'] = 15.999;  
$am['O2'] = 2*15.999;
  $dkgL['O2'] = 1.429 * 0.001 ; // wiki 1.429 g/L  == kg/L  
  $dkgL['O2-700B'] =  $dkgL['O2']  * $dkgL['H2-700B'] / $dkgL['H2']; // ratio H2
  $dkgL['O2-L'] =   1.141; // 1.141 g·cm-3   == kg/L
$am['Al'] = 26.98153868; $dkgL['Al'] = 2.698; // g/cc == kg/L

$am['Mg'] = 24.3050; $dkgL['Mg'] = 1.738; // g/cc == kg/L
$dkgL['MgO'] = 3.58; // g/cc == kg/L

  $l_formula = "2 {$paH2}  + {$paO2}  ===> 2  {$paH2O}";
  calc_moles_ab('CH-CO','Compressed Hydrogen/Compressed Oxygen',$l_formula,'Compressed H2','H2',$paH2,2,$dkgL['H2-700B'],'Compressed O2','O2',$paO2,1,$dkgL['O2-700B']);
  
  $l_formula = "2 {$paH2}  + {$paO2}  ===> 2  {$paH2O}";
  calc_moles_ab('LH-LO','Liquid Hydrogen/Liquid Oxygen',$l_formula,'Liquid H2','H2',$paH2,2,$dkgL['H2-L'],'Liquid O2','O2',$paO2,1,$dkgL['O2-L']);
 
 
  $l_formula = "4 {$paB}  +  3 {$paO2}  ===> 2  {$paB2}{$paO3}"; 
  calc_moles_ab('B-CO','Boron/Compressed Oxygen',$l_formula,'Solid B','B',$paB,4,$dkgL['B'],'Compressed O2','O2',$paO2,3,$dkgL['O2-700B']);
  
  $l_formula = "4 {$paB}  +  3 {$paO2}  ===> 2  {$paB2}{$paO3}"; 
  calc_moles_ab('B-LO','Boron/Liquid Oxygen',$l_formula,'Solid B','B',$paB,4,$dkgL['B'],'Liquid O2','O2',$paO2,3,$dkgL['O2-L']);

  $l_formula = "{$paMg}  +  {$paH2O}  ===> {$paH2}"; 
  calc_moles_ab('MG-H2O','Magnesium/Steam',$l_formula,'Solid Mg','Mg',$paMg,1,$dkgL['Mg'],'H2O Steam','H2O',$paH2,1,$dkgL['H2']);
}
function calc_moles_ab($ab,$ab_title,$ab_formula,$a_name,$a_elt,$a_pa,$a_num,$a_dens,$b_name,$b_elt,$b_pa,$b_num,$b_dens)  
{ include(INCLUDE_GLOBALS);
    $mab_ab_title[$ab] = $ab_title;    
	$mab_ab_formula[$ab] = $ab_formula;
	$mab_a_name[$ab] = $a_name;
	$mab_b_name[$ab] = $b_name;
	$mab_a_pa[$ab]   = $a_pa;
	$mab_b_pa[$ab]   = $b_pa;
	$mab_a_num[$ab]  = $a_num;
	$mab_b_num[$ab]  = $b_num;
	$mab_a_elt[$ab]  = $a_elt;
	$mab_b_elt[$ab]  = $b_elt;
    $mab_a_m[$ab] = $a_num * $am[$a_elt]; 
	$mab_b_m[$ab] = $b_num * $am[$b_elt]; 
	$mab_tot_m[$ab] = $mab_a_m[$ab] + $mab_b_m[$ab];
	$mab_a_mfac[$ab] = $mab_a_m[$ab]/$mab_tot_m[$ab];  
	$mab_b_mfac[$ab] = $mab_b_m[$ab]/$mab_tot_m[$ab];
	$mab_a_dens[$ab] = $a_dens;
	$mab_b_dens[$ab] = $b_dens;
    $mab_a_v[$ab] = $mab_a_m[$ab] / $a_dens;
	$mab_b_v[$ab] = $mab_b_m[$ab] / $b_dens;
	$mab_tot_v[$ab] = $mab_a_v[$ab] + $mab_b_v[$ab];
	$mab_a_vfac[$ab] = $mab_a_v[$ab]/$mab_tot_v[$ab];  
	$mab_b_vfac[$ab] = $mab_b_v[$ab]/$mab_tot_v[$ab];
}
function print_moles_ab($ab)  
{ include(INCLUDE_GLOBALS);
  if($dbg>3) echo "Title:   AB[$ab] $mab_ab_title[$ab]";
  echo <<< PRINT_MOLES_AB
  <pre>
Formula:  $mab_ab_formula[$ab]
$mab_a_pa[$ab]  ($mab_a_name[$ab])
$mab_b_pa[$ab] ($mab_b_name[$ab])
$mab_a_pa[$ab] mass :   $mab_a_num[$ab] * {$am[$mab_a_elt[$ab]]} = $mab_a_m[$ab]
$mab_b_pa[$ab] mass :   $mab_b_num[$ab] * {$am[$mab_b_elt[$ab]]} = $mab_b_m[$ab]
Total mass :   $mab_tot_m[$ab]
$mab_a_pa[$ab] mass fac : $mab_a_m[$ab] /  $mab_tot_m[$ab] = $mab_a_mfac[$ab]	
$mab_b_pa[$ab] mass fac : $mab_b_m[$ab] /  $mab_tot_m[$ab] = $mab_b_mfac[$ab]
Volume : mass / density
$mab_a_pa[$ab] volume :  $mab_a_m[$ab] / $mab_a_dens[$ab] =  $mab_a_v[$ab]
$mab_b_pa[$ab] volume :  $mab_b_m[$ab] / $mab_b_dens[$ab] =  $mab_b_v[$ab]
Total vol :  $mab_tot_v[$ab]
$mab_a_pa[$ab] vol fac : $mab_a_v[$ab]/$mab_tot_v[$ab] = $mab_a_vfac[$ab] 	
$mab_b_pa[$ab] vol fac : $mab_b_v[$ab]/$mab_tot_v[$ab] = $mab_b_vfac[$ab] 
	</pre>
PRINT_MOLES_AB;
}

function calc_moles_mg_steam()  
{ include(INCLUDE_GLOBALS);
   $kJmolMg = 360 + 285.8 - 41;
   $kJkGMG = $kJmolMg / $am['Mg'] ;
   $MJkGMG = $kJkGMG ;
   $MJpLMG = $MJkGMG * $dkgL['Mg'];
      
   $kJmolH2 = 285.8;  // to water
   $kJkGH2 = $kJmolH2 / $am['H2'] ;  // OK
   $MJkGH2 = $kJkGH2 ;               // OK
   $MJpLH2 = $MJkGH2 * $dkgL['H2-L'];
   
}
function print_moles_mg_steam()  
{ include(INCLUDE_GLOBALS);
  echo <<< MG_STEAM_1
 <p><a href="http://www.chemguide.co.uk/inorganic/group2/reacth2o.html" target="_blank">Reactions of Metals and Water</a></p>
  <p>Magnesium  combines with STEAM to produce Magnesium Oxide  and Hydrogen. </p>
  <p>
  <pre>
MG_STEAM_1;
  echo pATOM("Mg",1) . " + " .  pATOM("H",2) . pATOM("O",1);  
  echo " ==>" ; 
  echo pATOM("Mg",1) . pATOM("O",1) . " + " . pATOM("H",2) . " dH  -360 <em>kJ/mol</em></p>";
  echo <<< MG_STEAM_2
  <p>The hydrogen can then be burned with Air or Oxygen to produce water.
  <br /><a href="http://chemistry.about.com/od/physicalchemistrythermo/a/thermochemlaws.htm" target="_blank">H2O</a>: H2 (g) + 1/2 O2 (g) ==> H2O (l); dH = -285.8 <em>kJ/mol</em> <br />
    (Remove <a href="http://www.sciencegeek.net/Chemistry/taters/Unit7Thermochemical.htm" target="_blank">Latent Heat</a> 41 kJ/<em>mol</em> = -285.8 + 41 <em>kJ/mol</em> )</p>
MG_STEAM_2;

   echo "Check math by comparing liquid H /External O2";
   echo "<br />Total (from H2) is " . pV(-$kJmolH2) . " <em>kJ/mol</em>.";
   echo "<br />Atomic weight: " . pV($am['H2']) . " <em>g/mol</em>.";
   echo "<br />Density (L): " . pV($dkgL['H2-L']) . "<em> g/cm3</em>";
   echo "<br />Energy by mass : (" . pV($kJmolH2) . " <em>kJ/mol</em>)/(" . pV($am['H2']) . "<em>g/mol</em> )";
   echo "<br />     = " . pV($kJkGH2) . " <em>kJ/g</em>  = " . pV($MJkGH2) . " <em>MJ/kg</em>";
   echo "<br />Energy by volume: " . pV($MJpLH2) . "<em> MJ/L</em>";
   echo "<br />";
   echo "<br />Comparison to Wiki values<br /><br />";
   $lp_MJkGH2_calc = sprintf("%4.3f",$MJkGH2);
   $lp_MJkGH2_wiki = sprintf("%4.3f",$material_mj_per_kg[MAT_LHA]);
   $lp_MJkLH2_calc = sprintf("%4.3f",$MJkLH2);
   $lp_MJkLH2_wiki = sprintf("%4.3f",$material_mj_per_l[MAT_LHA]);
echo <<< WATER_TABLE
<table width="500" border="1" class="afTable"  style="background-color: $table_bgcolor[0];">
  <tr>
    <th scope="col" > </th>
    <th scope="col" width="200" align="right">Energy by Mass</th>
    <th scope="col" width="200" align="right">Energy by Volume</th>
  </tr>
  <tr>
    <th scope="row">Wiki</th>
    <td align="right">$lp_MJkGH2_wiki</td>
    <td align="right">$lp_MJkLH2_wiki</td>
  </tr>
  <tr>
    <th scope="row">Calculation</th>
    <td align="right">$lp_MJkGH2_calc</td>
    <td align="right">$lp_MJkLH2_wiki</td>
  </tr>
</table>
WATER_TABLE;

 
   $lp_kJmolMg = pV($kJmolMg);
   $lp_kJkGMG = pV($kJkGMG);
   $lp_MJkGMG = pV($MJkGMG);
   $lp_MJpLMG = pV($MJpLMG);
   
   echo <<< MG_DENS_1
  <br />
  Total (from Mg/Steam + H/O) is -{$kJmolMg} <em>kJ/mol</em>.
  Atomic weight    : {$am['Mg']} <em>g/mol</em>
  Density          : {$dkgL['Mg']} <em>g/cm3</em>
  Energy by mass   :  ({$lp_kJmolMg} <em>kJ/mol</em>) / ({$am['Mg']} <em>g/mol</em>)  = $lp_kJkGMG <em>kJ/g</em> 
                     = $lp_MJkGMG <em>MJ/kg </em>
  Energy by volume : {$lp_MJpLMG } <em>MJ/L</em>
  </pre>
MG_DENS_1;
}

calc_moles();
calc_moles_mg_steam();
?>

Print 'mole' Values: fake_rossi_ecat_moles_v311.php

<h1><?php do_level_1(); ?> Calculations</h1>
 <h2><?php do_level_2(); ?> Wiki Energy Densities</h2>
<div class="oneColLiqCtrHdrDiv2">
<p>The Wiki of Energy Densities doesn't have entries for all cases where (for instance) Hydrogen is used with Compressed or Liquid Oxygen.</p>
<p>This section calculates how much the "wiki" Energy Densities by Mass and by Volume are reduced if the available space has to be shared between the Hydrogen and Oxygen.</p>
<p> </p>
<h2><?php do_level_2(); ?> Reference Documents</h2>
    <div class="oneColLiqCtrHdrDiv2">
<p><a href="http://en.wikipedia.org/wiki/Hydrogen" target="_blank">Wiki : Hydrogen </a>***<br />
  <a href="http://en.wikipedia.org/wiki/Oxygen" target="_blank">Wiki: Oxygen</a> ***<br />
  
</p>
<p><a href="http://en.wikipedia.org/wiki/Amount_of_substance" target="_blank">Amount of Substance</a><br />
    <a href="http://en.wikipedia.org/wiki/Molar_volume" target="_blank">Molar Volume</a><br />
<a href="http://en.wikipedia.org/wiki/Molar_mass" target="_blank">Molar Mass</a> g/mol</p>
	<p><a href="http://www.webqc.org/periodictable-Boron-B.html" target="_blank">Periodic Table with Properties</a><br />
      <a href="http://en.wikipedia.org/wiki/Liquid_hydrogen" target="_blank">Liquid Hydrogen</a><br />
        <a href="http://ie.jrc.ec.europa.eu/publications/scientific_publications/2003/P2003-181=EUR20995EN.pdf" target="_blank">Hydrogen</a><br />
      <a href="http://www.sse.gr/NATO/EreunaKaiTexnologiaNATO/2.Fuel_cells_for_land_sea_and_air_vehicles/RTO-TR-AVT-103/TR-AVT-103-06.pdf" target="_blank">Oxygen Storage</a>    <br />
      <a href="http://www.seasdtc.com/events/2008_conference/downloads/pdf/propulsion_power_generation_and_energy_management/PPEM003_paper.pdf" target="_blank">Hydrogen/LOX storage</a>    </p>
</div>
<h2><?php do_level_2(); ?> Atoms and Molecules</h2>
    <pre><?php
	echo <<< HYDR_1
	H    mass {$am['H']}	
	H2   mass {$am['H2']} 
	     Gas          Density : {$dkgL['H2']} kg/L
	     Compressed   Density : {$dkgL['H2-700B']} kg/L  (700 Bar)
	     Liquid       Density : {$dkgL['H2-L']} kg/L
		 
	O    mass {$am['O']}	
	O2   mass {$am['O2']} 
	     Gas          Density : {$dkgL['O2']} kg/L
	     Compressed   Density : {$dkgL['O2-700B']} kg/L  (700 Bar)
	     Liquid       Density : {$dkgL['O2-L']} kg/L
		 
	B    mass {$am['B']}	
	     Solid  Density : {$dkgL['B']} kg/L
HYDR_1;
    ?></pre>
 <?php af_feed(); ?>
<h2><?php do_level_2(); ?> Compressed hydrogen + Compressed Oxygen</h2>
<div class="oneColLiqCtrHdrDiv2">
     <?php print_moles_ab('CH-CO'); ?>
</div>
<h2><?php do_level_2(); ?> Liquid hydrogen + Liquid Oxygen</h2>
<div class="oneColLiqCtrHdrDiv2">
    <?php print_moles_ab('LH-LO'); ?>
</div>
 <?php af_feed(); ?>
<h2><?php do_level_2(); ?> Boron + Compressed Oxygen</h2>
<div class="oneColLiqCtrHdrDiv2">
     <?php print_moles_ab('B-CO'); ?>
</div>
<h2><?php do_level_2(); ?> Boron + Liquid Oxygen</h2>
<div class="oneColLiqCtrHdrDiv2">
    <?php print_moles_ab('B-LO'); ?>
</div> <?php af_feed(); ?>
<h2><?php do_level_2(); ?> Magnesium and Steam</h2>
<div class="oneColLiqCtrHdrDiv2">
    <?php print_moles_mg_steam(); ?>
</div>

 <h2><?php do_level_2(); ?> Embedded Calculations</h2>
 <div class="oneColLiqCtrHdrDiv2">
 <p>All calculations in this document are performed with the PHP programming language which generates the document.</p>
 <p><a href="http://lenr.qumbu.com/fake_rossi_source_v311.php">Partial PHP Source Code</a></p>
 </div>
</div>

The body of the report also contains PHP function calls and expressions.

Samples of these calls are in

Caclulator Test page

Function Calls: fake_rossi_ecat_calctest_v305.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<?php $version_num = 3.05;
      $version = "Version " . $version_num . ", March 18, 2011"; 
	  $title = "Calculator Test Page" ;?>
      
<?php include_once("fake_rossi_ecat_includes_v305.php"); ?>
<?php include_once("fake_rossi_ecat_v1_email.php"); ?>
<?php include_once("fake_rossi_ecat_calc_v305.php"); ?>
</head>

<body class="oneColLiqCtrHdr">

<div id="container">
  <div id="header">
    <h1>How to Make and Detect a FAKE Rossi/Focardi eCAT LENR<br />Energy Calculator Test Page</h1>
    
    <p>Alan Fletcher
      <!-- end #header -->
      <br />
      Version 305, March 18, 2011<br />
    </p>
    </div>
<div id="mainContent">


 <h1><?php do_level_1(); ?> Calculator Test</h1>
 
 <p>Convert <?php printf("1 MJ  = %5.4f  KWH",AF_MJ2KWH); ?> Obtained from : <a href="http://www.convertworld.com/en/energy/kWh.html" target="_blank">convertworld.com</a>
   <!-- end #mainContent -->
  </p>
 <pre><?php  
         set_section(AF_C,"Control Box","Ctrl",60,123);
		 if($dbg>9)
         { print_section(AF_C);
		 echo "<br />"; }
		 set_section(AF_H,"Horizontal Arm","Horz",21,345);
         if ($dbg> 9 ) { print_section(AF_H);
		 echo "<br />"; }
		 set_section(AF_V,"Vertical Arm","Vert",9,34.56);
         if($dbg > 9) { print_section(AF_V);  }
		 echo "<br />"; 
		 set_section(AF_R,"Reactor","React",1,0);
         if($dbg > 9) { print_section(AF_R);  }
  ?></pre>


NOTE: These  are just <strong>TEST</strong> values  


<p/>Sections: 
  <p>
  <?php print_section_table(1,9);
  ?>
  
 
  </p>
  <pre><?php  
         
         set_material(1,"None","-",0,0,0);
         set_material(2,"Lithium Ion Battery","Li/i Bat",12,34,56);	 
         set_material(3,"Compressed Hydrogen + Air Fuel Cell","H/Air FC",98,76,54);
		 if($dbg>9)
		 { 
         print_material(1);
		 echo "<br />";	 
         print_material(2);
		 echo "<br />";	 
         print_material(3);
		 echo "<br />";	 
         print_material(4);
		 echo "<br />";
		 }
  ?></pre>
  Materials
  <p>
  
  <?php  print_material_table(1,$material_max);
  ?>
  <p>Experiments :</p>
  <?php 
        IF($dbg>0) ECHO "<p>(Some debug switches are turned on )</p>\n";
        set_expt(1,"Experiment 1","Expt-1",10,8,"January");
        set_expt_sec(AF_C,1);	
        set_expt_sec(AF_H,2);	
        set_expt_sec(AF_V,3);
		if($dbg>3)
		{ print_expt(1);
		}
		set_expt(3,"Experiment 2","Expt-2",16,18,"February");
        set_expt_sec(AF_C,1);	
        set_expt_sec(AF_R,2);	
        set_expt_sec(AF_V,1);
		if($dbg>3)
		{ print_expt(3);
		}
  ?>
  
  ?> <br />Version 4
  <?php  print_expt_table_v4(1,$expt_max,false); 
  ?>
  <p>GREEN if ROSSI is confirmed, RED if it COULD be a fake.</p>
  <p> </p>
  
</div>
  <div id="footer">
    <p>Version 1, March 5, 2011  <?php send_email(); ?>   <a href="http://lenr.qumbu.com/" target="_blank">Home</a></p>
    <!-- end #footer --></div>
<!-- end #container --></div>
</body>
</html>

Disclaimer: Like Topsy, the programming aspects of this paper just "growed".