Changeset 6023
- Timestamp:
- 09/24/10 11:19:25 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/solvers/solver_stokescoupling_nonlinear.m
r6013 r6023 14 14 femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum); 15 15 ug_horiz=GetSolutionFromInputs(femmodel.elements, femmodel.nodes, femmodel.vertices, femmodel.loads, femmodel.materials, femmodel.parameters); 16 17 femmodel=SetCurrentConfiguration(femmodel,DiagnosticVertAnalysisEnum); 18 ug_vert=GetSolutionFromInputs(femmodel.elements, femmodel.nodes, femmodel.vertices, femmodel.loads, femmodel.materials, femmodel.parameters); 16 uf_horiz=Reducevectorgtof( ug_horiz, femmodel.nodesets,femmodel.parameters); 19 17 20 18 while(~converged), … … 22 20 %First compute the horizontal velocity 23 21 femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum); 24 25 %Start non-linear iteration using input velocity:26 ug_horiz=GetSolutionFromInputs(femmodel.elements, femmodel.nodes, femmodel.vertices, femmodel.loads, femmodel.materials, femmodel.parameters);27 uf_horiz=Reducevectorgtof( ug_horiz, femmodel.nodesets,femmodel.parameters);28 22 29 23 %Update the solution to make sure that vx and vxold are similar … … 35 29 36 30 if kffpartitioning, 37 [K_gg ,K_ff,K_fs,p_g,p_f,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);38 p_f = Reduceload( p_f, K_fs, femmodel.ys,femmodel.parameters);31 [K_gg_horiz,K_ff_horiz,K_fs_horiz,p_g_horiz,p_f_horiz,kmax_horiz]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 32 p_f_horiz = Reduceload( p_f_horiz, K_fs_horiz, femmodel.ys,femmodel.parameters); 39 33 else 40 [K_gg ,K_ff,K_fs,p_g,p_f,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);41 [K_ff , K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets,femmodel.parameters);42 p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets,femmodel.parameters);34 [K_gg_horiz,K_ff_horiz,K_fs_horiz,p_g_horiz,p_f_horiz,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 35 [K_ff_horiz, K_fs_horiz] = Reducematrixfromgtof( K_gg_horiz, femmodel.nodesets,femmodel.parameters); 36 p_f_horiz = Reduceloadfromgtof( p_g_horiz, K_fs_horiz, femmodel.ys, femmodel.nodesets,femmodel.parameters); 43 37 end 44 38 45 uf_horiz=Solver(K_ff ,p_f,old_uf_horiz,femmodel.parameters);39 uf_horiz=Solver(K_ff_horiz,p_f_horiz,old_uf_horiz,femmodel.parameters); 46 40 ug_horiz= Mergesolutionfromftog( uf_horiz, femmodel.ys, femmodel.nodesets,femmodel.parameters); 47 41 … … 49 43 50 44 %Figure out if convergence have been reached 51 converged=convergence(K_ff,p_f,uf_horiz,old_uf_horiz,femmodel.parameters); 52 converged=1; 45 converged=convergence(K_ff_horiz,p_f_horiz,uf_horiz,old_uf_horiz,femmodel.parameters); 53 46 54 %%Then compute vertical velocity55 %femmodel=SetCurrentConfiguration(femmodel,DiagnosticVertAnalysisEnum);56 % if kffpartitioning, 57 % [K_gg,K_ff,K_fs,p_g,p_f,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 58 % p_f = Reduceload( p_f, K_fs, femmodel.ys,femmodel.parameters);59 % else 60 % [K_gg,K_ff,K_fs,p_g,p_f,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 61 % [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets,femmodel.parameters); 62 % p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets,femmodel.parameters); 63 % end 64 % 65 % displaystring(femmodel.parameters.Verbose>1,'%s%g',' condition number of stiffness matrix: ',condest(K_ff)); 66 % uf_vert=Solver(K_ff,p_f,[],femmodel.parameters);67 % 68 %ug_vert= Mergesolutionfromftog( uf_vert, femmodel.ys, femmodel.nodesets,femmodel.parameters);69 % 70 %[femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ug_vert);47 %Then compute vertical velocity 48 femmodel=SetCurrentConfiguration(femmodel,DiagnosticVertAnalysisEnum); 49 50 if kffpartitioning, 51 [K_gg_vert,K_ff_vert,K_fs_vert,p_g_vert,p_f_vert,kmax_vert]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 52 p_f_vert = Reduceload( p_f_vert, K_fs_vert, femmodel.ys,femmodel.parameters); 53 else 54 [K_gg_vert,K_ff_vert,K_fs_vert,p_g_vert,p_f_vert,kmax_vert]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 55 [K_ff_vert, K_fs_vert] = Reducematrixfromgtof( K_gg_vert, femmodel.nodesets,femmodel.parameters); 56 p_f_vert = Reduceloadfromgtof( p_g_vert, K_fs_vert, femmodel.ys, femmodel.nodesets,femmodel.parameters); 57 end 58 59 uf_vert=Solver(K_ff_vert,p_f_vert,[],femmodel.parameters); 60 61 ug_vert= Mergesolutionfromftog( uf_vert, femmodel.ys, femmodel.nodesets,femmodel.parameters); 62 63 [femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ug_vert); 71 64 72 65 end
Note:
See TracChangeset
for help on using the changeset viewer.