Changeset 12477
- Timestamp:
- 06/20/12 12:31:14 (13 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/solutions/control_core.cpp
r12439 r12477 20 20 int num_controls,num_responses; 21 21 int nsteps; 22 double tol_cm;22 IssmDouble tol_cm; 23 23 bool cm_gradient; 24 24 int dim; … … 28 28 29 29 int* control_type = NULL; 30 double* responses=NULL;30 IssmDouble* responses=NULL; 31 31 int* step_responses=NULL; 32 double* maxiter=NULL;33 double* cm_jump=NULL;32 IssmDouble* maxiter=NULL; 33 IssmDouble* cm_jump=NULL; 34 34 35 35 /*intermediary: */ 36 double search_scalar=1;36 IssmDouble search_scalar=1; 37 37 OptArgs optargs; 38 38 OptPars optpars; … … 43 43 44 44 /*output: */ 45 double* J=NULL;45 IssmDouble* J=NULL; 46 46 47 47 /*Recover parameters used throughout the solution*/ … … 70 70 71 71 /*Initialize responses: */ 72 J=xNew< double>(nsteps);72 J=xNew<IssmDouble>(nsteps); 73 73 step_responses=xNew<int>(num_responses); 74 74 … … 122 122 xDelete<int>(control_type); 123 123 xDelete<int>(step_responses); 124 xDelete< double>(maxiter);125 xDelete< double>(responses);126 xDelete< double>(cm_jump);127 xDelete< double>(J);124 xDelete<IssmDouble>(maxiter); 125 xDelete<IssmDouble>(responses); 126 xDelete<IssmDouble>(cm_jump); 127 xDelete<IssmDouble>(J); 128 128 } -
issm/trunk-jpl/src/c/solutions/controlconvergence.cpp
r10197 r12477 17 17 #include "./solutions.h" 18 18 19 bool controlconvergence( double J, double tol_cm){19 bool controlconvergence(IssmDouble J, IssmDouble tol_cm){ 20 20 21 21 int i; -
issm/trunk-jpl/src/c/solutions/controlrestart.cpp
r12439 r12477 7 7 #include "../EnumDefinitions/EnumDefinitions.h" 8 8 9 void controlrestart(FemModel* femmodel, double* J){9 void controlrestart(FemModel* femmodel,IssmDouble* J){ 10 10 11 11 int num_controls; -
issm/trunk-jpl/src/c/solutions/controltao_core.cpp
r12439 r12477 17 17 18 18 /*Local prototype*/ 19 int FormFunctionGradient(TaoSolver,Vec, double*,Vec,void*);19 int FormFunctionGradient(TaoSolver,Vec,IssmDouble*,Vec,void*); 20 20 int IssmMonitor(TaoSolver,void*); 21 21 typedef struct { … … 31 31 AppCtx user; 32 32 TaoSolver tao; 33 double *dummy = NULL;33 IssmDouble *dummy = NULL; 34 34 int *control_list = NULL; 35 35 Vector *X = NULL; … … 50 50 femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum); 51 51 femmodel->parameters->SetParam(false,SaveResultsEnum); 52 maxiter=nsteps*(int)dummy[0]; xDelete< double>(dummy);52 maxiter=nsteps*(int)dummy[0]; xDelete<IssmDouble>(dummy); 53 53 54 54 /*Initialize TAO*/ … … 100 100 TaoFinalize(); 101 101 } 102 int FormFunctionGradient(TaoSolver tao, Vec Xpetsc, double *fcn,Vec G,void *userCtx){102 int FormFunctionGradient(TaoSolver tao, Vec Xpetsc, IssmDouble *fcn,Vec G,void *userCtx){ 103 103 104 104 /*Retreive arguments*/ … … 107 107 FemModel *femmodel = user->femmodel; 108 108 int *cost_functions = NULL; 109 double *cost_functionsd= NULL;109 IssmDouble *cost_functionsd= NULL; 110 110 Vector *gradient = NULL; 111 111 Vector *X = NULL; … … 147 147 /*Clean-up and return*/ 148 148 xDelete<int>(cost_functions); 149 xDelete< double>(cost_functionsd);149 xDelete<IssmDouble>(cost_functionsd); 150 150 return 0; 151 151 } … … 153 153 154 154 int i,its,num_responses; 155 double f,gnorm,cnorm,xdiff;155 IssmDouble f,gnorm,cnorm,xdiff; 156 156 AppCtx *user = (AppCtx *)userCtx; 157 157 FemModel *femmodel = user->femmodel; -
issm/trunk-jpl/src/c/solutions/convergence.cpp
r11921 r12477 19 19 Vector* KUoldF=NULL; 20 20 Vector* duf=NULL; 21 double ndu,nduinf,nu;22 double nKUF;23 double nKUoldF;24 double nF;25 double solver_residue,res;21 IssmDouble ndu,nduinf,nu; 22 IssmDouble nKUF; 23 IssmDouble nKUoldF; 24 IssmDouble nF; 25 IssmDouble solver_residue,res; 26 26 27 27 /*convergence options*/ 28 double eps_res;29 double eps_rel;30 double eps_abs;31 double yts;28 IssmDouble eps_res; 29 IssmDouble eps_rel; 30 IssmDouble eps_abs; 31 IssmDouble yts; 32 32 33 33 /*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from -
issm/trunk-jpl/src/c/solutions/gradient_core.cpp
r12439 r12477 16 16 17 17 /*Intermediaries*/ 18 double norm_inf;19 double *norm_list = NULL;18 IssmDouble norm_inf; 19 IssmDouble *norm_list = NULL; 20 20 Vector* new_gradient = NULL; 21 21 Vector* gradient = NULL; … … 48 48 49 49 /*Clean up and return*/ 50 xDelete< double>(norm_list);50 xDelete<IssmDouble>(norm_list); 51 51 } -
issm/trunk-jpl/src/c/solutions/hydrology_core.cpp
r11832 r12477 17 17 18 18 /*intermediary*/ 19 double time;19 IssmDouble time; 20 20 int nsteps; 21 double starttime,final_time;22 double dt;21 IssmDouble starttime,final_time; 22 IssmDouble dt; 23 23 bool save_results; 24 24 int output_frequency; -
issm/trunk-jpl/src/c/solutions/hydrology_core_step.cpp
r9761 r12477 13 13 #include "../solvers/solvers.h" 14 14 15 void hydrology_core_step(FemModel* femmodel,int step, double time){15 void hydrology_core_step(FemModel* femmodel,int step, IssmDouble time){ 16 16 17 17 bool modify_loads=true; -
issm/trunk-jpl/src/c/solutions/issm.cpp
r12439 r12477 30 30 31 31 /*time*/ 32 double start, finish;33 double start_core, finish_core;34 double start_init, finish_init;32 IssmPDouble start, finish; 33 IssmPDouble start_core, finish_core; 34 IssmPDouble start_init, finish_init; 35 35 int ierr; 36 36 … … 50 50 MPI_Barrier(MPI_COMM_WORLD); start=MPI_Wtime(); 51 51 #else 52 start=( double)clock();52 start=(IssmPDouble)clock(); 53 53 #endif 54 54 … … 73 73 MPI_Barrier(MPI_COMM_WORLD); start_init=MPI_Wtime(); 74 74 #else 75 start_init=( double)clock();75 start_init=(IssmPDouble)clock(); 76 76 #endif 77 77 femmodel=new FemModel(binfilename,outbinfilename,solution_type,analyses,numanalyses); … … 97 97 MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime(); 98 98 #else 99 finish_init=( double)clock();99 finish_init=(IssmPDouble)clock(); 100 100 #endif 101 101 … … 104 104 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 105 105 #else 106 start_core=( double)clock();106 start_core=(IssmPDouble)clock(); 107 107 #endif 108 108 … … 130 130 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 131 131 #else 132 finish_core=( double)clock();132 finish_core=(IssmPDouble)clock(); 133 133 #endif 134 134 … … 158 158 _printf_(true,"\n %s %i hrs %i min %i sec\n\n","Total elapsed time:",int((finish-start)/3600),int(int(finish-start)%3600/60),int(finish-start)%60); 159 159 #else 160 finish=( double)clock();160 finish=(IssmPDouble)clock(); 161 161 _printf_(true,"\n %-34s %f seconds \n","FemModel initialization elapsed time:",(finish_init-start_init)/CLOCKS_PER_SEC); 162 162 _printf_(true," %-34s %f seconds \n","Core solution elapsed time:",(finish_core-start_core)/CLOCKS_PER_SEC); -
issm/trunk-jpl/src/c/solutions/kriging.cpp
r12439 r12477 8 8 /*Local prototypes*/ 9 9 void ProcessArguments2(char** pbinfilename,char** poutbinfilename,char** plockfilename,int argc,char **argv); 10 void ProcessInputfile( double **px,double **py,double **pdata,int *pnobs,double **px_interp,double **py_interp,int *pninterp,Options **poptions,FILE* fid);10 void ProcessInputfile(IssmDouble **px,IssmDouble **py,IssmDouble **pdata,int *pnobs,IssmDouble **px_interp,IssmDouble **py_interp,int *pninterp,Options **poptions,FILE* fid); 11 11 12 12 int main(int argc,char **argv){ … … 24 24 /*Input*/ 25 25 int ninterp,nobs; 26 double *x = NULL;27 double *y = NULL;28 double *data = NULL;29 double *x_interp = NULL;30 double *y_interp = NULL;26 IssmDouble *x = NULL; 27 IssmDouble *y = NULL; 28 IssmDouble *data = NULL; 29 IssmDouble *x_interp = NULL; 30 IssmDouble *y_interp = NULL; 31 31 Options *options = NULL; 32 32 33 33 /*Output*/ 34 double *predictions = NULL;35 double *error = NULL;34 IssmDouble *predictions = NULL; 35 IssmDouble *error = NULL; 36 36 37 37 ISSMBOOT(); … … 89 89 xDelete<char>(binfilename); 90 90 xDelete<char>(outbinfilename); 91 xDelete< double>(x);92 xDelete< double>(y);93 xDelete< double>(data);94 xDelete< double>(x_interp);95 xDelete< double>(y_interp);96 xDelete< double>(predictions);97 xDelete< double>(error);91 xDelete<IssmDouble>(x); 92 xDelete<IssmDouble>(y); 93 xDelete<IssmDouble>(data); 94 xDelete<IssmDouble>(x_interp); 95 xDelete<IssmDouble>(y_interp); 96 xDelete<IssmDouble>(predictions); 97 xDelete<IssmDouble>(error); 98 98 delete options; 99 99 delete results; … … 134 134 } 135 135 136 void ProcessInputfile( double **px,double **py,double **pdata,int *pnobs,double **px_interp,double **py_interp,int *pninterp,Options **poptions,FILE* fid){136 void ProcessInputfile(IssmDouble **px,IssmDouble **py,IssmDouble **pdata,int *pnobs,IssmDouble **px_interp,IssmDouble **py_interp,int *pninterp,Options **poptions,FILE* fid){ 137 137 138 138 int ninterp,nobs,numoptions; 139 double *x = NULL;140 double *y = NULL;141 double *data = NULL;142 double *x_interp = NULL;143 double *y_interp = NULL;139 IssmDouble *x = NULL; 140 IssmDouble *y = NULL; 141 IssmDouble *data = NULL; 142 IssmDouble *x_interp = NULL; 143 IssmDouble *y_interp = NULL; 144 144 Options *options = NULL; 145 145 Option *option = NULL; -
issm/trunk-jpl/src/c/solutions/objectivefunction.cpp
r12365 r12477 20 20 /*}}}*/ 21 21 22 double objectivefunction(double search_scalar,OptArgs* optargs){22 IssmDouble objectivefunction(IssmDouble search_scalar,OptArgs* optargs){ 23 23 24 24 int i; 25 25 26 26 /*output: */ 27 double J;27 IssmDouble J; 28 28 29 29 /*parameters: */ -
issm/trunk-jpl/src/c/solutions/solutions.h
r11830 r12477 18 18 void diagnostic_core(FemModel* femmodel); 19 19 void hydrology_core(FemModel* femmodel); 20 void hydrology_core_step(FemModel* femmodel,int step, double time);20 void hydrology_core_step(FemModel* femmodel,int step, IssmDouble time); 21 21 void thermal_core(FemModel* femmodel); 22 22 void enthalpy_core(FemModel* femmodel); … … 30 30 void steadystate_core(FemModel* femmodel); 31 31 void transient_core(FemModel* femmodel); 32 double objectivefunction(double search_scalar,OptArgs* optargs);32 IssmDouble objectivefunction(IssmDouble search_scalar,OptArgs* optargs); 33 33 34 34 //convergence: 35 35 void convergence(bool* pconverged, Matrix* K_ff,Vector* p_f,Vector* u_f,Vector* u_f_old,Parameters* parameters); 36 bool controlconvergence( double J,double tol_cm);36 bool controlconvergence(IssmDouble J,IssmDouble tol_cm); 37 37 bool steadystateconvergence(FemModel* femmodel); 38 38 39 39 //optimization 40 int GradJSearch( double* search_vector,FemModel* femmodel,int step);40 int GradJSearch(IssmDouble* search_vector,FemModel* femmodel,int step); 41 41 42 42 //diverse 43 43 void ProcessArguments(int* solution,char** pbinname,char** poutbinname,char** ppetscname,char** plockname,int argc,char **argv); 44 44 void WriteLockFile(char* filename); 45 void controlrestart(FemModel* femmodel, double* J);45 void controlrestart(FemModel* femmodel,IssmDouble* J); 46 46 void ResetBoundaryConditions(FemModel* femmodel, int analysis_type); 47 47 -
issm/trunk-jpl/src/c/solutions/steadystateconvergence.cpp
r9677 r12477 28 28 int temperatureenums[2]={TemperatureEnum,TemperatureOldEnum}; 29 29 int convergencecriterion[1]={RelativeEnum}; //criterions for convergence, RelativeEnum or AbsoluteEnum 30 double convergencecriterionvalue[1]; //value of criterion to be respected30 IssmDouble convergencecriterionvalue[1]; //value of criterion to be respected 31 31 32 32 /*retrieve parameters: */ -
issm/trunk-jpl/src/c/solutions/thermal_core.cpp
r11830 r12477 16 16 17 17 /*intermediary*/ 18 double melting_offset;18 IssmDouble melting_offset; 19 19 bool save_results; 20 20 bool dakota_analysis = false; -
issm/trunk-jpl/src/c/solutions/transient_core.cpp
r12439 r12477 23 23 24 24 /*parameters: */ 25 double starttime,finaltime,dt,yts;25 IssmDouble starttime,finaltime,dt,yts; 26 26 bool isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy; 27 27 bool save_results,dakota_analysis; … … 34 34 /*intermediary: */ 35 35 int step; 36 double time;36 IssmDouble time; 37 37 38 38 //first recover parameters common to all solutions -
issm/trunk-jpl/src/c/solvers/solver_newton.cpp
r12271 r12477 17 17 int num_unstable_constraints; 18 18 int count; 19 double kmax;19 IssmDouble kmax; 20 20 Matrix* Kff = NULL; 21 21 Matrix* Kfs = NULL; … … 70 70 bool max_iteration_state=false; 71 71 int tempStep=1; 72 double tempTime=1.0;72 IssmDouble tempTime=1.0; 73 73 femmodel->results->AddObject(new BoolExternalResult(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, tempStep, tempTime)); 74 74 break; … … 78 78 bool max_iteration_state=true; 79 79 int tempStep=1; 80 double tempTime=1.0;80 IssmDouble tempTime=1.0; 81 81 femmodel->results->AddObject(new BoolExternalResult(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, tempStep, tempTime)); 82 82 break; -
issm/trunk-jpl/src/c/solvers/solver_nonlinear.cpp
r12271 r12477 88 88 bool max_iteration_state=false; 89 89 int tempStep=1; 90 double tempTime=1.0;90 IssmDouble tempTime=1.0; 91 91 femmodel->results->AddObject(new BoolExternalResult(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, tempStep, tempTime)); 92 92 break; … … 99 99 bool max_iteration_state=true; 100 100 int tempStep=1; 101 double tempTime=1.0;101 IssmDouble tempTime=1.0; 102 102 femmodel->results->AddObject(new BoolExternalResult(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, tempStep, tempTime)); 103 103 break; -
issm/trunk-jpl/src/c/solvers/solver_thermal_nonlinear.cpp
r11679 r12477 16 16 Vector* tf_old=NULL; 17 17 Vector* ys=NULL; 18 double melting_offset;18 IssmDouble melting_offset; 19 19 20 20 /*intermediary: */ -
issm/trunk-jpl/src/c/toolkits/issm/SeqMat.cpp
r12446 r12477 33 33 this->N=pN; 34 34 this->matrix=NULL; 35 if(M*N) this->matrix=xNewZeroInit< double>(pM*pN);36 } 37 /*}}}*/ 38 /*FUNCTION SeqMat::SeqMat(int M,int N, double sparsity){{{*/39 SeqMat::SeqMat(int pM,int pN, double sparsity){40 41 this->M=pM; 42 this->N=pN; 43 this->matrix=NULL; 44 if(M*N) this->matrix=xNewZeroInit< double>(pM*pN);45 } 46 /*}}}*/ 47 /*FUNCTION SeqMat( double* serial_mat,int M,int N,double sparsity){{{*/48 SeqMat::SeqMat( double* serial_mat,int pM,int pN,double sparsity){35 if(M*N) this->matrix=xNewZeroInit<IssmDouble>(pM*pN); 36 } 37 /*}}}*/ 38 /*FUNCTION SeqMat::SeqMat(int M,int N, IssmDouble sparsity){{{*/ 39 SeqMat::SeqMat(int pM,int pN, IssmDouble sparsity){ 40 41 this->M=pM; 42 this->N=pN; 43 this->matrix=NULL; 44 if(M*N) this->matrix=xNewZeroInit<IssmDouble>(pM*pN); 45 } 46 /*}}}*/ 47 /*FUNCTION SeqMat(IssmDouble* serial_mat,int M,int N,IssmDouble sparsity){{{*/ 48 SeqMat::SeqMat(IssmDouble* serial_mat,int pM,int pN,IssmDouble sparsity){ 49 49 50 50 int i,j; … … 54 54 this->matrix=NULL; 55 55 if(M*N){ 56 this->matrix=xNewZeroInit< double>(pM*pN);57 memcpy(this->matrix,serial_mat,pM*pN*sizeof(double));56 this->matrix=xNewZeroInit<IssmDouble>(pM*pN); 57 xMemCpy<IssmDouble>(this->matrix,serial_mat,pM*pN); 58 58 } 59 59 … … 66 66 this->N=pN; 67 67 this->matrix=NULL; 68 if(M*N) this->matrix=xNewZeroInit< double>(pM*pN);68 if(M*N) this->matrix=xNewZeroInit<IssmDouble>(pM*pN); 69 69 } 70 70 /*}}}*/ … … 72 72 SeqMat::~SeqMat(){ 73 73 74 xDelete< double>(this->matrix);74 xDelete<IssmDouble>(this->matrix); 75 75 M=0; 76 76 N=0; … … 100 100 /*}}}*/ 101 101 /*FUNCTION SeqMat::Norm{{{*/ 102 double SeqMat::Norm(NormMode mode){103 104 double norm;105 double absolute;102 IssmDouble SeqMat::Norm(NormMode mode){ 103 104 IssmDouble norm; 105 IssmDouble absolute; 106 106 int i,j; 107 107 … … 145 145 int i,j; 146 146 int XM,AXM; 147 double dummy;147 IssmDouble dummy; 148 148 149 149 X->GetSize(&XM); … … 166 166 SeqMat* SeqMat::Duplicate(void){ 167 167 168 double dummy=0;168 IssmDouble dummy=0; 169 169 170 170 return new SeqMat(this->matrix,this->M,this->N,dummy); … … 173 173 /*}}}*/ 174 174 /*FUNCTION SeqMat::ToSerial{{{*/ 175 double* SeqMat::ToSerial(void){176 177 double* buffer=NULL;175 IssmDouble* SeqMat::ToSerial(void){ 176 177 IssmDouble* buffer=NULL; 178 178 179 179 if(this->M*this->N){ 180 buffer=xNew< double>(this->M*this->N);181 memcpy(buffer,this->matrix,this->M*this->N*sizeof(double));180 buffer=xNew<IssmDouble>(this->M*this->N); 181 xMemCpy<IssmDouble>(buffer,this->matrix,this->M*this->N); 182 182 } 183 183 return buffer; … … 186 186 /*}}}*/ 187 187 /*FUNCTION SeqMat::SetValues{{{*/ 188 void SeqMat::SetValues(int m,int* idxm,int n,int* idxn, double* values,InsMode mode){188 void SeqMat::SetValues(int m,int* idxm,int n,int* idxn,IssmDouble* values,InsMode mode){ 189 189 190 190 int i,j; -
issm/trunk-jpl/src/c/toolkits/issm/SeqMat.h
r12365 r12477 1 1 /*!\file: SeqMat.h 2 * \brief wrapper to SeqMat objects, which are just wrappers to a simple double* buffer.2 * \brief wrapper to SeqMat objects, which are just wrappers to a simple IssmDouble* buffer. 3 3 */ 4 4 … … 24 24 25 25 int M,N; 26 double* matrix;26 IssmDouble* matrix; 27 27 28 28 /*SeqMat constructors, destructors {{{*/ 29 29 SeqMat(); 30 30 SeqMat(int M,int N); 31 SeqMat(int M,int N, double sparsity);32 SeqMat( double* serial_mat,int M,int N,double sparsity);31 SeqMat(int M,int N,IssmDouble sparsity); 32 SeqMat(IssmDouble* serial_mat,int M,int N,IssmDouble sparsity); 33 33 SeqMat(int M,int N,int connectivity,int numberofdofspernode); 34 34 ~SeqMat(); … … 37 37 void Echo(void); 38 38 void Assemble(void); 39 double Norm(NormMode norm_type);39 IssmDouble Norm(NormMode norm_type); 40 40 void GetSize(int* pM,int* pN); 41 41 void GetLocalSize(int* pM,int* pN); 42 42 void MatMult(SeqVec* X,SeqVec* AX); 43 43 SeqMat* Duplicate(void); 44 double* ToSerial(void);45 void SetValues(int m,int* idxm,int n,int* idxn, double* values,InsMode mode);44 IssmDouble* ToSerial(void); 45 void SetValues(int m,int* idxm,int n,int* idxn,IssmDouble* values,InsMode mode); 46 46 void Convert(MatrixType type); 47 47 /*}}}*/ -
issm/trunk-jpl/src/c/toolkits/issm/SeqVec.cpp
r12446 r12477 31 31 this->M=pM; 32 32 this->vector=NULL; 33 if(this->M) this->vector=xNewZeroInit< double>(pM);34 } 35 /*}}}*/ 36 /*FUNCTION SeqVec::SeqVec( double* serial_vec,int M){{{*/37 SeqVec::SeqVec( double* buffer,int pM){33 if(this->M) this->vector=xNewZeroInit<IssmDouble>(pM); 34 } 35 /*}}}*/ 36 /*FUNCTION SeqVec::SeqVec(IssmDouble* serial_vec,int M){{{*/ 37 SeqVec::SeqVec(IssmDouble* buffer,int pM){ 38 38 39 39 int i,j; … … 42 42 this->vector=NULL; 43 43 if(this->M){ 44 this->vector=xNewZeroInit< double>(pM);45 memcpy(this->vector,buffer,pM*sizeof(double));44 this->vector=xNewZeroInit<IssmDouble>(pM); 45 xMemCpy<IssmDouble>(this->vector,buffer,pM); 46 46 } 47 47 } … … 49 49 /*FUNCTION SeqVec::~SeqVec(){{{*/ 50 50 SeqVec::~SeqVec(){ 51 xDelete< double>(this->vector);51 xDelete<IssmDouble>(this->vector); 52 52 M=0; 53 53 } … … 74 74 /*}}}*/ 75 75 /*FUNCTION SeqVec::SetValues{{{*/ 76 void SeqVec::SetValues(int ssize, int* list, double* values, InsMode mode){76 void SeqVec::SetValues(int ssize, int* list, IssmDouble* values, InsMode mode){ 77 77 78 78 int i; … … 92 92 /*}}}*/ 93 93 /*FUNCTION SeqVec::SetValue{{{*/ 94 void SeqVec::SetValue(int dof, double value, InsMode mode){94 void SeqVec::SetValue(int dof, IssmDouble value, InsMode mode){ 95 95 96 96 switch(mode){ … … 108 108 /*}}}*/ 109 109 /*FUNCTION SeqVec::GetValue{{{*/ 110 void SeqVec::GetValue( double* pvalue,int dof){110 void SeqVec::GetValue(IssmDouble* pvalue,int dof){ 111 111 112 112 *pvalue=this->vector[dof]; … … 137 137 /*}}}*/ 138 138 /*FUNCTION SeqVec::Set{{{*/ 139 void SeqVec::Set( double value){139 void SeqVec::Set(IssmDouble value){ 140 140 141 141 int i; … … 145 145 /*}}}*/ 146 146 /*FUNCTION SeqVec::AXPY{{{*/ 147 void SeqVec::AXPY(SeqVec* X, double a){147 void SeqVec::AXPY(SeqVec* X, IssmDouble a){ 148 148 149 149 int i; … … 155 155 /*}}}*/ 156 156 /*FUNCTION SeqVec::AYPX{{{*/ 157 void SeqVec::AYPX(SeqVec* X, double a){157 void SeqVec::AYPX(SeqVec* X, IssmDouble a){ 158 158 159 159 int i; … … 165 165 /*}}}*/ 166 166 /*FUNCTION SeqVec::ToMPISerial{{{*/ 167 double* SeqVec::ToMPISerial(void){168 169 double* buffer=NULL;167 IssmDouble* SeqVec::ToMPISerial(void){ 168 169 IssmDouble* buffer=NULL; 170 170 171 171 if(this->M){ 172 buffer=xNew< double>(this->M);173 memcpy(buffer,this->vector,this->M*sizeof(double));172 buffer=xNew<IssmDouble>(this->M); 173 xMemCpy<IssmDouble>(buffer,this->vector,this->M); 174 174 } 175 175 return buffer; … … 188 188 /*}}}*/ 189 189 /*FUNCTION SeqVec::Norm{{{*/ 190 double SeqVec::Norm(NormMode mode){191 192 double norm;190 IssmDouble SeqVec::Norm(NormMode mode){ 191 192 IssmDouble norm; 193 193 int i; 194 194 … … 210 210 /*}}}*/ 211 211 /*FUNCTION SeqVec::Scale{{{*/ 212 void SeqVec::Scale( double scale_factor){212 void SeqVec::Scale(IssmDouble scale_factor){ 213 213 214 214 int i; … … 218 218 /*}}}*/ 219 219 /*FUNCTION SeqVec::Dot{{{*/ 220 double SeqVec::Dot(SeqVec* input){221 222 int i; 223 224 double dot=0;220 IssmDouble SeqVec::Dot(SeqVec* input){ 221 222 int i; 223 224 IssmDouble dot=0; 225 225 for(i=0;i<this->M;i++)dot+=this->vector[i]*input->vector[i]; 226 226 return dot; -
issm/trunk-jpl/src/c/toolkits/issm/SeqVec.h
r12365 r12477 1 1 /*!\file: SeqVec.h 2 * \brief wrapper to our SeqVec object, which is just a wrapper to a double*2 * \brief wrapper to our SeqVec object, which is just a wrapper to a IssmDouble* 3 3 */ 4 4 … … 22 22 public: 23 23 24 double* vector;24 IssmDouble* vector; 25 25 int M; 26 26 … … 28 28 SeqVec(); 29 29 SeqVec(int M,bool fromlocalsize=false); 30 SeqVec( double* buffer, int M);30 SeqVec(IssmDouble* buffer, int M); 31 31 ~SeqVec(); 32 32 /*}}}*/ … … 34 34 void Echo(void); 35 35 void Assemble(void); 36 void SetValues(int ssize, int* list, double* values, InsMode mode);37 void SetValue(int dof, double value, InsMode mode);38 void GetValue( double* pvalue, int dof);36 void SetValues(int ssize, int* list, IssmDouble* values, InsMode mode); 37 void SetValue(int dof, IssmDouble value, InsMode mode); 38 void GetValue(IssmDouble* pvalue, int dof); 39 39 void GetSize(int* pM); 40 40 void GetLocalSize(int* pM); 41 41 SeqVec* Duplicate(void); 42 void Set( double value);43 void AXPY(SeqVec* X, double a);44 void AYPX(SeqVec* X, double a);45 double* ToMPISerial(void);42 void Set(IssmDouble value); 43 void AXPY(SeqVec* X, IssmDouble a); 44 void AYPX(SeqVec* X, IssmDouble a); 45 IssmDouble* ToMPISerial(void); 46 46 void Copy(SeqVec* to); 47 double Norm(NormMode norm_type);48 void Scale( double scale_factor);47 IssmDouble Norm(NormMode norm_type); 48 void Scale(IssmDouble scale_factor); 49 49 void PointwiseDivide(SeqVec* x,SeqVec* y); 50 double Dot(SeqVec* vector);50 IssmDouble Dot(SeqVec* vector); 51 51 /*}}}*/ 52 52 }; -
issm/trunk-jpl/src/c/toolkits/issm/issmtoolkit.h
r11733 r12477 6 6 #define _ISSM_TOOLKIT_H_ 7 7 8 #include "../../include/include.h" 9 8 10 #include "./SeqMat.h" 9 11 #include "./SeqVec.h"
Note:
See TracChangeset
for help on using the changeset viewer.