Changeset 3780
- Timestamp:
- 05/17/10 11:21:00 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/parallel/diagnostic_core.cpp
r3775 r3780 161 161 162 162 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); 164 165 VecFree(&fem_ds->ys); VecFree(&fem_ds->ys0); 165 166 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 3 3 % 4 4 % Usage: 5 % results=diagnostic_core(model s);5 % results=diagnostic_core(model); 6 6 % 7 7 8 %recover models9 m_dh=model s.dh;10 m_dv=model s.dv;11 m_ds=model s.ds;12 m_dhu=model s.dhu;13 m_sl=model s.sl;8 %recover fem models 9 m_dh=model.dh; 10 m_dv=model.dv; 11 m_ds=model.ds; 12 m_dhu=model.dhu; 13 m_sl=model.sl; 14 14 15 15 %recover parameters common to all solutions … … 25 25 %for qmu analysis, be sure the velocity input we are starting from is the one in the parameters: 26 26 if qmu_analysis, 27 ModelUpdateInputsFromVector(model s,m_dh.vx,VxEnum,VertexEnum);28 ModelUpdateInputsFromVector(model s,m_dh.vy,VyEnum,VertexEnum);29 ModelUpdateInputsFromVector(model s,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); 30 30 end 31 31 … … 35 35 36 36 %Update: 37 ModelUpdateInputsFromVector(model s,surfaceslopex,SurfaceSlopexEnum,VertexEnum);38 ModelUpdateInputsFromVector(model s,surfaceslopey,SurfaceSlopeyEnum,VertexEnum);39 ModelUpdateInputsFromVector(model s,bedslopex,BedSlopexEnum,VertexEnum);40 ModelUpdateInputsFromVector(model s,bedslopey,BedSlopeyEnum,VertexEnum);37 ModelUpdateInputsFromVector(model,surfaceslopex,SurfaceSlopexEnum,VertexEnum); 38 ModelUpdateInputsFromVector(model,surfaceslopey,SurfaceSlopeyEnum,VertexEnum); 39 ModelUpdateInputsFromVector(model,bedslopex,BedSlopexEnum,VertexEnum); 40 ModelUpdateInputsFromVector(model,bedslopey,BedSlopeyEnum,VertexEnum); 41 41 42 42 if ishutter, … … 73 73 74 74 [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); 77 77 78 79 80 78 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); 88 81 89 82 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); 91 85 92 86 if isstokes, … … 95 89 p_g=p_g/m_ds.parameters.stokesreconditioning; 96 90 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 113 91 displaystring(verbose,'\n%s',['update boundary conditions for stokes using velocities previously computed...']); 114 92 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; 116 95 [m_ds.ys m_ds.ys0]=Reducevectorgtos(m_ds.y_g,m_ds.nodesets); 117 96 118 97 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()); 120 99 121 100 %"decondition" pressure
Note:
See TracChangeset
for help on using the changeset viewer.