00001
00009 #include <orb.idl>
00010 #include "common.idl"
00011
00012 module rock {
00013
00016 struct RockStatus {
00018 long long timeCreated;
00020 long long timeLastAccessed;
00022 string status;
00024 string ior;
00026 long pid;
00028 long identifier;
00030 common::ClientData client;
00031 };
00032
00035 interface dRock {
00044 enum fO2Type {fo2_none,fo2_hm,fo2_nno,fo2_qfm,fo2_iw};
00045
00053 enum findRockLiquidusStatus {frl_success,frl_max_t,frl_min_t,frl_time};
00054
00071 enum equilibrateStatus {equil_success,equil_quad_max,equil_lin_zero,
00072 equil_lin_max,equil_sat_max,equil_add_drop_max,equil_add_liquid_1,
00073 equil_add_liquid_2,equil_add_liquid_3,equil_rank,equil_solidus,
00074 equil_phase_rule,equil_time};
00075
00077 void setTk(in double ltk);
00079 void setPa(in double lpa);
00081 void setlogfo2(in fO2Type mode,in double delta);
00083 void supressPhase(in short iphase);
00085 void enablePhase(in short iphase);
00087 void setIsenthalpic(in boolean i);
00089 void setIsentropic(in boolean i);
00091 void setIsochoric(in boolean i);
00093 void setBulkCompM(in CORBA::DoubleSeq bc);
00095 void setBulkCompW(in CORBA::DoubleSeq bc);
00097 void fractionateSolids(in double scale);
00099 void setVolume(in double v);
00101 void setEnthalpy(in double h);
00103 void setEntropy(in double s);
00104
00106 double getTk();
00108 double getPa();
00110 short getNcomp();
00112 short getNLiqComp();
00114 short getNSolPhases();
00116 string getSolPhaseName(in short i);
00120 string getSolPhaseFormula(in short i, in short j);
00122 short getNSolComp(in short i);
00127 string getSolPhaseCompName(in short i, in short j);
00132 string getSolPhaseCompFormula(in short i, in short j);
00134 string getCompName(in short i);
00136 string getLiqCompName(in short i);
00138 CORBA::DoubleSeq getLiqComp();
00140 CORBA::DoubleSeq getLiqCompWt();
00142 CORBA::DoubleSeq getLiqMu();
00144 CORBA::DoubleSeq getLiqActivity();
00146 short getNSatSolid();
00148 CORBA::ShortSeq getSatSolidList();
00154 short getSolComp(in short iphase,in short instance,out CORBA::DoubleSeq sx);
00160 short getSolCompWt(in short iphase,in short instance,out CORBA::DoubleSeq sx);
00166 short getSolMu(in short iphase,in short instance,out CORBA::DoubleSeq smu);
00173 double getAffinity(in short iphase, out CORBA::DoubleSeq x);
00175 short getSolVbar(in short iphase,in short instance,out CORBA::DoubleSeq svbar);
00177 double getlogfo2();
00179 double getlogfo2relative(in fO2Type mode);
00181 CORBA::DoubleSeq getBulkCompM();
00183 CORBA::DoubleSeq getBulkCompW();
00185 double getLiquidMass();
00187 double getSolidMass();
00189 double getSolPhaseMass(in short iphase,in short instance);
00191 double getVolume();
00193 double getSolidGibbsFreeEnergyTotal();
00195 double getSolidEnthalpyTotal();
00197 double getSolidEntropyTotal();
00199 double getSolidHeatCapacityTotal();
00201 double getSolidVolumeTotal();
00203 double getSolidGibbsFreeEnergy(in short iphase,in short instance);
00205 double getSolidEnthalpy(in short iphase,in short instance);
00207 double getSolidEntropy(in short iphase,in short instance);
00209 double getSolidHeatCapacity(in short iphase,in short instance);
00211 double getSolidVolume(in short iphase,in short instance);
00213 double getSoliddVdT(in short iphase,in short instance);
00215 double getSoliddVdP(in short iphase,in short instance);
00217 double getDeltaOxygen();
00219 double getOxygenGibbsFreeEnergy();
00221 double getOxygenEnthalpy();
00223 double getOxygenEntropy();
00225 double getOxygenHeatCapacity();
00227 double getOxygenVolume();
00229 double getLiquidGibbsFreeEnergy();
00231 double getLiquidEnthalpy();
00233 double getLiquidEntropy();
00235 double getLiquidHeatCapacity();
00237 double getLiquidVolume();
00239 double getLiquiddVdT();
00241 double getLiquiddVdP();
00243 double getLiquidViscosity();
00244
00245
00247 short getPhaseNo(in string lab);
00249 boolean isSingleComponent(in short iphase);
00251 short getNumberCoexistPhase(in short iphase);
00253 short findRockLiquidus();
00255 short equilibrateRock();
00256
00257
00259 long long getLastAccessTime();
00261 unsigned short isActive();
00263 string getStatus();
00265 void remove();
00266 };
00267
00270 interface RockFactory {
00272 dRock spawnRock(in common::ClientData cd);
00273 };
00274
00277 interface RockManager {
00278 typedef sequence<RockStatus> StatSeq;
00279
00281 short getGracePeriod();
00283 void setGracePeriod(in short sec);
00284
00286 void add(in dRock dpv,in long pid,in common::ClientData cd);
00287
00289 short getNrock();
00290
00292 StatSeq getStatus();
00293
00296 double getLoad(in short p);
00297
00299 long getFreeMemory();
00300
00302 long getAllocatedMemory();
00303
00305 void update();
00306
00309 void remove(in long i);
00310
00313 void apoptosize(in long i);
00314 };
00315
00316 };
00317