00001
00008 #include <orb.idl>
00009 #include "common.idl"
00010
00011 module rock {
00012
00015 struct RockStatus {
00017 long long timeCreated;
00019 long long timeLastAccessed;
00021 string status;
00023 string ior;
00025 long pid;
00027 long identifier;
00029 common::ClientData client;
00030 };
00031
00034 interface dRock {
00043 enum fO2Type {fo2_none,fo2_hm,fo2_nno,fo2_qfm,fo2_iw};
00044
00052 enum findRockLiquidusStatus {frl_success,frl_max_t,frl_min_t,frl_time};
00053
00070 enum equilibrateStatus {equil_success,equil_quad_max,equil_lin_zero,
00071 equil_lin_max,equil_sat_max,equil_add_drop_max,equil_add_liquid_1,
00072 equil_add_liquid_2,equil_add_liquid_3,equil_rank,equil_solidus,
00073 equil_phase_rule,equil_time};
00074
00076 void setTk(in double ltk);
00078 void setPa(in double lpa);
00080 void setlogfo2(in fO2Type mode,in double delta);
00082 void supressPhase(in short iphase);
00084 void enablePhase(in short iphase);
00086 void setIsenthalpic(in boolean i);
00088 void setIsentropic(in boolean i);
00090 void setIsochoric(in boolean i);
00092 void setBulkCompM(in CORBA::DoubleSeq bc);
00094 void setBulkCompW(in CORBA::DoubleSeq bc);
00096 void fractionateSolids(in double scale);
00098 void setVolume(in double v);
00100 void setEnthalpy(in double h);
00102 void setEntropy(in double s);
00103
00105 double getTk();
00107 double getPa();
00109 short getNcomp();
00111 short getNLiqComp();
00113 short getNSolPhases();
00115 string getSolPhaseName(in short i);
00119 string getSolPhaseFormula(in short i, in short j);
00121 short getNSolComp(in short i);
00126 string getSolPhaseCompName(in short i, in short j);
00131 string getSolPhaseCompFormula(in short i, in short j);
00133 string getCompName(in short i);
00135 string getLiqCompName(in short i);
00137 CORBA::DoubleSeq getLiqComp();
00139 CORBA::DoubleSeq getLiqCompWt();
00141 CORBA::DoubleSeq getLiqMu();
00143 CORBA::DoubleSeq getLiqActivity();
00145 short getNSatSolid();
00147 CORBA::ShortSeq getSatSolidList();
00153 short getSolComp(in short iphase,in short instance,out CORBA::DoubleSeq sx);
00159 short getSolCompWt(in short iphase,in short instance,out CORBA::DoubleSeq sx);
00165 short getSolMu(in short iphase,in short instance,out CORBA::DoubleSeq smu);
00172 double getAffinity(in short iphase, out CORBA::DoubleSeq x);
00174 short getSolVbar(in short iphase,in short instance,out CORBA::DoubleSeq svbar);
00176 double getlogfo2();
00178 double getlogfo2relative(in fO2Type mode);
00180 CORBA::DoubleSeq getBulkCompM();
00182 CORBA::DoubleSeq getBulkCompW();
00184 double getLiquidMass();
00186 double getSolidMass();
00188 double getSolPhaseMass(in short iphase,in short instance);
00190 double getVolume();
00192 double getSolidGibbsFreeEnergyTotal();
00194 double getSolidEnthalpyTotal();
00196 double getSolidEntropyTotal();
00198 double getSolidHeatCapacityTotal();
00200 double getSolidVolumeTotal();
00202 double getSolidGibbsFreeEnergy(in short iphase,in short instance);
00204 double getSolidEnthalpy(in short iphase,in short instance);
00206 double getSolidEntropy(in short iphase,in short instance);
00208 double getSolidHeatCapacity(in short iphase,in short instance);
00210 double getSolidVolume(in short iphase,in short instance);
00212 double getSoliddVdT(in short iphase,in short instance);
00214 double getSoliddVdP(in short iphase,in short instance);
00216 double getDeltaOxygen();
00218 double getOxygenGibbsFreeEnergy();
00220 double getOxygenEnthalpy();
00222 double getOxygenEntropy();
00224 double getOxygenHeatCapacity();
00226 double getOxygenVolume();
00228 double getLiquidGibbsFreeEnergy();
00230 double getLiquidEnthalpy();
00232 double getLiquidEntropy();
00234 double getLiquidHeatCapacity();
00236 double getLiquidVolume();
00238 double getLiquiddVdT();
00240 double getLiquiddVdP();
00242 double getLiquidViscosity();
00243
00244
00246 short getPhaseNo(in string lab);
00248 boolean isSingleComponent(in short iphase);
00250 short getNumberCoexistPhase(in short iphase);
00252 short findRockLiquidus();
00254 short equilibrateRock();
00255
00256
00258 long long getLastAccessTime();
00260 unsigned short isActive();
00262 string getStatus();
00264 void remove();
00265 };
00266
00269 interface RockFactory {
00271 dRock spawnRock(in common::ClientData cd);
00272 };
00273
00276 interface RockManager {
00277 typedef sequence<RockStatus> StatSeq;
00278
00280 short getGracePeriod();
00282 void setGracePeriod(in short sec);
00283
00285 void add(in dRock dpv,in long pid,in common::ClientData cd);
00286
00288 short getNrock();
00289
00291 StatSeq getStatus();
00292
00295 double getLoad(in short p);
00296
00298 long getFreeMemory();
00299
00301 long getAllocatedMemory();
00302
00304 void update();
00305
00308 void remove(in long i);
00309
00312 void apoptosize(in long i);
00313 };
00314
00315 };
00316