Changeset 1207


Ignore:
Timestamp:
07/01/09 17:09:41 (16 years ago)
Author:
Mathieu Morlighem
Message:

Added routine needed fr Stokes

Location:
issm/trunk/src/m/solutions/cielo
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/solutions/cielo/control_core.m

    r1205 r1207  
    88%recover models
    99m_dh=models.dh;
     10m_dv=models.dv;
     11m_ds=models.ds;
     12m_sl=models.sl;
    1013
    1114%recover parameters common to all solutions
     
    2225options=ControlOptions(m_dh.parameters);
    2326
     27%Take car of Stokes : compute slope and get spc once for all
     28if isstokes,
     29        [inputs m_ds]=ControlProcessStokes(models,inputs);
     30end
     31
    2432for n=1:m_dh.parameters.nsteps,
    2533
     
    3442
    3543        %Update inputs in datasets
    36         [m_dh.elements,m_dh.nodes,m_dh.loads,m_dh.materials]=UpdateFromInputs(m_dh.elements,m_dh.nodes,m_dh.loads,m_dh.materials,inputs);
     44        if isstokes,
     45                [m_ds.elements,m_ds.nodes,m_ds.loads,m_ds.materials]=UpdateFromInputs(m_ds.elements,m_ds.nodes,m_ds.loads,m_ds.materials,inputs);
     46        else
     47                [m_dh.elements,m_dh.nodes,m_dh.loads,m_dh.materials]=UpdateFromInputs(m_dh.elements,m_dh.nodes,m_dh.loads,m_dh.materials,inputs);
     48        end
    3749
    3850        displaystring(debug,'\n%s',['      computing gradJ...']);
    39         [u_g c(n).grad_g]=GradJCompute(m_dh,inputs,'diagnostic','horiz');
    40         inputs=add(inputs,'velocity',u_g,'doublevec',2,m_dh.parameters.numberofnodes);
     51        if isstokes,
     52                [u_g c(n).grad_g]=GradJCompute(m_ds,inputs,'diagnostic','stokes');
     53                inputs=add(inputs,'velocity',u_g,'doublevec',4,m_ds.parameters.numberofnodes);
     54        else
     55                [u_g c(n).grad_g]=GradJCompute(m_dh,inputs,'diagnostic','horiz');
     56                inputs=add(inputs,'velocity',u_g,'doublevec',2,m_dh.parameters.numberofnodes);
     57        end
    4158
    4259        displaystring(debug,'\n%s',['      normalizing directions...']);
     
    5370
    5471        displaystring(debug,'\n%s',['      optimizing along gradient direction...']);
    55         [search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_dh,inputs,param_g,c(n).grad_g,n,'diagnostic','horiz');
     72        if isstokes,
     73                [search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_ds,inputs,param_g,c(n).grad_g,n,'diagnostic','stokes');
     74        else
     75                [search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_dh,inputs,param_g,c(n).grad_g,n,'diagnostic','horiz');
     76        end
    5677
    5778        displaystring(debug,'\n%s',['      updating parameter using optimized search scalar...']);
  • issm/trunk/src/m/solutions/cielo/objectivefunctionC.m

    r1185 r1207  
    1414%Run diagnostic with updated parameters.
    1515u_g=diagnostic_core_nonlinear(m,inputs,analysis_type,sub_analysis_type);
    16 inputs=add(inputs,'velocity',u_g,'doublevec',2,m.parameters.numberofnodes);
     16inputs=add(inputs,'velocity',u_g,'doublevec',m.parameters.numberofdofspernode,m.parameters.numberofnodes);
    1717
    1818%Compute misfit for this velocity field.
Note: See TracChangeset for help on using the changeset viewer.