Changeset 14807
- Timestamp:
- 04/30/13 10:00:25 (12 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 3 added
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h ¶
r14784 r14807 477 477 StressTensoryzEnum, 478 478 StressTensorzzEnum, 479 GiaOutputRatesEnum, 480 GiaCrossSectionShapeEnum, 481 GiadWdtEnum, 479 482 GiaWEnum, 480 483 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.cpp ¶
r14713 r14807 1544 1544 #endif 1545 1545 #ifdef _HAVE_GIA_ 1546 void FemModel::Deflection(Vector<IssmDouble>* wg, IssmDouble* x, IssmDouble* y){ /*{{{*/1546 void FemModel::Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y){ /*{{{*/ 1547 1547 1548 1548 int i; … … 1554 1554 for (i=0;i<elements->Size();i++){ 1555 1555 element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 1556 element->GiaDeflection(wg, x,y);1557 } 1558 } 1559 /*}}}*/ 1560 #endif 1556 element->GiaDeflection(wg,dwgdt, x,y); 1557 } 1558 } 1559 /*}}}*/ 1560 #endif -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.h ¶
r14648 r14807 94 94 #endif 95 95 #ifdef _HAVE_GIA_ 96 void Deflection(Vector<IssmDouble>* wg, IssmDouble* x, IssmDouble* y);96 void Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y); 97 97 #endif 98 98 void SystemMatricesx(Matrix<IssmDouble>** pKff, Matrix<IssmDouble>** pKfs, Vector<IssmDouble>** ppf, Vector<IssmDouble>** pdf, IssmDouble* pkmax); -
TabularUnified issm/trunk-jpl/src/c/classes/GiaDeflectionCoreArgs.h ¶
r14746 r14807 25 25 IssmDouble lithosphere_thickness; 26 26 27 /*gia solution parameters: */ 28 int iedge; 29 int irate; 30 27 31 /*ice properties: */ 28 32 IssmDouble rho_ice; -
TabularUnified issm/trunk-jpl/src/c/classes/objects/Elements/Element.h ¶
r14796 r14807 101 101 102 102 #ifdef _HAVE_GIA_ 103 virtual void GiaDeflection(Vector<IssmDouble>* wg, IssmDouble* x,IssmDouble* y)=0;103 virtual void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y)=0; 104 104 #endif 105 105 -
TabularUnified issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp ¶
r14796 r14807 2171 2171 name==QmuSurfaceEnum || 2172 2172 name==QmuTemperatureEnum || 2173 name==QmuMeltingEnum 2173 name==QmuMeltingEnum || 2174 name==GiaWEnum || 2175 name==GiadWdtEnum 2176 2174 2177 ) { 2175 2178 return true; … … 3498 3501 #ifdef _HAVE_GIA_ 3499 3502 /*FUNCTION Penta::GiaDeflection {{{*/ 3500 void Penta::GiaDeflection(Vector<IssmDouble>* wg, IssmDouble* x,IssmDouble* y){3503 void Penta::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){ 3501 3504 _error_("GIA deflection not implemented yet!"); 3502 3505 } -
TabularUnified issm/trunk-jpl/src/c/classes/objects/Elements/Penta.h ¶
r14796 r14807 144 144 145 145 #ifdef _HAVE_GIA_ 146 void GiaDeflection(Vector<IssmDouble>* wg, IssmDouble* x,IssmDouble* y);146 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y); 147 147 #endif 148 148 -
TabularUnified issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp ¶
r14804 r14807 2060 2060 name==QmuSurfaceEnum || 2061 2061 name==QmuTemperatureEnum || 2062 name==QmuMeltingEnum 2062 name==QmuMeltingEnum || 2063 name==GiaWEnum || 2064 name==GiadWdtEnum 2063 2065 ){ 2064 2066 return true; … … 3072 3074 #ifdef _HAVE_GIA_ 3073 3075 /*FUNCTION Tria::GiaDeflection {{{*/ 3074 void Tria::GiaDeflection(Vector<IssmDouble>* wg, IssmDouble* x, IssmDouble* y){3076 void Tria::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x, IssmDouble* y){ 3075 3077 3076 3078 int i; … … 3087 3089 int numtimes; 3088 3090 Input* thickness_input=NULL; 3091 3092 /*gia solution parameters:*/ 3093 int output_rates=0; 3094 int cross_section_shape=0; 3089 3095 3090 3096 /*gia material parameters: */ … … 3102 3108 /*output: */ 3103 3109 IssmDouble wi; 3110 IssmDouble dwidt; 3104 3111 3105 3112 /*arguments to GiaDeflectionCorex: */ … … 3108 3115 /*how many dofs are we working with here? */ 3109 3116 this->parameters->FindParam(&gsize,MeshNumberofverticesEnum); 3117 3118 /*recover gia solution parameters: */ 3119 this->parameters->FindParam(&output_rates,GiaOutputRatesEnum); 3120 this->parameters->FindParam(&cross_section_shape,GiaCrossSectionShapeEnum); 3110 3121 3111 3122 /*what time is it? :*/ … … 3157 3168 arguments.rho_ice=rho_ice; 3158 3169 arguments.idisk=this->id; 3170 arguments.irate=output_rates; 3171 arguments.iedge=cross_section_shape; 3159 3172 3160 3173 for(i=0;i<gsize;i++){ … … 3167 3180 3168 3181 /*for this Tria, compute contribution to rebound at vertex i: */ 3169 GiaDeflectionCorex(&wi,& arguments);3182 GiaDeflectionCorex(&wi,&dwidt,&arguments); 3170 3183 3171 3184 /*plug value into solution vector: */ 3172 3185 wg->SetValue(i,wi,ADD_VAL); 3186 dwgdt->SetValue(i,dwidt,ADD_VAL); 3173 3187 3174 3188 } -
TabularUnified issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h ¶
r14796 r14807 142 142 143 143 #ifdef _HAVE_GIA_ 144 void GiaDeflection(Vector<IssmDouble>* wg, IssmDouble* x,IssmDouble* y);144 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y); 145 145 void InputUpdateFromSolutionGia(IssmDouble* solution); 146 146 #endif -
TabularUnified issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp ¶
r14784 r14807 468 468 case StressTensoryzEnum : return "StressTensoryz"; 469 469 case StressTensorzzEnum : return "StressTensorzz"; 470 case GiaOutputRatesEnum : return "GiaOutputRates"; 471 case GiaCrossSectionShapeEnum : return "GiaCrossSectionShape"; 472 case GiadWdtEnum : return "GiadWdt"; 470 473 case GiaWEnum : return "GiaW"; 471 474 case P0Enum : return "P0"; -
TabularUnified issm/trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp ¶
r14803 r14807 68 68 /*}}}*/ 69 69 70 void GiaDeflectionCorex( IssmDouble* pwi, GiaDeflectionCoreArgs* arguments){70 void GiaDeflectionCorex( IssmDouble* pwi, IssmDouble* pdwidt, GiaDeflectionCoreArgs* arguments){ 71 71 72 72 /*output: */ 73 73 IssmDouble wi=0; 74 IssmDouble dwidt=0; 74 75 75 /*inputs: */76 int iedge=1; //c iedge ......... = 1 square-edged, = 2 elliptical disc x-section (see naruse.f)76 /*inputs: {{{*/ 77 /*constant: */ 77 78 int idisk=1; // disk # 78 int irate=0; // =0 fetch w solution (m) only; =1 dw/dt (mm/yr) only79 79 80 /*intermediary: */ 80 /*coming from the model structure, runtime configurable:*/ 81 /*gia solution parameters: */ 82 int iedge=0; 83 int irate=0; 81 84 82 /* inputs: {{{*/85 /*gia inputs: */ 83 86 IssmDouble ri; //radial distance from center of disk to vertex i 84 87 IssmDouble re; //radius of disk … … 121 124 rho_ice=arguments->rho_ice; 122 125 disk_id=arguments->idisk; 126 irate=arguments->irate; 127 iedge=arguments->iedge; 128 129 //printf("%g %g %g %i %g %g %g %g %g %g %g %g %i\n", ri,re,current_he,numtimes,currenttime,lithosphere_shear_modulus,lithosphere_density,mantle_shear_modulus,mantle_viscosity, mantle_density,lithosphere_thickness,rho_ice,disk_id); 130 123 131 /*}}}*/ 124 132 133 /*Modify inputs to match naruse code: */ 134 //from our model, irate comes in with values in [1,2], which maps into [0,1] in naruse: 135 irate=irate-1; 136 137 /*Prepare block inputs for fortran distme and what0 routines of the naruse code: {{{*/ 125 138 /*Now, let's set pset from the data that we got in input to GiaDeflectionCorex: */ 126 139 blockp_.pset[0]=lithosphere_thickness; … … 147 160 /*radial distance of i-th element: */ 148 161 blockrad_.distrad=ri/1000.0; // in km 162 /*}}}*/ 149 163 164 150 165 /*Call distme driver: */ 151 166 distme_(&idisk,&iedge); … … 154 169 what0_(&idisk,&iedge); 155 170 156 /*this is the solution: */ 157 wi = blocks_.aswokm; 171 /*output solution: */ 172 if(irate==0){ 173 wi = blocks_.aswokm; 174 *pwi=wi; 175 *pdwidt=0; 176 } 177 else if (irate==1){ 178 dwidt = blocks_.aswokm; 179 *pdwidt=dwidt; 180 *pwi=0; 181 } 158 182 159 /*allocate output pointer: */ 160 *pwi=wi; 161 162 // printf("wi: %g deflection: %g \n",wi,blocks_.aswokm); 183 //printf("deflection: %g deflection rate %g\n",wi, dwidt); 163 184 164 185 } -
TabularUnified issm/trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.h ¶
r14734 r14807 10 10 11 11 /* local prototypes: */ 12 void GiaDeflectionCorex( IssmDouble* pwi, GiaDeflectionCoreArgs* arguments);12 void GiaDeflectionCorex( IssmDouble* pwi, IssmDouble* pdwidt, GiaDeflectionCoreArgs* arguments); 13 13 14 14 #endif /* _GIADEFLECTIONCOREX_H */ -
TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp ¶
r14769 r14807 105 105 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum)); 106 106 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIssmbgradientsEnum)); 107 parameters->AddObject(iomodel->CopyConstantObject(GiaCrossSectionShapeEnum)); 108 parameters->AddObject(iomodel->CopyConstantObject(GiaOutputRatesEnum)); 107 109 108 110 iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum); -
TabularUnified issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp ¶
r14784 r14807 478 478 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum; 479 479 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; 480 else if (strcmp(name,"GiaOutputRates")==0) return GiaOutputRatesEnum; 481 else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum; 482 else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum; 480 483 else if (strcmp(name,"GiaW")==0) return GiaWEnum; 481 484 else if (strcmp(name,"P0")==0) return P0Enum; … … 504 507 else if (strcmp(name,"MaxVx")==0) return MaxVxEnum; 505 508 else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum; 506 else if (strcmp(name,"MinVy")==0) return MinVyEnum;507 else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;508 else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;509 509 else stage=5; 510 510 } 511 511 if(stage==5){ 512 if (strcmp(name,"MinVz")==0) return MinVzEnum; 512 if (strcmp(name,"MinVy")==0) return MinVyEnum; 513 else if (strcmp(name,"MaxVy")==0) return MaxVyEnum; 514 else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum; 515 else if (strcmp(name,"MinVz")==0) return MinVzEnum; 513 516 else if (strcmp(name,"MaxVz")==0) return MaxVzEnum; 514 517 else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum; -
TabularUnified issm/trunk-jpl/src/c/solutions/gia_core.cpp ¶
r14650 r14807 15 15 int i; 16 16 Vector<IssmDouble>* wg = NULL; 17 Vector<IssmDouble>* dwgdt = NULL; 17 18 IssmDouble* x = NULL; 18 19 IssmDouble* y = NULL; … … 35 36 gsize = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum); 36 37 wg = new Vector<IssmDouble>(gsize); 38 dwgdt = new Vector<IssmDouble>(gsize); 37 39 38 40 /*first, recover x and y vectors from vertices: */ … … 40 42 41 43 /*call the main module: */ 42 femmodel->Deflection(wg, x,y);44 femmodel->Deflection(wg,dwgdt,x,y); 43 45 44 46 /*assemble vector: */ 45 47 wg->Assemble(); 48 dwgdt->Assemble(); 46 49 47 50 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,wg); 51 InputUpdateFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,dwgdt,GiadWdtEnum,VertexEnum); 48 52 49 53 if(save_results){ 50 54 if(VerboseSolution()) _pprintLine_(" saving results"); 51 55 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,GiaWEnum); 56 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,GiadWdtEnum); 52 57 } 53 58 -
TabularUnified issm/trunk-jpl/src/m/classes/gia.m ¶
r14753 r14807 7 7 properties (SetAccess=public) 8 8 lithosphere_thickness = NaN; 9 output_rates = 0; 10 cross_section_shape = 0; 9 11 end 10 12 methods … … 18 20 end % }}} 19 21 function obj = setdefaultparameters(obj) % {{{ 20 22 obj.output_rates=1; %don't output rates by default (see irate in GiaDeflectionCorex) 23 obj.cross_section_shape=1; %square as default (see iedge in GiaDeflectionCorex) 21 24 end % }}} 22 25 function md = checkconsistency(obj,md,solution,analyses) % {{{ … … 24 27 if ~ismember(GiaAnalysisEnum(),analyses), return; end 25 28 md = checkfield(md,'gia.lithosphere_thickness','NaN',1,'size',[md.mesh.numberofvertices 1],'>',0); 29 md = checkfield(md,'gia.output_rates','numel',[1],'values',[1,2]); 30 md = checkfield(md,'gia.cross_section_shape','numel',[1],'values',[1,2]); 26 31 27 32 end % }}} … … 30 35 31 36 fielddisplay(obj,'lithosphere_thickness','lithosphere thickness[km]'); 37 fielddisplay(obj,'output_rates','1: fetch w solution (m) (default). 2: fetch dw/dt (mm/yr). See irate in GiaDeflectionCore'); 38 fielddisplay(obj,'cross_section_shape','1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore'); 32 39 33 40 end % }}} 34 41 function marshall(obj,fid) % {{{ 35 42 WriteData(fid,'data',obj.lithosphere_thickness,'format','DoubleMat','mattype',1,'enum',GiaLithosphereThicknessEnum()); 43 WriteData(fid,'object',obj,'fieldname','output_rates','format','Integer'); 44 WriteData(fid,'object',obj,'fieldname','cross_section_shape','format','Integer'); 36 45 end % }}} 37 46 end -
TabularUnified issm/trunk-jpl/src/m/enum/EnumDefinitions.py ¶
r14784 r14807 4519 4519 return StringToEnum('StressTensorzz')[0] 4520 4520 4521 def GiaOutputRatesEnum(): 4522 """ 4523 GIAOUTPUTRATESENUM - Enum of GiaOutputRates 4524 4525 Usage: 4526 macro=GiaOutputRatesEnum() 4527 """ 4528 4529 return StringToEnum('GiaOutputRates')[0] 4530 4531 def GiaCrossSectionShapeEnum(): 4532 """ 4533 GIACROSSSECTIONSHAPEENUM - Enum of GiaCrossSectionShape 4534 4535 Usage: 4536 macro=GiaCrossSectionShapeEnum() 4537 """ 4538 4539 return StringToEnum('GiaCrossSectionShape')[0] 4540 4541 def GiadWdtEnum(): 4542 """ 4543 GIADWDTENUM - Enum of GiadWdt 4544 4545 Usage: 4546 macro=GiadWdtEnum() 4547 """ 4548 4549 return StringToEnum('GiadWdt')[0] 4550 4521 4551 def GiaWEnum(): 4522 4552 """ … … 5427 5457 """ 5428 5458 5429 return 54 15430 5459 return 544 5460 -
TabularUnified issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m ¶
r14784 r14807 9 9 % macro=MaximumNumberOfEnums() 10 10 11 macro=54 1;11 macro=544;
Note:
See TracChangeset
for help on using the changeset viewer.