Changeset 23049


Ignore:
Timestamp:
08/03/18 09:35:39 (7 years ago)
Author:
Mathieu Morlighem
Message:

CHG: fixing ADOLC, added switch to select correct solver type when MUMPS and GSL are available in serial

Location:
issm/trunk-jpl/src/c
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r23046 r23049  
    19441944
    19451945                                                        }
    1946                                                         if (!isarray){
     1946                                                        if(!isarray){
    19471947                                                                Vector<IssmDouble> *vector_result = new Vector<IssmDouble>(size);
    19481948
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp

    r22609 r23049  
    3838                options=OptionsFromAnalysis(&toolkit,parameters,DefaultAnalysisEnum);
    3939                ToolkitOptions::Init(toolkit,options);
     40                xDelete<char>(toolkit);
    4041
    4142                switch(IssmSolverTypeFromToolkitOptions()){
  • issm/trunk-jpl/src/c/toolkits/issm/IssmDenseMat.h

    r23044 r23049  
    1818
    1919#include "./IssmSeqVec.h"
     20#include "./IssmToolkitUtils.h"
    2021#include "../../shared/shared.h"
    2122#include "../gsl/gslincludes.h"
     
    272273                        pf=(IssmSeqVec<IssmDouble>*)pfin;
    273274
     275                        switch(IssmSolverTypeFromToolkitOptions()){
    274276                        #ifdef _HAVE_MUMPS_
    275                         /*Assume we have a sequential vec, downcast*/
    276                         uf=((IssmSeqVec<IssmDouble>*)pfin)->Duplicate();
    277                         SeqDenseMumpsSolve(uf->vector,uf->M,uf->M, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->M, /*right hand side load vector: */ pf->vector,pf->M,pf->M,parameters);
    278                         return uf;
     277                                case MumpsEnum: {
     278                                        /*Assume we have a sequential vec, downcast*/
     279                                        uf=((IssmSeqVec<IssmDouble>*)pfin)->Duplicate();
     280                                        SeqDenseMumpsSolve(uf->vector,uf->M,uf->M, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->M, /*right hand side load vector: */ pf->vector,pf->M,pf->M,parameters);
     281                                        return uf;
     282                                                                         }
    279283                        #endif
    280 
    281284                        #ifdef _HAVE_GSL_
    282                         DenseGslSolve(/*output*/ &x,/*stiffness matrix:*/ this->matrix,this->M,this->N, /*right hand side load vector: */ pf->vector,pf->M,parameters);
    283 
    284                         uf=new IssmSeqVec<IssmDouble>(x,this->N); xDelete(x);
    285                         return uf;
     285                                case GslEnum: {
     286                                        DenseGslSolve(/*output*/ &x,/*stiffness matrix:*/ this->matrix,this->M,this->N, /*right hand side load vector: */ pf->vector,pf->M,parameters);
     287                                        uf=new IssmSeqVec<IssmDouble>(x,this->N); xDelete(x);
     288                                        return uf;
     289                                                                  }
    286290                        #endif
    287 
    288                         _error_("No solver available");
     291                                default: _error_("No solver available");
     292                        }
     293
    289294                        return NULL;
    290295
Note: See TracChangeset for help on using the changeset viewer.