[1] | 1 | function J =objectivefunctionC(search_scalar,m,p_g,u_g_obs,grad_g,n);
|
---|
| 2 |
|
---|
| 3 | %recover some parameters
|
---|
| 4 | optscal=m.parameters.optscal(n);
|
---|
| 5 | fit=m.parameters.fit(n);
|
---|
| 6 | control_type=m.parameters.control_type;
|
---|
| 7 |
|
---|
| 8 | %Update along gradient using scalar supplied by fmincon optimization routine
|
---|
| 9 | parameter=p_g+search_scalar*optscal*grad_g;
|
---|
| 10 |
|
---|
| 11 | %Plug parameter into inputs
|
---|
[254] | 12 | inputs=parameterinputs;
|
---|
| 13 | inputs=add(inputs,'velocity',m.parameters.u_g,'doublevec',3,m.parameters.numberofnodes);
|
---|
[248] | 14 | inputs=add(inputs,m.parameters.control_type,parameter,'doublevec',2,m.parameters.numberofnodes);
|
---|
[1] | 15 |
|
---|
| 16 | %Run diagnostic with updated parameters.
|
---|
| 17 | u_g=diagnostic_core_nonlinear(m,inputs);
|
---|
| 18 |
|
---|
| 19 | %Compute misfit for this velocity field.
|
---|
[254] | 20 | inputs=add(inputs,'fit',m.parameters.fit(n),'double');
|
---|
[1] | 21 | J=Misfit(m.elements,m.nodes,m.loads,m.materials,m.parameters, u_g, u_g_obs,inputs);
|
---|