Changeset 17553
- Timestamp:
- 03/26/14 16:40:35 (11 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r17548 r17553 2900 2900 IssmDouble *xyz_list = NULL; 2901 2901 2902 /*FIXME this should change*/2903 r = 1.;2904 2905 2902 /*Get problem dimension*/ 2906 2903 element->FindParam(&meshtype,MeshTypeEnum); 2904 element->FindParam(&r,AugmentedLagrangianREnum); 2907 2905 switch(meshtype){ 2908 2906 case Mesh2DverticalEnum: dim = 2; epssize = 3; break; … … 3289 3287 ElementVector* petemp =new ElementVector(pe1,pe2,pe3); 3290 3288 ElementVector* pe4=CreatePVectorFSViscousXTH(element); 3291 ElementVector*pe = new ElementVector(petemp,pe4);3289 pe = new ElementVector(petemp,pe4); 3292 3290 delete pe1; 3293 3291 delete pe2; … … 3403 3401 } 3404 3402 3405 /*FIXME*/3406 r = 1.;3407 3408 3403 /*Fetch number of nodes and dof for this finite element*/ 3409 3404 int vnumnodes = element->NumberofNodesVelocity(); … … 3427 3422 3428 3423 /*Retrieve all inputs and parameters*/ 3424 element->FindParam(&r,AugmentedLagrangianREnum); 3429 3425 element->GetVerticesCoordinates(&xyz_list); 3430 3426 … … 4260 4256 Gauss* gauss = NULL; 4261 4257 4258 parameters->FindParam(&r,AugmentedLagrangianREnum); 4262 4259 parameters->FindParam(&meshtype,MeshTypeEnum); 4263 4260 switch(meshtype){ … … 4267 4264 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); 4268 4265 } 4269 4270 /*FIXME*/4271 r = 1.;4272 4266 4273 4267 for(int i=0;i<elements->Size();i++){ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r17535 r17553 624 624 AbsoluteEnum, 625 625 IncrementalEnum, 626 AugmentedLagrangianREnum, 626 627 /*}}}*/ 627 628 /*Grounding Line{{{*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r17535 r17553 603 603 case AbsoluteEnum : return "Absolute"; 604 604 case IncrementalEnum : return "Incremental"; 605 case AugmentedLagrangianREnum : return "AugmentedLagrangianR"; 605 606 case AgressiveMigrationEnum : return "AgressiveMigration"; 606 607 case NoneEnum : return "None"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r17535 r17553 615 615 else if (strcmp(name,"Absolute")==0) return AbsoluteEnum; 616 616 else if (strcmp(name,"Incremental")==0) return IncrementalEnum; 617 else if (strcmp(name,"AugmentedLagrangianR")==0) return AugmentedLagrangianREnum; 617 618 else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum; 618 619 else if (strcmp(name,"None")==0) return NoneEnum; … … 628 629 else if (strcmp(name,"FSSolver")==0) return FSSolverEnum; 629 630 else if (strcmp(name,"Adjoint")==0) return AdjointEnum; 630 else if (strcmp(name,"Colinear")==0) return ColinearEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum; 634 if (strcmp(name,"Colinear")==0) return ColinearEnum; 635 else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum; 635 636 else if (strcmp(name,"Fset")==0) return FsetEnum; 636 637 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; -
issm/trunk-jpl/src/c/shared/Numerics/NewtonSolveDnorm.cpp
r17546 r17553 1 1 #include <math.h> 2 2 #include "./types.h" 3 #include "../Exceptions/exceptions.h" 3 4 4 5 int NewtonSolveDnorm(IssmDouble* pdnorm,IssmDouble c1,IssmDouble c2,IssmDouble c3,IssmDouble n){ … … 12 13 */ 13 14 15 /*trivial solution*/ 16 if(c3==0.){ 17 *pdnorm =0.; 18 return 0; 19 } 14 20 15 21 /*Intermediaries*/ 22 int counter = 0; 16 23 IssmDouble s = (1.+n)/n; 17 24 IssmDouble y2; … … 24 31 25 32 /*Newton step*/ 26 y2 = y1 - (c1*pow(pow(10.,y1),s-1.) + c2*pow(10.,y1) - c3)/((s-1)*c1*log(10)*pow(pow(10.,y1),s-1 ) + c2*log(10.)*pow(10.,y1));33 y2 = y1 - (c1*pow(pow(10.,y1),s-1.) + c2*pow(10.,y1) - c3)/((s-1)*c1*log(10)*pow(pow(10.,y1),s-1.) + c2*log(10.)*pow(10.,y1)); 27 34 28 if( fabs(y2-y1)/ fabs(y1)<threshold ){35 if( fabs(y2-y1)/(fabs(y2))<threshold ){ 29 36 break; 30 37 } 31 38 else{ 32 39 y1=y2; 40 counter++; 33 41 } 42 43 if(counter>50) _error_("Could not converge"); 34 44 } 35 45 36 46 /*Assign output pointer*/ 37 47 *pdnorm = pow(10.,y2); 48 return 0; 38 49 } -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_la_theta.cpp
r17541 r17553 30 30 analysis->InitializeXTH(femmodel->elements,femmodel->parameters); 31 31 32 /*Solve KU=F*/ 33 SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel); 34 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type); 35 Reduceloadx(pf, Kfs, ys); delete Kfs; 36 Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 37 delete Kff; delete pf; delete df; 38 Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys; 32 /*Convergence criterion*/ 33 int count = 0; 34 femmodel->parameters->SetParam(10.,AugmentedLagrangianREnum); 39 35 40 /*Update solution*/ 41 InputUpdateFromSolutionx(femmodel,ug); 36 while(true){ 42 37 43 /*Update d and tau accordingly*/ 44 analysis->InputUpdateFromSolutionFSXTH(femmodel->elements,femmodel->parameters); 38 /*Solve KU=F*/ 39 SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel); 40 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type); 41 Reduceloadx(pf, Kfs, ys); delete Kfs; 42 Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 43 delete Kff; delete pf; delete df; 44 Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys; 45 46 /*Update solution*/ 47 printf("ug norm = %g\n",ug->Norm(NORM_TWO)); 48 InputUpdateFromSolutionx(femmodel,ug); 49 50 /*Update d and tau accordingly*/ 51 analysis->InputUpdateFromSolutionFSXTH(femmodel->elements,femmodel->parameters); 52 53 count++; 54 if(count>5) break; 55 } 45 56 46 57 /*Check for convergence*/ 47 _error_("STOP");58 //_error_("STOP"); 48 59 49 60 delete ug; -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r17535 r17553 595 595 def AbsoluteEnum(): return StringToEnum("Absolute")[0] 596 596 def IncrementalEnum(): return StringToEnum("Incremental")[0] 597 def AugmentedLagrangianREnum(): return StringToEnum("AugmentedLagrangianR")[0] 597 598 def AgressiveMigrationEnum(): return StringToEnum("AgressiveMigration")[0] 598 599 def NoneEnum(): return StringToEnum("None")[0]
Note:
See TracChangeset
for help on using the changeset viewer.