|
|
|
@ -44,6 +44,7 @@ DEFAULT_CASE = {
|
|
|
|
"wellboreC": 0.01,
|
|
|
|
"wellboreC": 0.01,
|
|
|
|
"phi": 0.0245,
|
|
|
|
"phi": 0.0245,
|
|
|
|
"h": 9.144,
|
|
|
|
"h": 9.144,
|
|
|
|
|
|
|
|
"Ct": 1.0e-3,
|
|
|
|
"Cf": 0.0004315,
|
|
|
|
"Cf": 0.0004315,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -82,6 +83,7 @@ def parse_args() -> argparse.Namespace:
|
|
|
|
parser.add_argument("--wellboreC", type=float, default=DEFAULT_CASE["params"]["wellboreC"])
|
|
|
|
parser.add_argument("--wellboreC", type=float, default=DEFAULT_CASE["params"]["wellboreC"])
|
|
|
|
parser.add_argument("--phi", type=float, default=DEFAULT_CASE["params"]["phi"])
|
|
|
|
parser.add_argument("--phi", type=float, default=DEFAULT_CASE["params"]["phi"])
|
|
|
|
parser.add_argument("--h", type=float, default=DEFAULT_CASE["params"]["h"])
|
|
|
|
parser.add_argument("--h", type=float, default=DEFAULT_CASE["params"]["h"])
|
|
|
|
|
|
|
|
parser.add_argument("--Ct", type=float, default=DEFAULT_CASE["params"]["Ct"])
|
|
|
|
parser.add_argument("--Cf", type=float, default=DEFAULT_CASE["params"]["Cf"])
|
|
|
|
parser.add_argument("--Cf", type=float, default=DEFAULT_CASE["params"]["Cf"])
|
|
|
|
return parser.parse_args()
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
|
|
|
|
|
|
@ -151,6 +153,7 @@ def build_params_from_args(args: argparse.Namespace, schedule: Schedule) -> Para
|
|
|
|
wellboreC=float(args.wellboreC),
|
|
|
|
wellboreC=float(args.wellboreC),
|
|
|
|
phi=float(args.phi),
|
|
|
|
phi=float(args.phi),
|
|
|
|
h=float(args.h),
|
|
|
|
h=float(args.h),
|
|
|
|
|
|
|
|
Ct=float(args.Ct),
|
|
|
|
Cf=float(args.Cf),
|
|
|
|
Cf=float(args.Cf),
|
|
|
|
schedule=schedule,
|
|
|
|
schedule=schedule,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
@ -197,7 +200,7 @@ def predict_surrogate_curve(
|
|
|
|
param_transform = param_feature_transform_from_meta(processed.get("meta", {}))
|
|
|
|
param_transform = param_feature_transform_from_meta(processed.get("meta", {}))
|
|
|
|
|
|
|
|
|
|
|
|
params_vec = np.asarray(
|
|
|
|
params_vec = np.asarray(
|
|
|
|
[params.k, params.skin, params.wellboreC, params.phi, params.h, params.Cf],
|
|
|
|
[params.k, params.skin, params.wellboreC, params.phi, params.h, params.Ct, params.Cf],
|
|
|
|
dtype=np.float32,
|
|
|
|
dtype=np.float32,
|
|
|
|
).reshape(1, -1)
|
|
|
|
).reshape(1, -1)
|
|
|
|
schedule_vec = build_schedule_vector(cfg, schedule).reshape(1, -1)
|
|
|
|
schedule_vec = build_schedule_vector(cfg, schedule).reshape(1, -1)
|
|
|
|
@ -314,6 +317,7 @@ def _sample_local_candidates(cfg: Config, base: Params, n: int, seed: int, span_
|
|
|
|
"wellboreC": float(base.wellboreC),
|
|
|
|
"wellboreC": float(base.wellboreC),
|
|
|
|
"phi": float(base.phi),
|
|
|
|
"phi": float(base.phi),
|
|
|
|
"h": float(base.h),
|
|
|
|
"h": float(base.h),
|
|
|
|
|
|
|
|
"Ct": float(base.Ct),
|
|
|
|
"Cf": float(base.Cf),
|
|
|
|
"Cf": float(base.Cf),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -352,6 +356,7 @@ def _sample_local_candidates(cfg: Config, base: Params, n: int, seed: int, span_
|
|
|
|
wellboreC=cand["wellboreC"],
|
|
|
|
wellboreC=cand["wellboreC"],
|
|
|
|
phi=cand["phi"],
|
|
|
|
phi=cand["phi"],
|
|
|
|
h=cand["h"],
|
|
|
|
h=cand["h"],
|
|
|
|
|
|
|
|
Ct=cand["Ct"],
|
|
|
|
Cf=cand["Cf"],
|
|
|
|
Cf=cand["Cf"],
|
|
|
|
schedule=base.schedule,
|
|
|
|
schedule=base.schedule,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
@ -367,6 +372,7 @@ def _params_to_dict(params: Params) -> dict:
|
|
|
|
"wellboreC": float(params.wellboreC),
|
|
|
|
"wellboreC": float(params.wellboreC),
|
|
|
|
"phi": float(params.phi),
|
|
|
|
"phi": float(params.phi),
|
|
|
|
"h": float(params.h),
|
|
|
|
"h": float(params.h),
|
|
|
|
|
|
|
|
"Ct": float(params.Ct),
|
|
|
|
"Cf": float(params.Cf),
|
|
|
|
"Cf": float(params.Cf),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -487,6 +493,7 @@ def main() -> None:
|
|
|
|
"wellboreC": cand.wellboreC,
|
|
|
|
"wellboreC": cand.wellboreC,
|
|
|
|
"phi": cand.phi,
|
|
|
|
"phi": cand.phi,
|
|
|
|
"h": cand.h,
|
|
|
|
"h": cand.h,
|
|
|
|
|
|
|
|
"Ct": cand.Ct,
|
|
|
|
"Cf": cand.Cf,
|
|
|
|
"Cf": cand.Cf,
|
|
|
|
"solver_objective": solver_obj["dual_log_objective"],
|
|
|
|
"solver_objective": solver_obj["dual_log_objective"],
|
|
|
|
"solver_p_obj": solver_obj["log_pressure_objective"],
|
|
|
|
"solver_p_obj": solver_obj["log_pressure_objective"],
|
|
|
|
@ -505,7 +512,7 @@ def main() -> None:
|
|
|
|
"[warn] candidate attempt "
|
|
|
|
"[warn] candidate attempt "
|
|
|
|
f"{attempt_idx} skipped: {exc} | "
|
|
|
|
f"{attempt_idx} skipped: {exc} | "
|
|
|
|
f"k={cand.k:.6g}, skin={cand.skin:.6g}, C={cand.wellboreC:.6g}, "
|
|
|
|
f"k={cand.k:.6g}, skin={cand.skin:.6g}, C={cand.wellboreC:.6g}, "
|
|
|
|
f"phi={cand.phi:.6g}, h={cand.h:.6g}, Cf={cand.Cf:.6g}"
|
|
|
|
f"phi={cand.phi:.6g}, h={cand.h:.6g}, Ct={cand.Ct:.6g}, Cf={cand.Cf:.6g}"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
finally:
|
|
|
|
finally:
|
|
|
|
if shared_runner is None:
|
|
|
|
if shared_runner is None:
|
|
|
|
@ -544,6 +551,7 @@ def main() -> None:
|
|
|
|
"wellboreC": target_params.wellboreC,
|
|
|
|
"wellboreC": target_params.wellboreC,
|
|
|
|
"phi": target_params.phi,
|
|
|
|
"phi": target_params.phi,
|
|
|
|
"h": target_params.h,
|
|
|
|
"h": target_params.h,
|
|
|
|
|
|
|
|
"Ct": target_params.Ct,
|
|
|
|
"Cf": target_params.Cf,
|
|
|
|
"Cf": target_params.Cf,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"schedule": {
|
|
|
|
"schedule": {
|
|
|
|
@ -580,6 +588,7 @@ def main() -> None:
|
|
|
|
"wellboreC",
|
|
|
|
"wellboreC",
|
|
|
|
"phi",
|
|
|
|
"phi",
|
|
|
|
"h",
|
|
|
|
"h",
|
|
|
|
|
|
|
|
"Ct",
|
|
|
|
"Cf",
|
|
|
|
"Cf",
|
|
|
|
"solver_objective",
|
|
|
|
"solver_objective",
|
|
|
|
"solver_p_obj",
|
|
|
|
"solver_p_obj",
|
|
|
|
@ -600,7 +609,7 @@ def main() -> None:
|
|
|
|
with open(failed_csv_path, "w", newline="", encoding="utf-8") as f:
|
|
|
|
with open(failed_csv_path, "w", newline="", encoding="utf-8") as f:
|
|
|
|
writer = csv.DictWriter(
|
|
|
|
writer = csv.DictWriter(
|
|
|
|
f,
|
|
|
|
f,
|
|
|
|
fieldnames=["attempt_id", "reason", "k", "skin", "wellboreC", "phi", "h", "Cf"],
|
|
|
|
fieldnames=["attempt_id", "reason", "k", "skin", "wellboreC", "phi", "h", "Ct", "Cf"],
|
|
|
|
)
|
|
|
|
)
|
|
|
|
writer.writeheader()
|
|
|
|
writer.writeheader()
|
|
|
|
writer.writerows(failed_rows)
|
|
|
|
writer.writerows(failed_rows)
|
|
|
|
|