Changeset 5698


Ignore:
Timestamp:
09/08/10 08:05:59 (15 years ago)
Author:
Mathieu Morlighem
Message:

Fixed new thermal

Location:
issm/trunk/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/io/FetchData.cpp

    r4782 r5698  
    1414
    1515#ifdef _SERIAL_
    16 /***************** **************** **************** **************** **************** **************** **************** **************** **************** ****************
    17                                                                                                           Serial Fetch Data Routines, all overloaded.
    18 **************** **************** **************** **************** **************** **************** **************** **************** **************** *****************/
    1916#include <mex.h>
    2017/*FUNCTION FetchData(DataSet** pdataset,const mxArray* dataref){{{1*/
     
    298295void FetchData(bool* pboolean,const mxArray* dataref){
    299296
    300         bool boolean;
     297        bool* mxbool_ptr=NULL;
    301298
    302299        if (mxIsClass(dataref,"logical")){
    303                 /*Recover the double: */
    304                 boolean=(bool)mxGetScalar(dataref);
     300                if(mxGetM(dataref)!=1) ISSMERROR("input data is not of size 1x1");
     301                if(mxGetN(dataref)!=1) ISSMERROR("input data is not of size 1x1");
     302                mxbool_ptr=mxGetLogicals(dataref);
    305303        }
    306304        else{
     
    308306        }
    309307
    310         /*Assign output pointers:*/
    311         *pboolean=boolean;
     308        *pboolean=*mxbool_ptr;
    312309}
    313310/*}}}*/
     
    315312
    316313#if defined(_PARALLEL_) && defined(_HAVE_PETSC_)
    317 /***************** **************** **************** **************** **************** **************** **************** **************** **************** ****************
    318                                                                                                           Parallel Fetch Data Routines, all overloaded.
    319 **************** **************** **************** **************** **************** **************** **************** **************** **************** *****************/
    320314/*FUNCTION FetchData(double** pmatrix, int* pM,int* pN,FILE* fid){{{1*/
    321315void FetchData(double** pmatrix, int* pM,int* pN,FILE* fid){
  • issm/trunk/src/c/modules/Solverx/Solverx.cpp

    r5689 r5698  
    9898                }
    9999        }
    100         KSPSolve(ksp,pf,uf);
     100        if(verbose){
     101                double max,min;
     102                KSPSetComputeSingularValues(ksp,PETSC_TRUE);
     103                KSPSetUp(ksp);
     104                KSPSolve(ksp,pf,uf);
     105                KSPComputeExtremeSingularValues(ksp,&max,&min);
     106                printf("Condition number = %g %g\n",max,min);
     107        }
     108        else{
     109                KSPSolve(ksp,pf,uf);
     110        }
    101111       
    102112        /*Check convergence*/
  • issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp

    r5693 r5698  
    5555
    5656                /*===================== DEBUGING ====================*/
    57                 if (count==1) SystemMatricesx(&Kgg_nopenalty,&pg_nopenalty,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     57                if (count==1) SystemMatricesx(&Kgg_nopenalty,&pg_nopenalty,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,true,false,false);
    5858                MatDuplicate(Kgg_nopenalty,MAT_COPY_VALUES,&Kgg);
    5959                VecDuplicatePatch(&pg,pg_nopenalty);
  • issm/trunk/src/m/classes/public/solversettomumps.m

    r2261 r5698  
    55%      md=solversettomumps(md)
    66
    7 md.solverstring=' -mat_type aijmumps -ksp_type preonly -pc_type lu -mat_mumps_icntl_14 120 -pc_factor_shift_positive_definite true';
     7md.solverstring='-mat_type aijmumps -ksp_type preonly -pc_type lu -mat_mumps_icntl_14 120 -pc_factor_shift_positive_definite true';
    88
    99%optional
  • issm/trunk/src/m/solvers/solver_thermal_nonlinear.m

    r5693 r5698  
    2121                % ================= DEBUG FOR NOW ====================
    2222                if count==1
    23                         [K_gg_nopenalty,p_g_nopenalty,melting_offset]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
     23                        [K_gg_nopenalty,p_g_nopenalty,melting_offset]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,true,true,false,false);
    2424                end
    2525                [K_gg , p_g, melting_offset]=PenaltySystemMatrices(K_gg_nopenalty,p_g_nopenalty,femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
  • issm/trunk/src/mex/Solver/Solver.cpp

    r5686 r5698  
    88
    99        /*input datasets: */
    10         Mat Kff=NULL;
    11         Vec pf=NULL;
    12         Vec uf0=NULL;
    13         char* solver_string=NULL;
    14         Parameters* parameters=NULL;
     10        Mat         Kff           = NULL;
     11        Vec         pf            = NULL;
     12        Vec         uf0           = NULL;
     13        Vec         uf            = NULL;
     14        char       *solver_string = NULL;
     15        Parameters *parameters    = NULL;
     16        int         verbose;
    1517               
    1618        /*Matlab solver: */
     
    1820        char* matlabstring="-ksp_type matlab";
    1921
    20         /* output datasets: */
    21         Vec uf=NULL;
    22 
    23         /*Boot module: */
    2422        MODULEBOOT();
    2523
     
    3028        FetchParams(&parameters,PARAMETERS);
    3129        parameters->FindParam(&solver_string,SolverStringEnum);
     30        int verbose; parameters->FindParam(&verbose,VerboseEnum);
    3231       
    3332        /*Fetch rest of data only if not running the matlab solver: */
     
    4443        else{
    4544                /*Matlab solver: */
     45                if (verbose) printf("   Solving\n");
    4646                array[0]=KFF;
    4747                array[1]=PF;
     
    5757        xfree((void**)&solver_string);
    5858
    59         /*end module: */
    6059        MODULEEND();
    6160}
  • issm/trunk/src/mex/SystemMatrices/SystemMatrices.cpp

    r5693 r5698  
    1414        Materials  *materials  = NULL;
    1515        Parameters *parameters = NULL;
     16        bool        kflag,pflag,penalty_kflag,penalty_pflag;
    1617       
    1718        /* output datasets: */
     
    2425
    2526        /*checks on arguments on the matlab side: */
    26         CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&SystemMatricesUsage);
     27        if((nlhs!=NLHS) || (nrhs!=6 && nrhs!=10)){
     28                SystemMatricesUsage();
     29                ISSMERROR(" usage. See above");
     30        }
    2731
    2832        /*Input datasets: */
     
    4145
    4246        /*!Generate internal degree of freedom numbers: */
    43         SystemMatricesx(&Kgg,&pg,&kmax,elements,nodes,vertices,loads,materials,parameters);
     47        if(nrhs==10){
     48                FetchData(&kflag,KFLAG);
     49                FetchData(&pflag,PFLAG);
     50                FetchData(&penalty_kflag,PENALTYKFLAG);
     51                FetchData(&penalty_pflag,PENALTYPFLAG);
     52                SystemMatricesx(&Kgg,&pg,&kmax,elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);
     53        }
     54        else
     55         SystemMatricesx(&Kgg,&pg,&kmax,elements,nodes,vertices,loads,materials,parameters);
    4456
    4557        /*write output datasets: */
     
    6678        _printf_("\n");
    6779        _printf_("   usage: [Kgg,pg,kmax] = %s(elements,nodes,vertices,loads,materials,parameters);\n",__FUNCT__);
     80        _printf_("   usage: [Kgg,pg,kmax] = %s(elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);\n",__FUNCT__);
    6881        _printf_("\n");
    6982}
  • issm/trunk/src/mex/SystemMatrices/SystemMatrices.h

    r5693 r5698  
    1818
    1919/* serial input macros: */
    20 #define ELEMENTS   (mxArray *)prhs[0]
    21 #define NODES      (mxArray *)prhs[1]
    22 #define VERTICES   (mxArray *)prhs[2]
    23 #define LOADS      (mxArray *)prhs[3]
    24 #define MATERIALS  (mxArray *)prhs[4]
    25 #define PARAMETERS (mxArray *)prhs[5]
     20#define ELEMENTS     (mxArray *)prhs[0]
     21#define NODES        (mxArray *)prhs[1]
     22#define VERTICES     (mxArray *)prhs[2]
     23#define LOADS        (mxArray *)prhs[3]
     24#define MATERIALS    (mxArray *)prhs[4]
     25#define PARAMETERS   (mxArray *)prhs[5]
     26#define KFLAG        (mxArray *)prhs[6]
     27#define PFLAG        (mxArray *)prhs[7]
     28#define PENALTYKFLAG (mxArray *)prhs[8]
     29#define PENALTYPFLAG (mxArray *)prhs[9]
    2630
    2731/* serial output macros: */
     
    3438#define NLHS  3
    3539#undef NRHS
    36 #define NRHS  6
     40#define NRHS  10
    3741
    3842#endif  /* _SYSTEMMATRICES_H */
Note: See TracChangeset for help on using the changeset viewer.