Advertisement
EditorRUS

Microatmos

Jul 26th, 2014
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. const
  2. MTEMP = 393.15;
  3. PLSM = 200;
  4. OXY = 20;
  5. CDO = 30;
  6. BURN_ENRG = 397000;
  7. FRLLEVEL = 25;
  8.  
  9. var
  10. temp: real;
  11. oxygen: real;
  12. plasma: real;
  13. co2: real;
  14.  
  15.  
  16. function FireLevel():real; begin
  17. var total_fuel := 0.0;
  18.  
  19. total_fuel += plasma + oxygen;
  20.  
  21. var damp := total_fuel / (total_fuel + co2); //total_combustables / (total_combustables + nitrogen + carbon_dioxide)
  22. var mix := 1 / (1 + (5 * power(oxygen / total_fuel, 2))); //var/mix_multiplier = 1 / (1 + (5 * ((oxygen / total_combustables) ** 2)))
  23.  
  24. result := max(FRLLEVEL * mix * damp, 0);
  25.  
  26. end;
  27.  
  28. function ZBurn():boolean;
  29. begin
  30. result := true;
  31. if (temp >= MTEMP) then begin
  32. var total_fuel := 0.0;
  33.  
  34. total_fuel += plasma;
  35.  
  36. if (total_fuel = 0) then begin result := false; exit; end;
  37.  
  38. var frlv := FireLevel();
  39.  
  40. var strt_enrg := temp * ( (PLSM * plasma) + (OXY * oxygen) + (CDO * co2));
  41.  
  42. var total_oxy := min (oxygen, total_fuel * 2);
  43.  
  44. var usd_fuel_rat := min (oxygen / 2, total_fuel) / total_fuel;
  45. total_fuel *= usd_fuel_rat;
  46.  
  47. var total_react := total_fuel + total_oxy;
  48.  
  49. var used_react_rat := min( max( total_react * frlv / FRLLEVEL, 0.2), total_react) / total_react;
  50.  
  51. oxygen -= min ( oxygen, total_oxy * used_react_rat );
  52. plasma -= min ( plasma, (plasma*usd_fuel_rat*used_react_rat)*3);
  53. if plasma < 0 then plasma := 0;
  54.  
  55. co2 += max(2*total_fuel, 0);
  56.  
  57. temp := (strt_enrg + BURN_ENRG * total_fuel) / ( (PLSM*plasma) + (OXY*oxygen) + (CDO * co2));
  58. end;
  59. end;
  60.  
  61. begin
  62. plasma := 3;
  63. oxygen := 2;
  64. temp := 393.16;
  65. for var i := 1 to 3500000 do begin
  66. if not zburn() then break;
  67. end;
  68. writeln( co2 );
  69. writeln( plasma );
  70. writeln( oxygen );
  71. writeln( temp );
  72. writeln( ((PLSM*plasma) + (OXY*oxygen) + (CDO * co2)) * temp );
  73. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement