Changeset 503
- Timestamp:
- 05/19/09 15:38:40 (16 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/ConfigureObjectsx/ConfigureObjectsx.cpp
r101 r503 22 22 23 23 /*intermediary: */ 24 24 25 elements->Configure(elements,loads,nodes,materials); 25 26 loads->Configure(elements,loads,nodes,materials); -
issm/trunk/src/c/DataSet/DataSet.cpp
r483 r503 1105 1105 1106 1106 pengrid=(Pengrid*)(*object); 1107 1107 1108 pengrid->PenaltyConstrain(&unstable,inputs,analysis_type,sub_analysis_type); 1108 1109 -
issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp
r483 r503 76 76 CreateConstraintsThermal(pconstraints,model,model_handle); 77 77 CreateLoadsThermal(ploads,model,model_handle); 78 CreateParametersThermal(pparameters,model,model_handle); 78 79 79 80 } … … 83 84 CreateConstraintsMelting(pconstraints,model,model_handle); 84 85 CreateLoadsMelting(ploads,model,model_handle); 86 CreateParametersMelting(pparameters,model,model_handle); 85 87 } 86 88 else if (strcmp(model->analysis_type,"prognostic")==0){ -
issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp
r483 r503 1 /*!\file: CreateParameters DiagnosticHoriz.cpp1 /*!\file: CreateParametersMelting.cpp 2 2 * \brief driver for creating parameters dataset, for diagnostic horiz analysis. 3 3 */ 4 4 5 5 #undef __FUNCT__ 6 #define __FUNCT__ "CreateParameters DiagnosticHoriz"6 #define __FUNCT__ "CreateParametersMelting" 7 7 8 8 #include "../../DataSet/DataSet.h" … … 13 13 #include "../Model.h" 14 14 15 void CreateParameters DiagnosticHoriz(DataSet** pparameters,Model* model,ConstDataHandle model_handle){15 void CreateParametersMelting(DataSet** pparameters,Model* model,ConstDataHandle model_handle){ 16 16 17 17 Param* param = NULL; -
issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp
r483 r503 1 /*!\file: CreateParameters DiagnosticHoriz.cpp1 /*!\file: CreateParametersThermal.cpp 2 2 * \brief driver for creating parameters dataset, for diagnostic horiz analysis. 3 3 */ 4 4 5 5 #undef __FUNCT__ 6 #define __FUNCT__ "CreateParameters DiagnosticHoriz"6 #define __FUNCT__ "CreateParametersThermal" 7 7 8 8 #include "../../DataSet/DataSet.h" … … 13 13 #include "../Model.h" 14 14 15 void CreateParameters DiagnosticHoriz(DataSet** pparameters,Model* model,ConstDataHandle model_handle){15 void CreateParametersThermal(DataSet** pparameters,Model* model,ConstDataHandle model_handle){ 16 16 17 17 Param* param = NULL; … … 23 23 double* vy=NULL; 24 24 double* vz=NULL; 25 double* pressure=NULL; 25 26 26 27 /*recover parameters : */ … … 63 64 xfree((void**)&vz); 64 65 66 /*Get pressure: */ 67 ModelFetchData((void**)&pressure,NULL,NULL,model_handle,"pressure","Matrix","Mat"); 68 69 count++; 70 param= new Param(count,"pressure",DOUBLEVEC); 71 if(pressure) param->SetDoubleVec(pressure,model->numberofnodes); 72 else param->SetDoubleVec(pressure,0); 73 parameters->AddObject(param); 74 75 /*Free pressure: */ 76 xfree((void**)&pressure); 77 78 65 79 /*Assign output pointer: */ 66 80 *pparameters=parameters; -
issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp
r465 r503 24 24 double* vy=NULL; 25 25 double* vz=NULL; 26 double* pressure=NULL; 26 27 27 28 double* u_g=NULL; … … 54 55 55 56 56 if ( (analysis_type==ControlAnalysisEnum()) || (analysis_type==DiagnosticAnalysisEnum()) ){57 if ( (analysis_type==ControlAnalysisEnum()) || (analysis_type==DiagnosticAnalysisEnum()) || (analysis_type==ThermalAnalysisEnum())){ 57 58 58 59 parameters->FindParam((void*)&vx,"vx"); … … 141 142 } 142 143 144 if(analysis_type==ThermalAnalysisEnum()){ 145 146 parameters->FindParam((void*)&pressure,"pressure"); 147 148 /*Now, from pressure, build p_g, correctly partitioned: */ 149 p_g=(double*)xcalloc(numberofnodes,sizeof(double)); 150 151 for(i=0;i<numberofnodes;i++){ 152 p_g[(int)(partition[i])]= pressure[i]; 153 } 154 155 /*Now, create new parameter: */ 156 count++; 157 param= new Param(count,"p_g",DOUBLEVEC); 158 param->SetDoubleVec(p_g,numberofnodes); 159 parameters->AddObject(param); 160 161 /*erase old parameter: */ 162 param=(Param*)parameters->FindParamObject("pressure"); 163 parameters->DeleteObject((Object*)param); 164 } 165 143 166 xfree((void**)&partition); 144 167 … … 150 173 xfree((void**)&vx_obs); 151 174 xfree((void**)&vy_obs); 175 xfree((void**)&pressure); 152 176 xfree((void**)&control_parameter); 153 177 xfree((void**)&u_g_obs); -
issm/trunk/src/c/objects/Node.cpp
r301 r503 444 444 ParameterInputs* inputs=NULL; 445 445 Node* node=this; 446 int * dof={0};446 int dof[1]={0}; 447 447 448 448 /*Recover parameter inputs: */ -
issm/trunk/src/c/objects/Pengrid.cpp
r498 r503 529 529 double meltingpoint; 530 530 int new_active; 531 int * dofs1={0};531 int dofs1[1]={0}; 532 532 int unstable=0; 533 533 … … 569 569 unstable=1; 570 570 } 571 571 572 572 //Set penalty flag 573 573 active=new_active; -
issm/trunk/src/c/objects/Penta.cpp
r483 r503 3539 3539 double vz_list[numgrids]; 3540 3540 double vxvyvz_list[numgrids][3]; 3541 double pressure_list[3];3542 double pressure;3543 3541 double temperature_list[numgrids]; 3544 3542 double temperature; … … 3599 3597 if(!found)throw ErrorException(__FUNCT__," could not find velocity in inputs!"); 3600 3598 3601 found=inputs->Recover("dt",&dt); 3602 if((!found) && (sub_analysis_type==TransientAnalysisEnum()))throw ErrorException(__FUNCT__," could not find dt in inputs!"); 3603 3604 found=inputs->Recover("pressure",&pressure_list[0],1,dofs1,numgrids,(void**)nodes); 3605 if(!found)throw ErrorException(__FUNCT__," could not find pressure in inputs!"); 3606 3607 found=inputs->Recover("temperature",&temperature_list[0],1,dofs1,numgrids,(void**)nodes); 3608 if(!found)throw ErrorException(__FUNCT__," could not find temperature in inputs!"); 3609 3599 if(sub_analysis_type==TransientAnalysisEnum()){ 3600 found=inputs->Recover("dt",&dt); 3601 if(!found)throw ErrorException(__FUNCT__," could not find dt in inputs!"); 3602 3603 found=inputs->Recover("temperature",&temperature_list[0],1,dofs1,numgrids,(void**)nodes); 3604 if(!found)throw ErrorException(__FUNCT__," could not find temperature in inputs!"); 3605 } 3606 3610 3607 for(i=0;i<numgrids;i++){ 3611 3608 vx_list[i]=vxvyvz_list[i][0]; … … 3662 3659 /* Build transient now */ 3663 3660 if(sub_analysis_type==TransientAnalysisEnum()){ 3661 GetParameterValue(&temperature, &temperature_list[0],gauss_coord); 3664 3662 scalar_transient=temperature*Jdet*gauss_weight; 3665 3663 for(i=0;i<numgrids;i++){ … … 3676 3674 if(onbed && shelf){ 3677 3675 3676 3678 3677 tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria. 3679 3678 tria->CreatePVectorThermalShelf(pg,inputs, analysis_type,sub_analysis_type); 3680 3679 delete tria; 3681 return;3682 3680 } 3683 3681 3684 3682 /* Geothermal flux on ice sheet base and basal friction */ 3685 3683 if(onbed && !shelf){ 3686 3684 3687 3685 tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria. 3688 3686 tria->CreatePVectorThermalSheet(pg,inputs, analysis_type,sub_analysis_type); 3689 3687 delete tria; 3690 return;3691 3688 } 3692 3689 3693 3690 cleanup_and_return: 3694 xfree((void**)first_gauss_area_coord); 3695 xfree((void**)second_gauss_area_coord); 3696 xfree((void**)third_gauss_area_coord); 3697 xfree((void**)vert_gauss_coord); 3698 xfree((void**)area_gauss_weights); 3699 xfree((void**)vert_gauss_weights); 3691 xfree((void**)&first_gauss_area_coord); 3692 xfree((void**)&second_gauss_area_coord); 3693 xfree((void**)&third_gauss_area_coord); 3694 xfree((void**)&vert_gauss_coord); 3695 xfree((void**)&area_gauss_weights); 3696 xfree((void**)&vert_gauss_weights); 3697 3700 3698 } 3701 3699 -
issm/trunk/src/c/objects/Tria.cpp
r483 r503 2598 2598 2599 2599 /*recover extra inputs from users, dt: */ 2600 inputs->Recover("dt",&dt);2600 found=inputs->Recover("dt",&dt); 2601 2601 if(!found)throw ErrorException(__FUNCT__," could not find dt in inputs!"); 2602 2602 -
issm/trunk/src/m/solutions/cielo/thermal.m
r472 r503 19 19 20 20 %initialize inputs 21 displaystring( debug,'\n%s',['setup inputs...']);21 displaystring(md.debug,'\n%s',['setup inputs...']); 22 22 inputs=inputlist; 23 23 inputs=add(inputs,'velocity',m_t.parameters.u_g,'doublevec',3,m_t.parameters.numberofnodes); … … 27 27 if strcmpi(md.sub_analysis_type,'steady'), 28 28 29 displaystring( debug,'\n%s',['computing temperatures...']);29 displaystring(md.debug,'\n%s',['computing temperatures...']); 30 30 [t_g m_t.loads melting_offset]=thermal_core(m_t,inputs,'thermal','steady'); 31 31 32 displaystring( debug,'\n%s',['computing melting...']);32 displaystring(md.debug,'\n%s',['computing melting...']); 33 33 inputs=add(inputs,'melting_offset',melting_offset,'double'); 34 34 inputs=add(inputs,'temperature',t_g,'doublevec',1,m_t.parameters.numberofnodes); 35 35 melting_g=diagnostic_core_linear(m_m,inputs,'melting','steady'); 36 36 37 displaystring( debug,'\n%s',['load results...']);37 displaystring(md.debug,'\n%s',['load results...']); 38 38 md.temperature=t_g; 39 39 md.melting=melting_g*md.yts; %from m/s to m/a … … 53 53 for n=1:nsteps, 54 54 55 displaystring( debug,'\n%s%i/%i\n','time step: ',n,nsteps);55 displaystring(md.debug,'\n%s%i/%i\n','time step: ',n,nsteps); 56 56 57 displaystring( debug,'\n%s',[' computing temperatures...']);57 displaystring(md.debug,'\n%s',[' computing temperatures...']); 58 58 inputs=add(inputs,'temperature',soln(n).t_g,'doublevec',1,m_t.parameters.numberofnodes); 59 59 [soln(n+1).t_g m_t.loads melting_offset]=thermal_core(m_t,inputs); -
issm/trunk/src/m/solutions/cielo/thermal_core.m
r472 r503 26 26 27 27 %system matrices 28 [K_gg_ , p_g_]=SystemMatrices(m.elements,m.nodes,loads,m.materials,m.parameters,inputs); 29 [K_gg_ , p_g_]=SystemMatrices(K_gg,p_g,m.elements,m.nodes,loads,m.materials,m.parameters,inputs); 28 displaystring(m.parameters.debug,'%s',[' system matrices']); 29 [K_gg , p_g]=SystemMatrices(m.elements,m.nodes,loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type); 30 displaystring(m.parameters.debug,'%s',[' penalty system matrices']); 31 [K_gg , p_g, melting_offset]=PenaltySystemMatrices(K_gg,p_g,m.elements,m.nodes,loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type); 30 32 31 33 %Reduce tangent matrix from g size to f size … … 36 38 37 39 %Solve 38 displaystring(m.parameters.debug,' \n%s',[' condition number of stiffness matrix: ',condest(K_ff)]);40 displaystring(m.parameters.debug,'%s',[' condition number of stiffness matrix: ',condest(K_ff)]); 39 41 [t_f]=Solver(K_ff,p_f,[],m.parameters); 40 42 41 43 %Merge back to g set 44 displaystring(m.parameters.debug,'%s',[' merging solution back to g set']); 42 45 [t_g]= Mergesolutionfromftog( t_f, m.Gmn, m.ys, m.nodesets ); 43 46 44 47 %Update inputs in datasets 45 48 inputs=add(inputs,'temperature',t_g,'doublevec',m.parameters.numberofdofspernode,m.parameters.numberofnodes); 49 displaystring(m.parameters.debug,'%s',[' update inputs']); 46 50 [m.elements,m.nodes, loads,m.materials]=UpdateFromInputs(m.elements,m.nodes, loads,m.materials,inputs); 47 51 48 52 %penalty constraints 49 [m.loads,constraints_converged,num_unstable_constraints] =PenaltyConstraints( m.elements,m.nodes, m.loads, m.materials,m.parameters,inputs); 53 displaystring(m.parameters.debug,'%s',[' penalty constraints']); 54 [m.loads,constraints_converged,num_unstable_constraints] =PenaltyConstraints( m.elements,m.nodes, m.loads, m.materials,m.parameters,inputs,analysis_type,sub_analysis_type); 50 55 51 56 if ~converged, 52 57 displaystring(m.parameters.debug,'\n%s%i','#unstable constraints ',num_unstable_constraints); 58 m.parameters.min_thermal_constraints 53 59 54 if num_unstable_constraints< m.parameters.min_thermal_constraints,60 if num_unstable_constraints<=m.parameters.min_thermal_constraints, 55 61 converged=1; 56 62 end -
issm/trunk/src/mex/PenaltyConstraints/PenaltyConstraints.cpp
r465 r503 36 36 FetchData((void**)&loads,NULL,NULL,LOADSIN,"DataSet",NULL); 37 37 FetchData((void**)&materials,NULL,NULL,MATERIALS,"DataSet",NULL); 38 38 39 39 /*parameters: */ 40 40 FetchData((void**)&analysis_type_string,NULL,NULL,ANALYSIS,"String",NULL); … … 73 73 { 74 74 _printf_("\n"); 75 _printf_(" usage: [loads, constraints_converged, num_unstable_constraints] = %s(elements,nodes,loads,materials,params,inputs );\n",__FUNCT__);75 _printf_(" usage: [loads, constraints_converged, num_unstable_constraints] = %s(elements,nodes,loads,materials,params,inputs,analysis_type,sub_analysis_type);\n",__FUNCT__); 76 76 _printf_("\n"); 77 77 } -
issm/trunk/src/mex/PenaltySystemMatrices/PenaltySystemMatrices.cpp
r472 r503 81 81 { 82 82 _printf_("\n"); 83 _printf_(" usage: [Kgg,pg] = %s(Kggin,pgin,eleemnts,nodes,loads,materials,params,inputs );\n",__FUNCT__);83 _printf_(" usage: [Kgg,pg] = %s(Kggin,pgin,eleemnts,nodes,loads,materials,params,inputs,analysis_type,sub_analysis_type);\n",__FUNCT__); 84 84 _printf_("\n"); 85 85 }
Note:
See TracChangeset
for help on using the changeset viewer.