Hi,
I'm trying to compute the gradient by defining a objective function like this:
function objective_function(model, state, Δt, step_i, forces)
dif1 = JutulDarcy.compute_well_qoi(model, state, forces, :Producer1, SurfaceLiquidRateTarget) - obs_pro1[step_i]
dif2 = JutulDarcy.compute_well_qoi(model, state, forces, :Producer2, SurfaceLiquidRateTarget) - obs_pro2[step_i]
loss = sum(dif1.^2 + dif2.^2)
return loss
end
my observation data is:
obs_pro1= ws[:Producer1, :lrat]
obs_pro2= ws[:Producer2, :lrat]
However, the gradient computed based on this objective function seems not working quite well.
Therefore:
Is the function JutulDarcy.compute_well_qoi specifically designed for coarse and fine scale reservoir history matching?
Is it possible for me to access ws[:Producer1, :lrat] and ws[:Producer2, :lrat] through state in the objective function? ( I think JutulDarcy.compute_well_qoi is trying to complete this task, but it isn't giving me the right answer until now)
Thanks for your assistance!
Best regards,
Zhen
Hi,
I'm trying to compute the gradient by defining a objective function like this:
my observation data is:
obs_pro1= ws[:Producer1, :lrat]
obs_pro2= ws[:Producer2, :lrat]
However, the gradient computed based on this objective function seems not working quite well.
Therefore:
Is the function JutulDarcy.compute_well_qoi specifically designed for coarse and fine scale reservoir history matching?
Is it possible for me to access ws[:Producer1, :lrat] and ws[:Producer2, :lrat] through state in the objective function? ( I think JutulDarcy.compute_well_qoi is trying to complete this task, but it isn't giving me the right answer until now)
Thanks for your assistance!
Best regards,
Zhen