Changeset 6023


Ignore:
Timestamp:
09/24/10 11:19:25 (14 years ago)
Author:
seroussi
Message:

finished solver for stokes coupling in serial

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/solvers/solver_stokescoupling_nonlinear.m

    r6013 r6023  
    1414        femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum);
    1515        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);
    1917
    2018        while(~converged),
     
    2220                %First compute the horizontal velocity
    2321                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);
    2822
    2923                %Update the solution to make sure that vx and vxold are similar
     
    3529
    3630                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);
    3933                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);
    4337                end
    4438
    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);
    4640                ug_horiz= Mergesolutionfromftog( uf_horiz, femmodel.ys, femmodel.nodesets,femmodel.parameters);
    4741
     
    4943
    5044                %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);
    5346
    54 %               %Then compute vertical velocity
    55 %               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);
    7164
    7265        end
Note: See TracChangeset for help on using the changeset viewer.