Changeset 3780


Ignore:
Timestamp:
05/17/10 11:21:00 (15 years ago)
Author:
Eric.Larour
Message:

diagnostic core now working

Location:
issm/trunk/src
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/parallel/diagnostic_core.cpp

    r3775 r3780  
    161161
    162162                        if(verbose)_printf_("%s\n"," update boundary conditions for stokes using velocities previously computed...");
    163                         xfree((void**)&dofset);dofset=dofsetgen(3,dof012,4,numberofnodes*4); VecMerge(fem_ds->yg->vector,ug,dofset,3*numberofnodes);
     163                        xfree((void**)&dofset);dofset=dofsetgen(2,dof01,4,numberofnodes*4); VecMerge(fem_ds->yg->vector,ug,dofset,2*numberofnodes);
     164                        xfree((void**)&dofset);dofset=dofsetgen(1,dof2,4,numberofnodes*4); VecMerge(fem_ds->yg->vector,ug_vert,dofset,1*numberofnodes);
    164165                        VecFree(&fem_ds->ys); VecFree(&fem_ds->ys0);
    165166                        Reducevectorgtosx(&fem_ds->ys,&fem_ds->ys0, fem_ds->yg->vector,fem_ds->nodesets);
  • issm/trunk/src/m/solutions/jpl/diagnostic_core.m

    r3773 r3780  
    33%
    44%   Usage:
    5 %      results=diagnostic_core(models);
     5%      results=diagnostic_core(model);
    66%
    77
    8 %recover models
    9 m_dh=models.dh;
    10 m_dv=models.dv;
    11 m_ds=models.ds;
    12 m_dhu=models.dhu;
    13 m_sl=models.sl;
     8%recover fem models
     9m_dh=model.dh;
     10m_dv=model.dv;
     11m_ds=model.ds;
     12m_dhu=model.dhu;
     13m_sl=model.sl;
    1414
    1515%recover parameters common to all solutions
     
    2525%for qmu analysis, be sure the velocity input we are starting from  is the one in the parameters:
    2626if qmu_analysis,
    27         ModelUpdateInputsFromVector(models,m_dh.vx,VxEnum,VertexEnum);
    28         ModelUpdateInputsFromVector(models,m_dh.vy,VyEnum,VertexEnum);
    29         ModelUpdateInputsFromVector(models,m_dh.vz,VzEnum,VertexEnum);
     27        ModelUpdateInputsFromVector(model,m_dh.vx,VxEnum,VertexEnum);
     28        ModelUpdateInputsFromVector(model,m_dh.vy,VyEnum,VertexEnum);
     29        ModelUpdateInputsFromVector(model,m_dh.vz,VzEnum,VertexEnum);
    3030end
    3131
     
    3535
    3636%Update:
    37 ModelUpdateInputsFromVector(models,surfaceslopex,SurfaceSlopexEnum,VertexEnum);
    38 ModelUpdateInputsFromVector(models,surfaceslopey,SurfaceSlopeyEnum,VertexEnum);
    39 ModelUpdateInputsFromVector(models,bedslopex,BedSlopexEnum,VertexEnum);
    40 ModelUpdateInputsFromVector(models,bedslopey,BedSlopeyEnum,VertexEnum);
     37ModelUpdateInputsFromVector(model,surfaceslopex,SurfaceSlopexEnum,VertexEnum);
     38ModelUpdateInputsFromVector(model,surfaceslopey,SurfaceSlopeyEnum,VertexEnum);
     39ModelUpdateInputsFromVector(model,bedslopex,BedSlopexEnum,VertexEnum);
     40ModelUpdateInputsFromVector(model,bedslopey,BedSlopeyEnum,VertexEnum);
    4141
    4242if ishutter,
     
    7373
    7474        [vx,vy]=SplitSolutionVector(ug,numberofnodes,numberofdofspernode_dh);
    75         model->UpdateInputsFromVector(vx,VxEnum,VertexEnum);
    76         model->UpdateInputsFromVector(vy,VyEnum,VertexEnum);
     75        ModelUpdateInputsFromVector(model,vx,VxEnum,VertexEnum);
     76        ModelUpdateInputsFromVector(model,vy,VyEnum,VertexEnum);
    7777               
    78 
    79 
    8078        displaystring(verbose,'\n%s',['computing vertical velocities...']);
    81         inputs=add(inputs,'velocity',u_g_horiz,'doublevec',m_dh.parameters.numberofdofspernode,m_dh.parameters.numberofnodes);
    82         u_g_vert=diagnostic_core_linear(m_dv,inputs,DiagnosticAnalysisEnum(),VertAnalysisEnum());
    83 
    84         displaystring(verbose,'\n%s',['combining horizontal and vertical velocities...']);
    85         u_g=zeros(m_dh.parameters.numberofnodes*3,1);
    86         u_g(dofsetgen([1,2],3,m_dh.parameters.numberofnodes*3))=u_g_horiz;
    87         u_g(dofsetgen([3],3,m_dh.parameters.numberofnodes*3))=u_g_vert;
     79        u_g_vert=diagnostic_core_linear(m_dv,DiagnosticAnalysisEnum(),VertAnalysisEnum());
     80        ModelUpdateInputsFromVector(model,u_g_vert,VzEnum,VertexEnum);
    8881
    8982        displaystring(verbose,'\n%s',['computing pressure according to Pattyn...']);
    90         p_g=ComputePressure(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,inputs,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
     83        p_g=ComputePressure(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
     84        ModelUpdateInputsFromVector(model,p_g,PressureEnum,VertexEnum);
    9185       
    9286        if isstokes,
     
    9589                p_g=p_g/m_ds.parameters.stokesreconditioning;
    9690
    97                 displaystring(verbose,'\n%s',['computing bed slope (x and y derivatives)...']);
    98                 slopex=diagnostic_core_linear(m_sl,inputs,SlopecomputeAnalysisEnum(),BedXAnalysisEnum());
    99                 slopey=diagnostic_core_linear(m_sl,inputs,SlopecomputeAnalysisEnum(),BedYAnalysisEnum());
    100                 slopex=FieldExtrude(m_sl.elements,m_sl.nodes,m_sl.vertices,m_sl.loads,m_sl.materials,m_sl.parameters,slopex,'slopex',0);
    101                 slopey=FieldExtrude(m_sl.elements,m_sl.nodes,m_sl.vertices,m_sl.loads,m_sl.materials,m_sl.parameters,slopey,'slopey',0);
    102 
    103                 inputs=add(inputs,'bedslopex',slopex,'doublevec',m_sl.parameters.numberofdofspernode,m_sl.parameters.numberofnodes);
    104                 inputs=add(inputs,'bedslopey',slopey,'doublevec',m_sl.parameters.numberofdofspernode,m_sl.parameters.numberofnodes);
    105                
    106                 %recombine u_g and p_g:
    107                 u_g_stokes=zeros(m_ds.nodesets.gsize,1);
    108                 u_g_stokes(dofsetgen([1,2,3],4,m_ds.nodesets.gsize))=u_g;
    109                 u_g_stokes(dofsetgen([4],4,m_ds.nodesets.gsize))=p_g;
    110 
    111                 inputs=add(inputs,'velocity',u_g_stokes,'doublevec',4,m_ds.parameters.numberofnodes);
    112 
    11391                displaystring(verbose,'\n%s',['update boundary conditions for stokes using velocities previously computed...']);
    11492                m_ds.y_g=zeros(m_ds.nodesets.gsize,1);
    115                 m_ds.y_g(dofsetgen([1,2,3],4,m_ds.nodesets.gsize))=u_g;
     93                m_ds.y_g(dofsetgen([1,2],4,m_ds.nodesets.gsize))=u_g;
     94                m_ds.y_g(dofsetgen([3],4,m_ds.nodesets.gsize))=u_g_vert;
    11695                [m_ds.ys m_ds.ys0]=Reducevectorgtos(m_ds.y_g,m_ds.nodesets);
    11796
    11897                displaystring(verbose,'\n%s',['computing stokes velocities and pressure ...']);
    119                 u_g=diagnostic_core_nonlinear(m_ds,inputs,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
     98                u_g=diagnostic_core_nonlinear(m_ds,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    12099       
    121100                %"decondition" pressure
Note: See TracChangeset for help on using the changeset viewer.