81,092
社区成员
发帖
与我相关
我的任务
分享
package dxj.draw.computer;
import com.dataset.SResultSetEx;
import dxj.draw.model.Well;
import dxj.draw.model.WellManager;
import dxj.math.design.Section2Point;
import dxj.util.DxjUtil;
public class UtilSectionComputer implements ICompute {
static double m = 20; // 明细点间隔
static int n = 25; // 造斜率单位
public double[][] compute(SResultSetEx rs, String[] pname, String[] pvalue) {
// 计算井眼轨迹
String id00 = "1";
String pointDeep = "0";
double dpointDeep; // 造斜点垂深
double firstBuildRate = 0;// 第一造斜率
double secondBuildRate = 0;// 第二造斜率
double firstBuildupObliqueAngle = 0;// 第一段圆弧结束时的井斜角
double secondBuildupObliqueAngle = 0;// 第二段圆弧结束时的井斜角
double secondStableVerticalDeep = 0;// 第二稳定段垂深增量(五段制中要用到)
String wellType = ""; // 井的轨迹类型
for (int i = 0; i < pname.length; i++) {
if (pname[i].equals("id00")) {
id00 = pvalue[i];
}
if (pname[i].equals("zxdcs")) {
pointDeep = pvalue[i];
}
if (pname[i].equals("zxl")) {
firstBuildRate = DxjUtil.parseDouble(pvalue[i]);
}
if (pname[i].equals("jxl")) {
secondBuildRate = DxjUtil.parseDouble(pvalue[i]);
}
if (pname[i].equals("jsjxj")) {
firstBuildupObliqueAngle = DxjUtil.parseDouble(pvalue[i]);
}
if (pname[i].equals("xzjxj")) {
secondBuildupObliqueAngle = DxjUtil.parseDouble(pvalue[i]);
}
if (pname[i].equals("cz")) {
secondStableVerticalDeep = DxjUtil.parseDouble(pvalue[i]);
}
if (pname[i].equals("computer")) {
wellType = pvalue[i];
}
}
dpointDeep = DxjUtil.parseDouble(pointDeep);
// 两段式计算结果
WellManager wellManager=new WellManager();
double[][] sectionDetails = wellManager.sectionPoint(rs, id00,
dpointDeep, firstBuildRate, secondBuildRate,
firstBuildupObliqueAngle, secondBuildupObliqueAngle,
secondStableVerticalDeep, wellType);
double[][] result = new double[sectionDetails.length][];
for (int i = 0; i < result.length; i++) {
result[i] = new double[2];
result[i][0] = Math.sqrt(sectionDetails[i][4]
* sectionDetails[i][4] + sectionDetails[i][5]
* sectionDetails[i][5]);
result[i][1] = sectionDetails[i][6];
}
return result;
}
}