В настоящее время я работаю над плагином, в котором мне нужно получить текущую систему единиц в буревестнике (т.е. в полевой или в метрической системе). Как его получить?
Получить текущую систему единиц в Petrel
Ответы (2)
Чтобы получить инвариантную единицу измерения (данные единицы хранятся в):
var invUnit = PetrelUnitSystem.GetInvariantUnit(someTemplate);
Чтобы получить единицу измерения, используемую в настоящее время системой/проектом:
var dispUnit = PetrelUnitSystem.GetDisplayUnit(someTemplate);
Преобразователь для преобразования между ними.
var convInvDisp = PetrelUnitSystem.GetConverter(invUnit, dispUnit);
var fahrenheit=convInvDisp.Convert(100);
person
Tessem
schedule
15.04.2014
Вы имеете в виду систему единиц для случая моделирования (которая будет либо полевой, либо метрической)?
Я боюсь, что «Модули моделирования» не доступны через Ocean API.
Однако вы можете проверить, является ли каждый (экспортированный) случай моделирования FIELD или METRIC, проверив наличие ключевого слова FIELD или METRIC в колоде ECLIPSE.
Следующий фрагмент будет проходить через обращения и выводить независимо от того, являются ли они ПОЛЕВЫМИ или МЕТРИЧЕСКИМИ.
using (ITransaction trans = DataManager.NewTransaction())
{
SimulationRoot SimRoot = SimulationRoot.Get(PetrelProject.PrimaryProject);
foreach (Case Case in SimRoot.Cases)
{
EclipseKeywordEditor editor = SimulationSystem.CreateEclipseKeywordEditor(Case);
trans.Lock(editor);
foreach (EclipseKeyword keyword in editor.Sections.RunSpec.GetAll("FIELD"))
{
// found FIELD keyword
PetrelLogger.InfoOutputWindow(String.Format("### Case {0} is FIELD", Case.Name));
}
foreach (EclipseKeyword keyword in editor.Sections.RunSpec.GetAll("METRIC"))
{
// found METRIC keyword
PetrelLogger.InfoOutputWindow(String.Format("### Case {0} is METRIC", Case.Name));
}
}
trans.Commit();
}
person
Chippy
schedule
23.04.2014