Changeset 13073
- Timestamp:
- 08/16/12 18:30:40 (13 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 92 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/configs/config-macosx64-larour-ad.sh
r12988 r13073 3 3 ./configure \ 4 4 --prefix=$ISSM_DIR \ 5 --without-modules\ 6 --without-thermal \ 7 --without-control \ 8 --without-hydrology \ 9 --without-diagnostic \ 10 --without-balanced \ 11 --without-responses \ 12 --without-slope \ 13 --without-rifts \ 14 --without-steadystate \ 15 --without-transient \ 16 --without-3d \ 17 --without-groundingline \ 5 --without-modules \ 18 6 --without-kriging \ 19 7 --with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \ -
issm/trunk-jpl/src/c/Container/Observations.cpp
r13056 r13073 64 64 options->Get(&minlength,"boxlength"); 65 65 if(minlength<=0)_error_("boxlength should be a positive number"); 66 maxdepth= int(log(max(xmax-xmin,ymax-ymin)/minlength +1)/log(2.0));66 maxdepth=reCast<int,IssmDouble>(log(max(xmax-xmin,ymax-ymin)/minlength +1)/log(2.0)); 67 67 } 68 68 else{ -
issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp
r13056 r13073 197 197 /*}}}*/ 198 198 /*FUNCTION GaussTria::GaussFromCoords{{{*/ 199 void GaussTria::GaussFromCoords(Issm PDouble x,IssmPDouble y,IssmPDouble* xyz_list){199 void GaussTria::GaussFromCoords(IssmDouble x,IssmDouble y,IssmDouble* xyz_list){ 200 200 201 201 /*Intermediaries*/ 202 Issm PDouble area = 0;203 Issm PDouble x1,y1,x2,y2,x3,y3;202 IssmDouble area = 0; 203 IssmDouble x1,y1,x2,y2,x3,y3; 204 204 205 205 /*in debugging mode: check that the default constructor has been called*/ -
issm/trunk-jpl/src/c/classes/gauss/GaussTria.h
r12822 r13073 22 22 public: 23 23 IssmPDouble weight; 24 Issm PDouble coord1;25 Issm PDouble coord2;26 Issm PDouble coord3;24 IssmDouble coord1; 25 IssmDouble coord2; 26 IssmDouble coord3; 27 27 28 28 public: … … 38 38 int end(void); 39 39 void Echo(void); 40 void GaussFromCoords(Issm PDouble x1,IssmPDouble y1,IssmPDouble* xyz_list);40 void GaussFromCoords(IssmDouble x1,IssmDouble y1,IssmDouble* xyz_list); 41 41 void GaussPoint(int ig); 42 42 void GaussVertex(int iv); -
issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp
r13065 r13073 67 67 /*Build neighbors list*/ 68 68 if (xIsNan<IssmDouble>(iomodel->Data(MeshUpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta 69 else penta_elements_ids[1]= (int)(iomodel->Data(MeshUpperelementsEnum)[index]);69 else penta_elements_ids[1]=reCast<int,IssmDouble>((iomodel->Data(MeshUpperelementsEnum)[index])); 70 70 if (xIsNan<IssmDouble>(iomodel->Data(MeshLowerelementsEnum)[index])) penta_elements_ids[0]=this->id; //lower penta is the same penta 71 else penta_elements_ids[0]= (int)(iomodel->Data(MeshLowerelementsEnum)[index]);71 else penta_elements_ids[0]=reCast<int,IssmDouble>((iomodel->Data(MeshLowerelementsEnum)[index])); 72 72 this->InitHookNeighbors(penta_elements_ids); 73 73 74 74 /*Build horizontalneighborsids list: */ 75 75 _assert_(iomodel->Data(MeshElementconnectivityEnum)); 76 for(i=0;i<3;i++) this->horizontalneighborsids[i]= (int)iomodel->Data(MeshElementconnectivityEnum)[3*index+i]-1;76 for(i=0;i<3;i++) this->horizontalneighborsids[i]=reCast<int,IssmDouble>(iomodel->Data(MeshElementconnectivityEnum)[3*index+i])-1; 77 77 78 78 //this->parameters: we still can't point to it, it may not even exist. Configure will handle this. … … 1253 1253 1254 1254 if ((code==5) || (code==1)){ //boolean 1255 this->inputs->AddInput(new BoolInput(name, (bool)scalar));1255 this->inputs->AddInput(new BoolInput(name,reCast<bool,IssmDouble>(scalar))); 1256 1256 } 1257 1257 else if ((code==6) || (code==2)){ //integer 1258 this->inputs->AddInput(new IntInput(name, (int)scalar));1258 this->inputs->AddInput(new IntInput(name,reCast<int,IssmDouble>(scalar))); 1259 1259 } 1260 1260 else if ((code==7) || (code==3)){ //IssmDouble 1261 this->inputs->AddInput(new DoubleInput(name, (IssmDouble)scalar));1261 this->inputs->AddInput(new DoubleInput(name,scalar)); 1262 1262 } 1263 1263 else _error_("could not recognize nature of vector from code " << code); … … 1291 1291 for(i=0;i<6;i++){ 1292 1292 _assert_(iomodel->Data(MeshElementsEnum)); 1293 penta_vertex_ids[i]= (int)iomodel->Data(MeshElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab1293 penta_vertex_ids[i]=reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[6*index+i]); //ids for vertices are in the elements array from Matlab 1294 1294 } 1295 1295 … … 1336 1336 1337 1337 if (code==5){ //boolean 1338 this->inputs->AddInput(new BoolInput(vector_enum, (bool)vector[index]));1338 this->inputs->AddInput(new BoolInput(vector_enum,reCast<bool,IssmDouble>(vector[index]))); 1339 1339 } 1340 1340 else if (code==6){ //integer 1341 this->inputs->AddInput(new IntInput(vector_enum, (int)vector[index]));1341 this->inputs->AddInput(new IntInput(vector_enum,reCast<int,IssmDouble>(vector[index]))); 1342 1342 } 1343 1343 else if (code==7){ //IssmDouble 1344 this->inputs->AddInput(new DoubleInput(vector_enum, (IssmDouble)vector[index]));1344 this->inputs->AddInput(new DoubleInput(vector_enum,vector[index])); 1345 1345 } 1346 1346 else _error_("could not recognize nature of vector from code " << code); … … 1626 1626 /*Recover vertices ids needed to initialize inputs*/ 1627 1627 for(i=0;i<6;i++){ 1628 penta_vertex_ids[i]= (int)iomodel->Data(MeshElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab1628 penta_vertex_ids[i]=reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[6*index+i]); //ids for vertices are in the elements array from Matlab 1629 1629 } 1630 1630 … … 1633 1633 if (control_analysis && iomodel->Data(InversionControlParametersEnum)){ 1634 1634 for(i=0;i<num_control_type;i++){ 1635 switch( (int)iomodel->Data(InversionControlParametersEnum)[i]){1635 switch(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])){ 1636 1636 case BalancethicknessThickeningRateEnum: 1637 1637 if (iomodel->Data(BalancethicknessThickeningRateEnum)){ … … 1669 1669 /*Matice will take care of it*/ break; 1670 1670 default: 1671 _error_("Control " << EnumToStringx( (int)iomodel->Data(InversionControlParametersEnum)[i]) << " not implemented yet");1671 _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet"); 1672 1672 } 1673 1673 } … … 1705 1705 } 1706 1706 else{ 1707 _error_("Approximation type " << EnumToStringx( (int)iomodel->Data(FlowequationElementEquationEnum)[index]) << " not supported yet");1707 _error_("Approximation type " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(FlowequationElementEquationEnum)[index])) << " not supported yet"); 1708 1708 } 1709 1709 } … … 1951 1951 1952 1952 case VertexEnum: 1953 1954 /*New PentaVertexInpu*/ 1955 IssmDouble values[6]; 1956 1957 /*Get values on the 6 vertices*/ 1958 for (int i=0;i<6;i++){ 1959 values[i]=vector[this->nodes[i]->GetVertexDof()]; 1953 { 1954 1955 /*New PentaVertexInpu*/ 1956 IssmDouble values[6]; 1957 1958 /*Get values on the 6 vertices*/ 1959 for (int i=0;i<6;i++){ 1960 values[i]=vector[this->nodes[i]->GetVertexDof()]; 1961 } 1962 1963 /*update input*/ 1964 this->inputs->AddInput(new PentaP1Input(name,values)); 1965 return; 1966 break; 1960 1967 } 1961 1962 /*update input*/1963 this->inputs->AddInput(new PentaP1Input(name,values));1964 return;1965 1968 1966 1969 default: … … 2063 2066 2064 2067 for(i=0;i<NUMVERTICES;i++){ 2065 if ( flags[nodes[i]->Sid()]){2068 if (reCast<bool,IssmDouble>(flags[nodes[i]->Sid()])){ 2066 2069 shelf=true; 2067 2070 break; … … 2164 2167 for(i=0;i<NUMVERTICES;i++){ 2165 2168 /*Ice shelf: if bed below bathymetry, impose it at the bathymetry and update surface, elso do nothing */ 2166 if( old_floating_ice[nodes[i]->Sid()]){2169 if(reCast<bool,IssmDouble>(old_floating_ice[nodes[i]->Sid()])){ 2167 2170 if(b[i]<=ba[i]){ 2168 2171 b[i]=ba[i]; … … 2184 2187 nodes[i]->inputs->AddInput(new BoolInput(MaskVertexongroundediceEnum,false)); 2185 2188 } 2186 else if(migration_style==SoftMigrationEnum && sheet_ungrounding[nodes[i]->Sid()]){2189 else if(migration_style==SoftMigrationEnum && reCast<int,IssmDouble>(sheet_ungrounding[nodes[i]->Sid()])){ 2187 2190 s[i]=(1-density)*h[i]; 2188 2191 b[i]=-density*h[i]; … … 2843 2846 2844 2847 /*Recover vertices ids needed to initialize inputs*/ 2845 for(i=0;i<6;i++) penta_vertex_ids[i]= (int)iomodel->Data(MeshElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab2848 for(i=0;i<6;i++) penta_vertex_ids[i]=reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[6*index+i]); //ids for vertices are in the elements array from Matlab 2846 2849 2847 2850 /*Recover nodes ids needed to initialize the node hook.*/ … … 2849 2852 //go recover node ids, needed to initialize the node hook. 2850 2853 //WARNING: We assume P1 elements here!!!!! 2851 penta_node_ids[i]=iomodel->nodecounter+ (int)iomodel->Data(MeshElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab2854 penta_node_ids[i]=iomodel->nodecounter+reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[6*index+i]); //ids for vertices are in the elements array from Matlab 2852 2855 } 2853 2856 … … 2962 2965 /*Go through nodes, and whoever is on the potential_sheet_ungrounding, ends up in nodes_on_iceshelf: */ 2963 2966 for(i=0;i<NUMVERTICES;i++){ 2964 if ( vertices_potentially_ungrounding[nodes[i]->Sid()]){2967 if (reCast<bool,IssmDouble>(vertices_potentially_ungrounding[nodes[i]->Sid()])){ 2965 2968 vec_nodes_on_iceshelf->SetValue(nodes[i]->Sid(),1,INS_VAL); 2966 2969 … … 3228 3231 break; 3229 3232 case VelEnum: 3230 3231 /*Get input:*/ 3232 IssmDouble vel; 3233 Input* vel_input; 3234 3235 vel_input=this->inputs->GetInput(VelEnum); _assert_(vel_input); 3236 vel_input->GetInputAverage(&vel); 3237 3238 /*process units if requested: */ 3239 if(process_units) vel=UnitConversion(vel,IuToExtEnum,VelEnum); 3240 3241 /*Assign output pointers:*/ 3242 *presponse=vel; 3233 { 3234 3235 /*Get input:*/ 3236 IssmDouble vel; 3237 Input* vel_input; 3238 3239 vel_input=this->inputs->GetInput(VelEnum); _assert_(vel_input); 3240 vel_input->GetInputAverage(&vel); 3241 3242 /*process units if requested: */ 3243 if(process_units) vel=UnitConversion(vel,IuToExtEnum,VelEnum); 3244 3245 /*Assign output pointers:*/ 3246 *presponse=vel; 3247 } 3248 break; 3243 3249 default: 3244 3250 _error_("Response type " << EnumToStringx(response_enum) << " not supported yet!"); … … 3365 3371 kappa=matpar->GetEnthalpyDiffusionParameter(enthalpy,pressure); 3366 3372 D_scalar_conduct=gauss->weight*Jdet*kappa; 3367 if( dt) D_scalar_conduct=D_scalar_conduct*dt;3373 if(reCast<bool,IssmDouble>(dt)) D_scalar_conduct=D_scalar_conduct*dt; 3368 3374 3369 3375 D[0][0]=D_scalar_conduct; D[0][1]=0; D[0][2]=0; … … 3385 3391 3386 3392 D_scalar_advec=gauss->weight*Jdet; 3387 if( dt) D_scalar_advec=D_scalar_advec*dt;3393 if(reCast<bool,IssmDouble>(dt)) D_scalar_advec=D_scalar_advec*dt; 3388 3394 3389 3395 D[0][0]=D_scalar_advec*vx;D[0][1]=0; D[0][2]=0; … … 3397 3403 3398 3404 /*Transient: */ 3399 if( dt){3405 if(reCast<bool,IssmDouble>(dt)){ 3400 3406 GetNodalFunctionsP1(&L[0], gauss); 3401 3407 D_scalar_trans=gauss->weight*Jdet; … … 3418 3424 K[2][0]=h/(2*vel)*vz*vx; K[2][1]=h/(2*vel)*vz*vy; K[2][2]=h/(2*vel)*vz*vz; 3419 3425 D_scalar_stab=gauss->weight*Jdet; 3420 if( dt) D_scalar_stab=D_scalar_stab*dt;3426 if(reCast<bool,IssmDouble>(dt)) D_scalar_stab=D_scalar_stab*dt; 3421 3427 for(i=0;i<3;i++) for(j=0;j<3;j++) K[i][j] = D_scalar_stab*K[i][j]; 3422 3428 … … 3438 3444 } 3439 3445 } 3440 if( dt){3446 if(reCast<bool,IssmDouble>(dt)){ 3441 3447 for(i=0;i<numdof;i++){ 3442 3448 for(j=0;j<numdof;j++){ … … 3494 3500 3495 3501 D_scalar=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity/(rho_ice*heatcapacity); 3496 if( dt) D_scalar=dt*D_scalar;3502 if(reCast<bool,IssmDouble>(dt)) D_scalar=dt*D_scalar; 3497 3503 3498 3504 TripleMultiply(&basis[0],numdof,1,0, … … 3594 3600 3595 3601 D_scalar_conduct=gauss->weight*Jdet*kappa; 3596 if( dt) D_scalar_conduct=D_scalar_conduct*dt;3602 if(reCast<bool,IssmDouble>(dt)) D_scalar_conduct=D_scalar_conduct*dt; 3597 3603 3598 3604 D[0][0]=D_scalar_conduct; D[0][1]=0; D[0][2]=0; … … 3615 3621 3616 3622 D_scalar_advec=gauss->weight*Jdet; 3617 if( dt) D_scalar_advec=D_scalar_advec*dt;3623 if(reCast<bool,IssmDouble>(dt)) D_scalar_advec=D_scalar_advec*dt; 3618 3624 3619 3625 D[0][0]=D_scalar_advec*vx; D[0][1]=0; D[0][2]=0; … … 3627 3633 3628 3634 /*Transient: */ 3629 if( dt){3635 if(reCast<bool,IssmDouble>(dt)){ 3630 3636 GetNodalFunctionsP1(&L[0], gauss); 3631 3637 D_scalar_trans=gauss->weight*Jdet; … … 3650 3656 3651 3657 D_scalar_stab=gauss->weight*Jdet; 3652 if( dt) D_scalar_stab=D_scalar_stab*dt;3658 if(reCast<bool,IssmDouble>(dt)) D_scalar_stab=D_scalar_stab*dt; 3653 3659 for(i=0;i<3;i++) for(j=0;j<3;j++) K[i][j] = D_scalar_stab*K[i][j]; 3654 3660 … … 3670 3676 } 3671 3677 } 3672 if( dt){3678 if(reCast<bool,IssmDouble>(dt)){ 3673 3679 for(i=0;i<numdof;i++){ 3674 3680 for(j=0;j<numdof;j++){ … … 3727 3733 3728 3734 D_scalar=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity/(heatcapacity*rho_ice); 3729 if( dt) D_scalar=dt*D_scalar;3735 if(reCast<bool,IssmDouble>(dt)) D_scalar=dt*D_scalar; 3730 3736 3731 3737 TripleMultiply(&basis[0],numdof,1,0, … … 3796 3802 Input* enthalpy_input=NULL; 3797 3803 Input* enthalpypicard_input=NULL; 3798 if( dt){3804 if(reCast<bool,IssmDouble>(dt)){ 3799 3805 enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(enthalpy_input); 3800 3806 } … … 3818 3824 3819 3825 scalar_def=phi/rho_ice*Jdet*gauss->weight; 3820 if( dt) scalar_def=scalar_def*dt;3826 if(reCast<bool,IssmDouble>(dt)) scalar_def=scalar_def*dt; 3821 3827 3822 3828 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=scalar_def*L[i]; 3823 3829 3824 3830 /* Build transient now */ 3825 if( dt){3831 if(reCast<bool,IssmDouble>(dt)){ 3826 3832 enthalpy_input->GetInputValue(&enthalpy, gauss); 3827 3833 scalar_transient=enthalpy*Jdet*gauss->weight; … … 3841 3847 3842 3848 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); 3843 if( dt){3849 if(reCast<bool,IssmDouble>(dt)){ 3844 3850 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); 3845 3851 } … … 3899 3905 3900 3906 scalar_ocean=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity*(h_pmp)/(rho_ice*heatcapacity); 3901 if( dt) scalar_ocean=dt*scalar_ocean;3907 if(reCast<bool,IssmDouble>(dt)) scalar_ocean=dt*scalar_ocean; 3902 3908 3903 3909 for(i=0;i<numdof;i++) pe->values[i]+=scalar_ocean*basis[i]; … … 3985 3991 3986 3992 scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(rho_ice); 3987 if( dt) scalar=dt*scalar;3993 if(reCast<bool,IssmDouble>(dt)) scalar=dt*scalar; 3988 3994 3989 3995 for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; … … 4057 4063 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 4058 4064 Input* temperature_input=NULL; 4059 if ( dt) temperature_input=inputs->GetInput(TemperatureEnum); _assert_(inputs);4065 if (reCast<bool,IssmDouble>(dt)) temperature_input=inputs->GetInput(TemperatureEnum); _assert_(inputs); 4060 4066 if (stabilization==2) diameter=MinEdgeLength(xyz_list); 4061 4067 … … 4074 4080 4075 4081 scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight; 4076 if( dt) scalar_def=scalar_def*dt;4082 if(reCast<bool,IssmDouble>(dt)) scalar_def=scalar_def*dt; 4077 4083 4078 4084 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=scalar_def*L[i]; 4079 4085 4080 4086 /* Build transient now */ 4081 if( dt){4087 if(reCast<bool,IssmDouble>(dt)){ 4082 4088 temperature_input->GetInputValue(&temperature, gauss); 4083 4089 scalar_transient=temperature*Jdet*gauss->weight; … … 4095 4101 4096 4102 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); 4097 if( dt){4103 if(reCast<bool,IssmDouble>(dt)){ 4098 4104 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); 4099 4105 } … … 4153 4159 4154 4160 scalar_ocean=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity*(t_pmp)/(heatcapacity*rho_ice); 4155 if( dt) scalar_ocean=dt*scalar_ocean;4161 if(reCast<bool,IssmDouble>(dt)) scalar_ocean=dt*scalar_ocean; 4156 4162 4157 4163 for(i=0;i<numdof;i++) pe->values[i]+=scalar_ocean*basis[i]; … … 4219 4225 4220 4226 scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(heatcapacity*rho_ice); 4221 if( dt) scalar=dt*scalar;4227 if(reCast<bool,IssmDouble>(dt)) scalar=dt*scalar; 4222 4228 4223 4229 for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; -
issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
r13051 r13073 1469 1469 if (control_analysis && iomodel->Data(InversionControlParametersEnum)){ 1470 1470 for(i=0;i<num_control_type;i++){ 1471 switch( (int)iomodel->Data(InversionControlParametersEnum)[i]){1471 switch(reCast<int>(iomodel->Data(InversionControlParametersEnum)[i])){ 1472 1472 case BalancethicknessThickeningRateEnum: 1473 1473 if (iomodel->Data(BalancethicknessThickeningRateEnum)){ … … 1505 1505 /*Matice will take care of it*/ break; 1506 1506 default: 1507 _error_("Control " << EnumToStringx( (int)iomodel->Data(InversionControlParametersEnum)[i]) << " not implemented yet");1507 _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet"); 1508 1508 } 1509 1509 } … … 2591 2591 2592 2592 /*First off, check that this segment belongs to this element: */ 2593 if ( (int)*(segment+4)!=this->id)_error_("error message: segment with id " << (int)*(segment+4) << " does not belong to element with id:" << this->id);2593 if (reCast<int>(*(segment+4))!=this->id)_error_("error message: segment with id " << reCast<int>(*(segment+4)) << " does not belong to element with id:" << this->id); 2594 2594 2595 2595 /*Recover segment node locations: */ … … 2795 2795 *presponse=this->matice->GetBbar(); 2796 2796 break; 2797 case VelEnum: 2797 case VelEnum:{ 2798 2798 2799 2799 /*Get input:*/ … … 2808 2808 2809 2809 /*Assign output pointers:*/ 2810 *presponse=vel; 2810 *presponse=vel;} 2811 break; 2811 2812 default: 2812 2813 _error_("Response type " << EnumToStringx(response_enum) << " not supported yet!"); … … 5364 5365 old_watercolumn_input->GetInputValue(&old_watercolumn_g,gauss); 5365 5366 5366 if( dt)for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(old_watercolumn_g+dt*basal_melting_g)*basis[i];5367 if(reCast<int,IssmDouble>(dt))for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(old_watercolumn_g+dt*basal_melting_g)*basis[i]; 5367 5368 else for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*basal_melting_g*basis[i]; 5368 5369 } -
issm/trunk-jpl/src/c/classes/objects/Loads/Pengrid.cpp
r13036 r13073 572 572 } 573 573 else{ 574 if ( dt) pe->values[0]=melting_offset*pow((IssmDouble)10,penalty_factor)*(temperature-t_pmp)/dt;574 if (reCast<bool>(dt)) pe->values[0]=melting_offset*pow((IssmDouble)10,penalty_factor)*(temperature-t_pmp)/dt; 575 575 else pe->values[0]=melting_offset*pow((IssmDouble)10,penalty_factor)*(temperature-t_pmp); 576 576 } -
issm/trunk-jpl/src/c/classes/objects/Loads/Riftfront.cpp
r13036 r13073 60 60 61 61 /*Ok, retrieve all the data needed to add a penalty between the two nodes: */ 62 el1= (int)*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+2);63 el2= (int)*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+3);64 65 node1= (int)*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+0);66 node2= (int)*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+1);62 el1=reCast<int,IssmDouble>(*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+2)); 63 el2=reCast<int,IssmDouble>(*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+3)) ; 64 65 node1=reCast<int,IssmDouble>(*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+0)); 66 node2=reCast<int,IssmDouble>(*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+1)); 67 67 68 68 /*id: */ … … 93 93 this->length=*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+6); 94 94 this->fraction=*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+9); 95 this->state= (int)*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+11);95 this->state=reCast<int,IssmDouble>(*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+11)); 96 96 97 97 //intialize inputs, and add as many inputs per element as requested: … … 99 99 100 100 riftfront_type=SegmentRiftfrontEnum; 101 riftfront_fill = (int)*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+7);101 riftfront_fill = reCast<int,IssmDouble>(*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+7)); 102 102 riftfront_friction=*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+8); 103 103 riftfront_fractionincrement=*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+10); 104 riftfront_shelf= (bool)iomodel->Data(MaskVertexonfloatingiceEnum)[node1-1];104 riftfront_shelf=reCast<bool,IssmDouble>(iomodel->Data(MaskVertexonfloatingiceEnum)[node1-1]); 105 105 106 106 this->inputs->AddInput(new IntInput(TypeEnum,riftfront_type)); … … 679 679 this->inputs->GetInputValue(&converged,ConvergedEnum); 680 680 681 if( converged){681 if(reCast<int,IssmDouble>(converged)){ 682 682 /*ok, material non-linearity has converged. If that was already the case, we keep 683 683 * constraining the rift front. If it was not, and this is the first time the material -
issm/trunk-jpl/src/c/classes/objects/Materials/Matice.cpp
r13056 r13073 705 705 if (control_analysis && iomodel->Data(InversionControlParametersEnum)){ 706 706 for(i=0;i<num_control_type;i++){ 707 switch( (int)iomodel->Data(InversionControlParametersEnum)[i]){707 switch(reCast<int>(iomodel->Data(InversionControlParametersEnum)[i])){ 708 708 case MaterialsRheologyBbarEnum: 709 709 if (iomodel->Data(MaterialsRheologyBEnum)){ 710 710 _assert_(iomodel->Data(MaterialsRheologyBEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 711 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[ int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)];712 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[ int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];713 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[ int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];711 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)]; 712 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 713 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 714 714 this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 715 715 } … … 733 733 /*Get B*/ 734 734 if (iomodel->Data(MaterialsRheologyBEnum)) { 735 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[ int(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];735 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)]; 736 736 this->inputs->AddInput(new PentaP1Input(MaterialsRheologyBEnum,nodeinputs)); 737 737 } … … 747 747 if (control_analysis && iomodel->Data(InversionControlParametersEnum)){ 748 748 for(i=0;i<num_control_type;i++){ 749 switch( (int)iomodel->Data(InversionControlParametersEnum)[i]){749 switch(reCast<int>(iomodel->Data(InversionControlParametersEnum)[i])){ 750 750 case MaterialsRheologyBbarEnum: 751 751 if (iomodel->Data(MaterialsRheologyBEnum)){ 752 752 _assert_(iomodel->Data(MaterialsRheologyBEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 753 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[ int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)];754 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[ int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];755 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[ int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];753 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)]; 754 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 755 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 756 756 this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 757 757 } -
issm/trunk-jpl/src/c/classes/objects/Node.cpp
r13051 r13073 89 89 _assert_(iomodel->Data(MeshVertexonbedEnum)); 90 90 _assert_(iomodel->Data(FlowequationVertexEquationEnum)); 91 if (iomodel->Data(FlowequationVertexEquationEnum)[io_index]==MacAyealApproximationEnum && ! iomodel->Data(MeshVertexonbedEnum)[io_index]){91 if (iomodel->Data(FlowequationVertexEquationEnum)[io_index]==MacAyealApproximationEnum && !reCast<int>(iomodel->Data(MeshVertexonbedEnum)[io_index])){ 92 92 for(k=1;k<=gsize;k++) this->FreezeDof(k); 93 93 } 94 if (iomodel->Data(FlowequationVertexEquationEnum)[io_index]==L1L2ApproximationEnum && ! iomodel->Data(MeshVertexonbedEnum)[io_index]){94 if (iomodel->Data(FlowequationVertexEquationEnum)[io_index]==L1L2ApproximationEnum && !reCast<int>(iomodel->Data(MeshVertexonbedEnum)[io_index])){ 95 95 for(k=1;k<=gsize;k++) this->FreezeDof(k); 96 96 } 97 if (iomodel->Data(FlowequationVertexEquationEnum)[io_index]==MacAyealPattynApproximationEnum && iomodel->Data(FlowequationBordermacayealEnum)[io_index]){98 if(! iomodel->Data(MeshVertexonbedEnum)[io_index]){97 if (iomodel->Data(FlowequationVertexEquationEnum)[io_index]==MacAyealPattynApproximationEnum && reCast<int>(iomodel->Data(FlowequationBordermacayealEnum)[io_index])){ 98 if(!reCast<int>(iomodel->Data(MeshVertexonbedEnum)[io_index])){ 99 99 for(k=1;k<=gsize;k++) this->FreezeDof(k); 100 100 } 101 101 } 102 if (iomodel->Data(FlowequationVertexEquationEnum)[io_index]==MacAyealStokesApproximationEnum && iomodel->Data(FlowequationBordermacayealEnum)[io_index]){103 if(! iomodel->Data(MeshVertexonbedEnum)[io_index]){102 if (iomodel->Data(FlowequationVertexEquationEnum)[io_index]==MacAyealStokesApproximationEnum && reCast<int>(iomodel->Data(FlowequationBordermacayealEnum)[io_index])){ 103 if(!reCast<int>(iomodel->Data(MeshVertexonbedEnum)[io_index])){ 104 104 for(k=1;k<=2;k++) this->FreezeDof(k); 105 105 } -
issm/trunk-jpl/src/c/modules/ControlInputScaleGradientx/ControlInputScaleGradientx.cpp
r12450 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void ControlInputScaleGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, double* norm_list,int step){11 void ControlInputScaleGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* norm_list,int step){ 12 12 13 13 /*Intermediaries*/ 14 14 int i,j,num_controls; 15 15 int *control_type = NULL; 16 double *scalar_list = NULL;17 double scalar;16 IssmDouble *scalar_list = NULL; 17 IssmDouble scalar; 18 18 19 19 … … 38 38 /*Clean up and return*/ 39 39 xDelete<int>(control_type); 40 xDelete< double>(scalar_list);40 xDelete<IssmDouble>(scalar_list); 41 41 } -
issm/trunk-jpl/src/c/modules/ControlInputScaleGradientx/ControlInputScaleGradientx.h
r12832 r13073 8 8 #include "../../Container/Container.h" 9 9 10 void ControlInputScaleGradientx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters, double* norm_list,int step);10 void ControlInputScaleGradientx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* norm_list,int step); 11 11 12 12 #endif -
issm/trunk-jpl/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp
r12450 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, double* gradient){11 void ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* gradient){ 12 12 13 13 /*Intermediaries*/ … … 33 33 34 34 /*Serialize gradient*/ 35 double* serial_gradient=NULL;35 IssmDouble* serial_gradient=NULL; 36 36 serial_gradient=gradient->ToMPISerial(); 37 37 … … 39 39 40 40 /*Clean up and return*/ 41 xDelete< double>(serial_gradient);41 xDelete<IssmDouble>(serial_gradient); 42 42 } -
issm/trunk-jpl/src/c/modules/CostFunctionx/CostFunctionx.cpp
r12450 r13073 11 11 #include "../Responsex/Responsex.h" 12 12 13 void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){13 void CostFunctionx(IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){ 14 14 15 15 /*Intermediary*/ 16 16 int i; 17 17 int num_responses; 18 double S;19 18 Element *element = NULL; 20 19 int *responses = NULL; 21 20 22 21 /*output: */ 23 double J,Jplus;22 IssmDouble J,Jplus; 24 23 25 24 /*Recover parameters*/ -
issm/trunk-jpl/src/c/modules/CostFunctionx/CostFunctionx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);12 void CostFunctionx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void DragCoefficientAbsGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){12 void DragCoefficientAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void DragCoefficientAbsGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void DragCoefficientAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/ElementResponsex/ElementResponsex.cpp
r13056 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void ElementResponsex( double* presponse, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,int response_enum,bool process_units){12 void ElementResponsex( IssmDouble* presponse, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,int response_enum,bool process_units){ 13 13 14 14 … … 20 20 int cpu_found=-1; 21 21 int index; 22 double response;22 IssmDouble response; 23 23 Element* element=NULL; 24 24 -
issm/trunk-jpl/src/c/modules/ElementResponsex/ElementResponsex.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void ElementResponsex( double* presponse, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int response_enum,bool process_units);12 void ElementResponsex( IssmDouble* presponse, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int response_enum,bool process_units); 13 13 14 14 #endif /* _ELEMENTRESPONSEX_H */ -
issm/trunk-jpl/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp
r12450 r13073 36 36 } 37 37 38 void GetVectorFromControlInputsx( double** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data){38 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data){ 39 39 40 40 /*output: */ 41 double* vector=NULL;41 IssmDouble* vector=NULL; 42 42 43 43 /*intermediary: */ -
issm/trunk-jpl/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h
r12832 r13073 10 10 /* local prototypes: */ 11 11 void GetVectorFromControlInputsx( Vector** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value"); 12 void GetVectorFromControlInputsx( double** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value");12 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value"); 13 13 14 14 #endif /* _GETVECTORFROMCONTROLINPUTSXX_H */ -
issm/trunk-jpl/src/c/modules/Gradjx/Gradjx.cpp
r13056 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void Gradjx(Vector** pgradient, double** pnorm_list, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){12 void Gradjx(Vector** pgradient,IssmDouble** pnorm_list, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){ 13 13 14 14 int i,j,numberofvertices; 15 15 int num_controls; 16 double norm_inf;17 double *norm_list = NULL;16 IssmDouble norm_inf; 17 IssmDouble *norm_list = NULL; 18 18 int *control_type = NULL; 19 19 Vector *gradient = NULL; … … 27 27 /*Allocate gradient_list */ 28 28 gradient_list = xNew<Vector*>(num_controls); 29 norm_list = xNew< double>(num_controls);29 norm_list = xNew<IssmDouble>(num_controls); 30 30 for(i=0;i<num_controls;i++){ 31 31 gradient_list[i]=new Vector(num_controls*numberofvertices); … … 62 62 } 63 63 else{ 64 xDelete< double>(norm_list);64 xDelete<IssmDouble>(norm_list); 65 65 } 66 66 if(pgradient) *pgradient=gradient; -
issm/trunk-jpl/src/c/modules/Gradjx/Gradjx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void Gradjx(Vector** pgrad_g, double** pgrad_norm,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters);12 void Gradjx(Vector** pgrad_g,IssmDouble** pgrad_norm,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters); 13 13 14 14 #endif /* _GRADJX_H */ -
issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp
r13056 r13073 14 14 15 15 int i, migration_style,analysis_type; 16 double* vertices_potentially_ungrounding = NULL;17 double* vertices_ungrounding = NULL;18 double* old_floatingice = NULL;16 IssmDouble* vertices_potentially_ungrounding = NULL; 17 IssmDouble* vertices_ungrounding = NULL; 18 IssmDouble* old_floatingice = NULL; 19 19 Vector* vec_old_floatingice = NULL; 20 20 Element* element = NULL; … … 49 49 /*free ressouces: */ 50 50 xdelete(&vec_old_floatingice); 51 xDelete< double>(vertices_potentially_ungrounding);52 xDelete< double>(vertices_ungrounding);53 xDelete< double>(old_floatingice);51 xDelete<IssmDouble>(vertices_potentially_ungrounding); 52 xDelete<IssmDouble>(vertices_ungrounding); 53 xDelete<IssmDouble>(old_floatingice); 54 54 } 55 55 … … 82 82 /*%}}}*/ 83 83 /*FUNCTION PotentialSheetUngrounding {{{*/ 84 double* PotentialSheetUngrounding(Elements* elements,Vertices* vertices,Parameters* parameters){84 IssmDouble* PotentialSheetUngrounding(Elements* elements,Vertices* vertices,Parameters* parameters){ 85 85 86 86 int i,numberofvertices; 87 double* vertices_potentially_ungrounding = NULL;87 IssmDouble* vertices_potentially_ungrounding = NULL; 88 88 Vector* vec_vertices_potentially_ungrounding = NULL; 89 89 Element* element = NULL; … … 109 109 /*}}}*/ 110 110 /*FUNCTION PropagateFloatingiceToGroundedNeighbors {{{*/ 111 double* PropagateFloatingiceToGroundedNeighbors(Elements* elements,Nodes* nodes,Vertices* vertices,Parameters* parameters,double* vertices_potentially_ungrounding){111 IssmDouble* PropagateFloatingiceToGroundedNeighbors(Elements* elements,Nodes* nodes,Vertices* vertices,Parameters* parameters,IssmDouble* vertices_potentially_ungrounding){ 112 112 113 113 int i,analysis_type; 114 114 int numberofvertices; 115 115 int nflipped,local_nflipped; 116 double* nodes_on_floatingice = NULL;117 double* elements_neighboring_floatingce = NULL;116 IssmDouble* nodes_on_floatingice = NULL; 117 IssmDouble* elements_neighboring_floatingce = NULL; 118 118 Vector* vec_elements_neighboring_floatingice = NULL; 119 119 Vector* vec_nodes_on_floatingice = NULL; … … 150 150 for(i=0;i<elements->Size();i++){ 151 151 element=(Element*)elements->GetObjectByOffset(i); 152 if( elements_neighboring_floatingce[element->Sid()]){152 if(reCast<int,IssmDouble>(elements_neighboring_floatingce[element->Sid()])){ 153 153 local_nflipped+=element->UpdatePotentialSheetUngrounding(vertices_potentially_ungrounding,vec_nodes_on_floatingice,nodes_on_floatingice); 154 154 } … … 164 164 165 165 /*Avoid leaks: */ 166 xDelete< double>(elements_neighboring_floatingce);167 xDelete< double>(nodes_on_floatingice);166 xDelete<IssmDouble>(elements_neighboring_floatingce); 167 xDelete<IssmDouble>(nodes_on_floatingice); 168 168 169 169 /*Assemble and serialize:*/ … … 174 174 /*Free ressources:*/ 175 175 xdelete(&vec_nodes_on_floatingice); 176 xDelete< double>(elements_neighboring_floatingce);176 xDelete<IssmDouble>(elements_neighboring_floatingce); 177 177 178 178 return nodes_on_floatingice; -
issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.h
r11695 r13073 15 15 16 16 Vector* CreateNodesOnFloatingIce(Nodes* nodes,int configuration_type); 17 double* PotentialSheetUngrounding(Elements* elements,Vertices* vertices,Parameters* parameters);18 double* PropagateFloatingiceToGroundedNeighbors(Elements* elements,Nodes* nodes,Vertices* vertices,Parameters* parameters,double* vertices_potentially_ungrounding);17 IssmDouble* PotentialSheetUngrounding(Elements* elements,Vertices* vertices,Parameters* parameters); 18 IssmDouble* PropagateFloatingiceToGroundedNeighbors(Elements* elements,Nodes* nodes,Vertices* vertices,Parameters* parameters,IssmDouble* vertices_potentially_ungrounding); 19 19 #endif /* _GROUNDINGLINEMIGRATIONX_H */ -
issm/trunk-jpl/src/c/modules/IceVolumex/IceVolumex.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void IceVolumex( double* pV, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){12 void IceVolumex(IssmDouble* pV, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 double local_ice_volume = 0;15 double total_ice_volume;14 IssmDouble local_ice_volume = 0; 15 IssmDouble total_ice_volume; 16 16 17 17 for(int i=0;i<elements->Size();i++){ -
issm/trunk-jpl/src/c/modules/IceVolumex/IceVolumex.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void IceVolumex( double* pV, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void IceVolumex(IssmDouble* pV, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/InputControlUpdatex/InputControlUpdatex.cpp
r4967 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void InputControlUpdatex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, double scalar,bool save_parameter){11 void InputControlUpdatex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,IssmDouble scalar,bool save_parameter){ 12 12 13 13 /*Go through elemnets, and ask to carry out the operation on inputs: */ -
issm/trunk-jpl/src/c/modules/InputControlUpdatex/InputControlUpdatex.h
r4967 r13073 9 9 10 10 /* local prototypes: */ 11 void InputControlUpdatex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, double scalar,bool save_parameter);11 void InputControlUpdatex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, IssmDouble scalar,bool save_parameter); 12 12 13 13 #endif -
issm/trunk-jpl/src/c/modules/MassFluxx/MassFluxx.cpp
r12450 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void MassFluxx( double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,bool process_units){12 void MassFluxx(IssmDouble* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,bool process_units){ 13 13 14 14 int i,j; … … 20 20 21 21 /*output: */ 22 double mass_flux=0;23 double all_mass_flux=0;22 IssmDouble mass_flux=0; 23 IssmDouble all_mass_flux=0; 24 24 25 25 int counter; 26 26 27 27 /*all segments: */ 28 double** array=NULL;28 IssmDouble** array=NULL; 29 29 int M; 30 30 int* mdims_array=NULL; … … 32 32 33 33 /*our segments of interest: */ 34 double* segments=NULL;34 IssmDouble* segments=NULL; 35 35 int num_segments; 36 36 … … 48 48 * When we find one, use the element to compute the mass flux on the segment: */ 49 49 for(i=0;i<num_segments;i++){ 50 element_id= (int)*(segments+5*i+4);50 element_id=reCast<int,IssmDouble>(*(segments+5*i+4)); 51 51 for(j=0;j<elements->Size();j++){ 52 52 element=(Element*)elements->GetObjectByOffset(j); … … 66 66 /*Free ressources:*/ 67 67 for(j=0;j<M;j++){ 68 double* matrix=array[j];69 xDelete< double>(matrix);68 IssmDouble* matrix=array[j]; 69 xDelete<IssmDouble>(matrix); 70 70 } 71 71 xDelete<int>(mdims_array); 72 72 xDelete<int>(ndims_array); 73 xDelete< double*>(array);73 xDelete<IssmDouble*>(array); 74 74 75 75 /*Assign output pointers: */ -
issm/trunk-jpl/src/c/modules/MassFluxx/MassFluxx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MassFluxx( double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,bool process_units);12 void MassFluxx(IssmDouble* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 -
issm/trunk-jpl/src/c/modules/MaxAbsVxx/MaxAbsVxx.cpp
r12102 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){11 void MaxAbsVxx( IssmDouble* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 12 12 13 13 int i; 14 double maxabsvx;15 double node_maxabsvx;16 double element_maxabsvx;14 IssmDouble maxabsvx; 15 IssmDouble node_maxabsvx; 16 IssmDouble element_maxabsvx; 17 17 18 18 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MaxAbsVxx/MaxAbsVxx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MaxAbsVxx( IssmDouble* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXABSVXX_H */ -
issm/trunk-jpl/src/c/modules/MaxAbsVyx/MaxAbsVyx.cpp
r12102 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){11 void MaxAbsVyx( IssmDouble* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 12 12 13 13 int i; 14 double maxabsvy;15 double node_maxabsvy;16 double element_maxabsvy;14 IssmDouble maxabsvy; 15 IssmDouble node_maxabsvy; 16 IssmDouble element_maxabsvy; 17 17 18 18 -
issm/trunk-jpl/src/c/modules/MaxAbsVyx/MaxAbsVyx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MaxAbsVyx( IssmDouble* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXABSVYX_H */ -
issm/trunk-jpl/src/c/modules/MaxAbsVzx/MaxAbsVzx.cpp
r12102 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){11 void MaxAbsVzx( IssmDouble* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 12 12 13 13 int i; 14 double maxabsvz;15 double node_maxabsvz;16 double element_maxabsvz;14 IssmDouble maxabsvz; 15 IssmDouble node_maxabsvz; 16 IssmDouble element_maxabsvz; 17 17 18 18 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MaxAbsVzx/MaxAbsVzx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MaxAbsVzx( IssmDouble* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXABSVZX_H */ -
issm/trunk-jpl/src/c/modules/MaxVelx/MaxVelx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){12 void MaxVelx( IssmDouble* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 double maxvel;16 double node_maxvel;17 double element_maxvel;15 IssmDouble maxvel; 16 IssmDouble node_maxvel; 17 IssmDouble element_maxvel; 18 18 19 19 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MaxVelx/MaxVelx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MaxVelx( IssmDouble* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXVELX_H */ -
issm/trunk-jpl/src/c/modules/MaxVxx/MaxVxx.cpp
r12102 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){11 void MaxVxx( IssmDouble* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 12 12 13 13 int i; 14 double maxvx;15 double node_maxvx;16 double element_maxvx;14 IssmDouble maxvx; 15 IssmDouble node_maxvx; 16 IssmDouble element_maxvx; 17 17 18 18 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MaxVxx/MaxVxx.h
r12832 r13073 9 9 10 10 /* local prototypes: */ 11 void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);11 void MaxVxx( IssmDouble* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 12 12 13 13 #endif /* _MAXVXX_H */ -
issm/trunk-jpl/src/c/modules/MaxVyx/MaxVyx.cpp
r12102 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){11 void MaxVyx( IssmDouble* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 12 12 13 13 int i; 14 double maxvy;15 double node_maxvy;16 double element_maxvy;14 IssmDouble maxvy; 15 IssmDouble node_maxvy; 16 IssmDouble element_maxvy; 17 17 18 18 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MaxVyx/MaxVyx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MaxVyx( IssmDouble* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXVYX_H */ -
issm/trunk-jpl/src/c/modules/MaxVzx/MaxVzx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){12 void MaxVzx( IssmDouble* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 double maxvz;16 double node_maxvz;17 double element_maxvz;15 IssmDouble maxvz; 16 IssmDouble node_maxvz; 17 IssmDouble element_maxvz; 18 18 19 19 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MaxVzx/MaxVzx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MaxVzx( IssmDouble* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXVZX_H */ -
issm/trunk-jpl/src/c/modules/MinVelx/MinVelx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){12 void MinVelx( IssmDouble* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 double minvel;16 double node_minvel;17 double element_minvel;15 IssmDouble minvel; 16 IssmDouble node_minvel; 17 IssmDouble element_minvel; 18 18 19 19 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MinVelx/MinVelx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MinVelx( IssmDouble* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MINVELX_H */ -
issm/trunk-jpl/src/c/modules/MinVxx/MinVxx.cpp
r12102 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){11 void MinVxx( IssmDouble* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 12 12 13 13 int i; 14 double minvx;15 double node_minvx;16 double element_minvx;14 IssmDouble minvx; 15 IssmDouble node_minvx; 16 IssmDouble element_minvx; 17 17 18 18 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MinVxx/MinVxx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MinVxx( IssmDouble* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MINVX_H */ -
issm/trunk-jpl/src/c/modules/MinVyx/MinVyx.cpp
r12102 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){11 void MinVyx( IssmDouble* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 12 12 13 13 int i; 14 double minvy;15 double node_minvy;16 double element_minvy;14 IssmDouble minvy; 15 IssmDouble node_minvy; 16 IssmDouble element_minvy; 17 17 18 18 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MinVyx/MinVyx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MinVyx( IssmDouble* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MINVYX_H */ -
issm/trunk-jpl/src/c/modules/MinVzx/MinVzx.cpp
r12102 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){11 void MinVzx( IssmDouble* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 12 12 13 13 int i; 14 double minvz;15 double node_minvz;16 double element_minvz;14 IssmDouble minvz; 15 IssmDouble node_minvz; 16 IssmDouble element_minvz; 17 17 18 18 /*Go through elements, and request velocity: */ -
issm/trunk-jpl/src/c/modules/MinVzx/MinVzx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void MinVzx( IssmDouble* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MINVZX_H */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp
r12832 r13073 42 42 43 43 /*Get left and right elements*/ 44 element= (int)iomodel->Data(MeshEdgesEnum)[4*i+2]-1; //edges are [node1 node2 elem1 elem2]44 element=reCast<int,IssmDouble>(iomodel->Data(MeshEdgesEnum)[4*i+2])-1; //edges are [node1 node2 elem1 elem2] 45 45 46 46 /*Now, if this element is not in the partition, pass: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp
r13056 r13073 72 72 73 73 //Get index of the vertex on which the current node is located 74 vertex_id= (int)*(iomodel->Data(MeshElementsEnum)+3*i+j); //(Matlab indexing)74 vertex_id=reCast<int,IssmDouble>(*(iomodel->Data(MeshElementsEnum)+3*i+j)); //(Matlab indexing) 75 75 io_index=vertex_id-1; //(C indexing) 76 76 _assert_(vertex_id>0 && vertex_id<=numberofvertices); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
r12832 r13073 21 21 int num_cm_responses; 22 22 int *control_type = NULL; 23 double *cm_responses = NULL;24 double *cm_jump = NULL;25 double *optscal = NULL;26 double *maxiter = NULL;23 IssmDouble *cm_responses = NULL; 24 IssmDouble *cm_jump = NULL; 25 IssmDouble *optscal = NULL; 26 IssmDouble *maxiter = NULL; 27 27 28 28 /*Get parameters: */ … … 64 64 65 65 xDelete<int>(control_type); 66 xDelete< double>(cm_responses);67 xDelete< double>(cm_jump);68 xDelete< double>(optscal);69 xDelete< double>(maxiter);66 xDelete<IssmDouble>(cm_responses); 67 xDelete<IssmDouble>(cm_jump); 68 xDelete<IssmDouble>(optscal); 69 xDelete<IssmDouble>(maxiter); 70 70 } 71 71 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r13056 r13073 42 42 iomodel->FetchData(4,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum); 43 43 for(i=0;i<num_control_type;i++){ 44 switch( (int)iomodel->Data(InversionControlParametersEnum)[i]){44 switch(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])){ 45 45 case BalancethicknessThickeningRateEnum: iomodel->FetchData(1,BalancethicknessThickeningRateEnum); break; 46 46 case VxEnum: iomodel->FetchData(1,VxEnum); break; … … 48 48 case FrictionCoefficientEnum: iomodel->FetchData(1,FrictionCoefficientEnum); break; 49 49 case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break; 50 default: _error_("Control " << EnumToStringx( (int)iomodel->Data(InversionControlParametersEnum)[i]) << " not implemented yet");50 default: _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet"); 51 51 } 52 52 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
r13056 r13073 16 16 int i,j; 17 17 int count; 18 double yts;19 double g;20 double rho_ice;21 double stokesreconditioning;18 IssmDouble yts; 19 IssmDouble g; 20 IssmDouble rho_ice; 21 IssmDouble stokesreconditioning; 22 22 bool isstokes,isl1l2,ismacayealpattyn; 23 23 bool spcpresent=false; … … 25 25 int My,Ny; 26 26 int Mz,Nz; 27 double *spcvx = NULL;28 double *spcvy = NULL;29 double *spcvz = NULL;30 double *nodeonmacayeal = NULL;31 double *nodeonpattyn = NULL;32 double *nodeonstokes = NULL;33 double *nodeonbed = NULL;34 double *nodeonicesheet = NULL;35 double *vertices_type = NULL;36 double *surface = NULL;37 double *z = NULL;38 double *timesx=NULL;39 double *timesy=NULL;40 double *timesz=NULL;41 double* values=NULL;27 IssmDouble *spcvx = NULL; 28 IssmDouble *spcvy = NULL; 29 IssmDouble *spcvz = NULL; 30 IssmDouble *nodeonmacayeal = NULL; 31 IssmDouble *nodeonpattyn = NULL; 32 IssmDouble *nodeonstokes = NULL; 33 IssmDouble *nodeonbed = NULL; 34 IssmDouble *nodeonicesheet = NULL; 35 IssmDouble *vertices_type = NULL; 36 IssmDouble *surface = NULL; 37 IssmDouble *z = NULL; 38 IssmDouble *timesx=NULL; 39 IssmDouble *timesy=NULL; 40 IssmDouble *timesz=NULL; 41 IssmDouble* values=NULL; 42 42 43 43 /*Output*/ … … 88 88 89 89 /*figure out times: */ 90 timesx=xNew< double>(Nx);90 timesx=xNew<IssmDouble>(Nx); 91 91 for(j=0;j<Nx;j++){ 92 92 timesx[j]=spcvx[(Mx-1)*Nx+j]; … … 95 95 UnitConversion(timesx,Nx,ExtToIuEnum,TimeEnum); 96 96 /*figure out times: */ 97 timesy=xNew< double>(Ny);97 timesy=xNew<IssmDouble>(Ny); 98 98 for(j=0;j<Ny;j++){ 99 99 timesy[j]=spcvy[(My-1)*Ny+j]; … … 102 102 UnitConversion(timesy,Ny,ExtToIuEnum,TimeEnum); 103 103 /*figure out times: */ 104 timesz=xNew< double>(Nz);104 timesz=xNew<IssmDouble>(Nz); 105 105 for(j=0;j<Nz;j++){ 106 106 timesz[j]=spcvz[(Mz-1)*Nz+j]; … … 114 114 115 115 /*Start with adding spcs of coupling: zero at the border macayeal/pattyn for the appropriate dofs*/ 116 if ( (int)vertices_type[i]==MacAyealPattynApproximationEnum){116 if (reCast<int,IssmDouble>(vertices_type[i]==MacAyealPattynApproximationEnum)){ 117 117 /*If grionmacayeal, spc pattyn dofs: 3 & 4*/ 118 if ( (int)nodeonpattyn[i]){118 if (reCast<int,IssmDouble>(nodeonpattyn[i])){ 119 119 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 120 120 count++; … … 131 131 132 132 } 133 else if ( (int)nodeonmacayeal[i]){133 else if (reCast<int,IssmDouble>(nodeonmacayeal[i])){ 134 134 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 135 135 count++; … … 149 149 } 150 150 /*Also add spcs of coupling: zero at the border pattyn/stokes for the appropriate dofs*/ 151 else if ( (int)vertices_type[i]==PattynStokesApproximationEnum){151 else if (reCast<int,IssmDouble>(vertices_type[i])==PattynStokesApproximationEnum){ 152 152 /*If grion,pattyn spc stokes dofs: 3 4 & 5*/ 153 if ( (int)nodeonpattyn[i]){153 if (reCast<int,IssmDouble>(nodeonpattyn[i])){ 154 154 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 155 155 count++; … … 168 168 169 169 } 170 else if ( (int)nodeonstokes[i]){ //spc pattyn nodes: 1 & 2170 else if (reCast<int,IssmDouble>(nodeonstokes[i])){ //spc pattyn nodes: 1 & 2 171 171 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 172 172 count++; … … 189 189 } 190 190 /*Also add spcs of coupling: zero at the border pattyn/stokes for the appropriate dofs*/ 191 else if ( (int)vertices_type[i]==MacAyealStokesApproximationEnum){191 else if (reCast<int,IssmDouble>(vertices_type[i])==MacAyealStokesApproximationEnum){ 192 192 /*If grion,pattyn spc stokes dofs: 3 4 & 5*/ 193 if ( (int)nodeonmacayeal[i]){193 if (reCast<int,IssmDouble>(nodeonmacayeal[i])){ 194 194 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 195 195 count++; … … 208 208 209 209 } 210 else if ( (int)nodeonstokes[i]){ //spc macayeal nodes: 1 & 2210 else if (reCast<int,IssmDouble>(nodeonstokes[i])){ //spc macayeal nodes: 1 & 2 211 211 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 212 212 count++; … … 236 236 else if (Mx==numberofvertices+1) { 237 237 /*figure out times and values: */ 238 values=xNew< double>(Nx);238 values=xNew<IssmDouble>(Nx); 239 239 spcpresent=false; 240 240 for(j=0;j<Nx;j++){ … … 247 247 count++; 248 248 } 249 xDelete< double>(values);249 xDelete<IssmDouble>(values); 250 250 } 251 251 else if (vertices_type[i]==HutterApproximationEnum){ … … 260 260 else if (My==numberofvertices+1){ 261 261 /*figure out times and values: */ 262 values=xNew< double>(Ny);262 values=xNew<IssmDouble>(Ny); 263 263 spcpresent=false; 264 264 for(j=0;j<Ny;j++){ … … 270 270 count++; 271 271 } 272 xDelete< double>(values);272 xDelete<IssmDouble>(values); 273 273 } 274 274 else if (vertices_type[i]==HutterApproximationEnum){ … … 277 277 } 278 278 279 if ( (int)vertices_type[i]==StokesApproximationEnum || ((int)vertices_type[i]==NoneApproximationEnum)){279 if (reCast<int,IssmDouble>(vertices_type[i])==StokesApproximationEnum || (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum)){ 280 280 if (Mz==numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){ 281 281 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy … … 284 284 else if (Mz==numberofvertices+1){ 285 285 /*figure out times and values: */ 286 values=xNew< double>(Nz);286 values=xNew<IssmDouble>(Nz); 287 287 spcpresent=false; 288 288 for(j=0;j<Nz;j++){ … … 294 294 count++; 295 295 } 296 xDelete< double>(values);297 } 298 299 } 300 if ( (int)vertices_type[i]==NoneApproximationEnum){296 xDelete<IssmDouble>(values); 297 } 298 299 } 300 if (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){ 301 301 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,g*rho_ice*(surface[i]-z[i])/stokesreconditioning,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 302 302 count++; … … 305 305 306 306 /*Constraint at the bedrock interface (v.n = vz = 0) (Coordinates will be updated according to the bed slope)*/ 307 if (dim==3) if( nodeonbed[i] && nodeonicesheet[i] && nodeonstokes[i]){308 switch( (int)vertices_type[i]){307 if (dim==3) if(reCast<int,IssmDouble>(nodeonbed[i]) && reCast<int,IssmDouble>(nodeonicesheet[i]) && reCast<int,IssmDouble>(nodeonstokes[i])){ 308 switch(reCast<int,IssmDouble>(vertices_type[i])){ 309 309 case MacAyealStokesApproximationEnum: 310 310 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0.,DiagnosticHorizAnalysisEnum)); … … 319 319 count++; 320 320 break; 321 default: _error_("Vertex approximation " << EnumToStringx( (int)vertices_type[i]) << " not supported");321 default: _error_("Vertex approximation " << EnumToStringx(reCast<int,IssmDouble>(vertices_type[i])) << " not supported"); 322 322 } 323 323 } … … 326 326 327 327 /*Free data: */ 328 xDelete< double>(spcvx);329 xDelete< double>(spcvy);330 xDelete< double>(spcvz);331 xDelete< double>(nodeonmacayeal);332 xDelete< double>(nodeonpattyn);333 xDelete< double>(nodeonstokes);334 xDelete< double>(nodeonicesheet);335 xDelete< double>(nodeonbed);336 xDelete< double>(vertices_type);337 xDelete< double>(surface);338 xDelete< double>(z);328 xDelete<IssmDouble>(spcvx); 329 xDelete<IssmDouble>(spcvy); 330 xDelete<IssmDouble>(spcvz); 331 xDelete<IssmDouble>(nodeonmacayeal); 332 xDelete<IssmDouble>(nodeonpattyn); 333 xDelete<IssmDouble>(nodeonstokes); 334 xDelete<IssmDouble>(nodeonicesheet); 335 xDelete<IssmDouble>(nodeonbed); 336 xDelete<IssmDouble>(vertices_type); 337 xDelete<IssmDouble>(surface); 338 xDelete<IssmDouble>(z); 339 339 340 340 /*Free resources:*/ 341 xDelete< double>(timesx);342 xDelete< double>(timesy);343 xDelete< double>(timesz);344 xDelete< double>(values);341 xDelete<IssmDouble>(timesx); 342 xDelete<IssmDouble>(timesy); 343 xDelete<IssmDouble>(timesz); 344 xDelete<IssmDouble>(values); 345 345 346 346 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
r13066 r13073 29 29 bool ismacayealpattyn,isstokes,isl1l2; 30 30 int numpenalties,numberofpressureloads,numrifts,numriftsegments; 31 double *pressureload = NULL;32 double *elements_type = NULL;33 double *nodeoniceshelf = NULL;34 double *riftinfo = NULL;35 double *nodeonbed = NULL;36 double *nodeonstokes = NULL;37 double *nodeonicesheet = NULL;38 double *vertices_type = NULL;39 double *penalties = NULL;31 IssmDouble *pressureload = NULL; 32 IssmDouble *elements_type = NULL; 33 IssmDouble *nodeoniceshelf = NULL; 34 IssmDouble *riftinfo = NULL; 35 IssmDouble *nodeonbed = NULL; 36 IssmDouble *nodeonstokes = NULL; 37 IssmDouble *nodeonicesheet = NULL; 38 IssmDouble *vertices_type = NULL; 39 IssmDouble *penalties = NULL; 40 40 41 41 /*Fetch parameters: */ … … 74 74 if (dim==2) segment_width=4; 75 75 else segment_width=6; 76 element= (int)(*(pressureload+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)76 element=reCast<int,IssmDouble>(*(pressureload+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill) 77 77 78 78 /*Now, if this element is not in the partition, pass: */ … … 80 80 81 81 /*Do not create ice front if Hutter or Stokes elements*/ 82 if ( (int)*(elements_type+element)==HutterApproximationEnum) continue;82 if (reCast<int,IssmDouble>(*(elements_type+element))==HutterApproximationEnum) continue; 83 83 84 84 /*Create and add load: */ 85 if ( (int)*(elements_type+element)==(MacAyealApproximationEnum) && dim==2){85 if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealApproximationEnum) && dim==2){ 86 86 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal2dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 87 87 count++; 88 88 } 89 else if ( (int)*(elements_type+element)==(MacAyealApproximationEnum) && dim==3){89 else if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealApproximationEnum) && dim==3){ 90 90 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 91 91 count++; 92 92 } 93 else if ( (int)*(elements_type+element)==(L1L2ApproximationEnum)){93 else if (reCast<int,IssmDouble>(*(elements_type+element))==(L1L2ApproximationEnum)){ 94 94 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 95 95 count++; 96 96 } 97 else if ( (int)*(elements_type+element)==(PattynApproximationEnum)){97 else if (reCast<int,IssmDouble>(*(elements_type+element))==(PattynApproximationEnum)){ 98 98 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum)); 99 99 count++; 100 100 } 101 else if ( (int)*(elements_type+element)==(L1L2ApproximationEnum)){101 else if (reCast<int,IssmDouble>(*(elements_type+element))==(L1L2ApproximationEnum)){ 102 102 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,L1L2IceFrontEnum,DiagnosticHorizAnalysisEnum)); 103 103 count++; 104 104 } 105 else if ( (int)*(elements_type+element)==(StokesApproximationEnum)){105 else if (reCast<int,IssmDouble>(*(elements_type+element))==(StokesApproximationEnum)){ 106 106 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,StokesIceFrontEnum,DiagnosticHorizAnalysisEnum)); 107 107 count++; 108 108 } 109 else if ( (int)*(elements_type+element)==(MacAyealPattynApproximationEnum)){109 else if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealPattynApproximationEnum)){ 110 110 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 111 111 count++; … … 113 113 count++; 114 114 } 115 else if ( (int)*(elements_type+element)==(PattynStokesApproximationEnum)){115 else if (reCast<int,IssmDouble>(*(elements_type+element))==(PattynStokesApproximationEnum)){ 116 116 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum)); 117 117 count++; … … 119 119 count++; 120 120 } 121 else if ( (int)*(elements_type+element)==(MacAyealStokesApproximationEnum)){121 else if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealStokesApproximationEnum)){ 122 122 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 123 123 count++; … … 129 129 /*Free data: */ 130 130 iomodel->DeleteData(3,DiagnosticIcefrontEnum,ThicknessEnum,BedEnum); 131 xDelete< double>(elements_type);132 xDelete< double>(pressureload);131 xDelete<IssmDouble>(elements_type); 132 xDelete<IssmDouble>(pressureload); 133 133 134 134 /*Create Penpair for penalties: */ … … 137 137 for(i=0;i<numpenalties;i++){ 138 138 139 if(iomodel->my_vertices[ (int)penalties[2*i+0]-1]){139 if(iomodel->my_vertices[reCast<int,IssmDouble>(penalties[2*i+0]-1)]){ 140 140 141 141 /*In debugging mode, check that the second node is in the same cpu*/ … … 143 143 144 144 /*Get node ids*/ 145 penpair_ids[0]=iomodel->nodecounter+ (int)penalties[2*i+0];146 penpair_ids[1]=iomodel->nodecounter+ (int)penalties[2*i+1];145 penpair_ids[0]=iomodel->nodecounter+reCast<int,IssmDouble>(penalties[2*i+0]); 146 penpair_ids[1]=iomodel->nodecounter+reCast<int,IssmDouble>(penalties[2*i+1]); 147 147 148 148 /*Create Load*/ … … 153 153 154 154 /*free ressources: */ 155 xDelete< double>(penalties);155 xDelete<IssmDouble>(penalties); 156 156 157 157 /*Create Riffront loads for rifts: */ … … 160 160 iomodel->FetchData(5,RiftsRiftstructEnum,ThicknessEnum,BedEnum,SurfaceEnum,MaskVertexonfloatingiceEnum); 161 161 for(i=0;i<numriftsegments;i++){ 162 if(iomodel->my_elements[ (int)*(riftinfo+RIFTINFOSIZE*i+2)-1]){162 if(iomodel->my_elements[reCast<int,IssmDouble>(*(riftinfo+RIFTINFOSIZE*i+2))-1]){ 163 163 loads->AddObject(new Riftfront(iomodel->loadcounter+count+1,i,iomodel,DiagnosticHorizAnalysisEnum)); 164 164 count++; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
r12832 r13073 16 16 int i; 17 17 int count; 18 double yts;18 IssmDouble yts; 19 19 int numberofvertices; 20 20 bool ishutter; … … 51 51 /*keep only this partition's nodes:*/ 52 52 if((iomodel->my_vertices[i])){ 53 if (! (int)iomodel->Data(FlowequationVertexEquationEnum)[i]==HutterApproximationEnum){53 if (!reCast<int,IssmDouble>(iomodel->Data(FlowequationVertexEquationEnum)[i])==HutterApproximationEnum){ 54 54 55 55 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHutterAnalysisEnum)); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
r12832 r13073 17 17 int dim; 18 18 int count; 19 double yts;19 IssmDouble yts; 20 20 int numberofvertices; 21 21 … … 52 52 if(iomodel->my_vertices[i]){ 53 53 54 if ( (int)iomodel->Data(FlowequationBorderstokesEnum)[i]){54 if (reCast<int,IssmDouble>(iomodel->Data(FlowequationBorderstokesEnum)[i])){ 55 55 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticVertAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for Stokes 56 56 count++; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp
r13056 r13073 21 21 int numberofvertices; 22 22 bool spcpresent=false; 23 double heatcapacity;24 double referencetemperature;23 IssmDouble heatcapacity; 24 IssmDouble referencetemperature; 25 25 26 26 /*Output*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp
r13056 r13073 40 40 for (i=0;i<numberofvertices;i++){ 41 41 if((iomodel->my_vertices[i]==1)){ 42 if ( iomodel->Data(MeshVertexonbedEnum)[i]){42 if (reCast<int>(iomodel->Data(MeshVertexonbedEnum)[i])){ 43 43 loads->AddObject(new Pengrid(iomodel->loadcounter+i+1,i,iomodel,MeltingAnalysisEnum)); 44 44 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
r12832 r13073 23 23 bool ispdd; 24 24 bool isdelta18o; 25 IssmDouble *size, Delta18oTimeSerie,Delta18oSurfaceTimeSerie ;26 25 27 26 /*Fetch data needed: */ -
issm/trunk-jpl/src/c/modules/Orthx/Orthx.cpp
r11695 r13073 11 11 12 12 /*intermediary:*/ 13 double norm_new,norm_old,dot_product;;13 IssmDouble norm_new,norm_old,dot_product;; 14 14 15 15 /*Initialize output*/ -
issm/trunk-jpl/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void RheologyBbarAbsGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){12 void RheologyBbarAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void RheologyBbarAbsGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void RheologyBbarAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp
r12450 r13073 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void SetControlInputsFromVectorx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, double* vector){11 void SetControlInputsFromVectorx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* vector){ 12 12 13 13 int num_controls; … … 30 30 void SetControlInputsFromVectorx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Vector* vector){ 31 31 32 double* serial_vector=NULL;32 IssmDouble* serial_vector=NULL; 33 33 34 34 serial_vector=vector->ToMPISerial(); … … 37 37 38 38 /*Free ressources:*/ 39 xDelete< double>(serial_vector);39 xDelete<IssmDouble>(serial_vector); 40 40 } -
issm/trunk-jpl/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h
r12832 r13073 10 10 /* local prototypes: */ 11 11 void SetControlInputsFromVectorx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,Vector* vector); 12 void SetControlInputsFromVectorx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters, double* vector);12 void SetControlInputsFromVectorx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* vector); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void SurfaceAbsVelMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){12 void SurfaceAbsVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void SurfaceAbsVelMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void SurfaceAbsVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
r12102 r13073 11 11 #include "../SurfaceAreax/SurfaceAreax.h" 12 12 13 void SurfaceAverageVelMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){13 void SurfaceAverageVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){ 14 14 15 15 /*Intermediary*/ … … 18 18 19 19 /*output: */ 20 double J=0;21 double J_sum;20 IssmDouble J=0; 21 IssmDouble J_sum; 22 22 23 23 /*Compute surface area and add to elements inputs */ -
issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void SurfaceAverageVelMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void SurfaceAverageVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void SurfaceLogVelMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){12 void SurfaceLogVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void SurfaceLogVelMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void SurfaceLogVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void SurfaceLogVxVyMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){12 void SurfaceLogVxVyMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void SurfaceLogVxVyMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void SurfaceLogVxVyMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void SurfaceRelVelMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){12 void SurfaceRelVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units,int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void SurfaceRelVelMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void SurfaceRelVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/ThicknessAbsGradientx/ThicknessAbsGradientx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void ThicknessAbsGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){12 void ThicknessAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/ThicknessAbsGradientx/ThicknessAbsGradientx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void ThicknessAbsGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void ThicknessAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp
r12102 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void ThicknessAbsMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){12 void ThicknessAbsMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void ThicknessAbsMisfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void ThicknessAbsMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp
r12927 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void ThicknessAcrossGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){12 void ThicknessAcrossGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h
r12927 r13073 10 10 11 11 /* local prototypes: */ 12 void ThicknessAcrossGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void ThicknessAcrossGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp
r12927 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void ThicknessAlongGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){12 void ThicknessAlongGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units, int weight_index){ 13 13 14 14 /*Intermediary*/ … … 17 17 18 18 /*output: */ 19 double J=0;20 double J_sum;19 IssmDouble J=0; 20 IssmDouble J_sum; 21 21 22 22 /*Compute Misfit: */ -
issm/trunk-jpl/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h
r12927 r13073 10 10 11 11 /* local prototypes: */ 12 void ThicknessAlongGradientx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index);12 void ThicknessAlongGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units,int weight_index); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/modules/TotalSmbx/TotalSmbx.cpp
r12773 r13073 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void TotalSmbx( double* pSmb, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){12 void TotalSmbx(IssmDouble* pSmb, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 double local_smb = 0;15 double total_smb;14 IssmDouble local_smb = 0; 15 IssmDouble total_smb; 16 16 17 17 for(int i=0;i<elements->Size();i++){ -
issm/trunk-jpl/src/c/modules/TotalSmbx/TotalSmbx.h
r12832 r13073 10 10 11 11 /* local prototypes: */ 12 void TotalSmbx( double* pSmb, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);12 void TotalSmbx(IssmDouble* pSmb, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif -
issm/trunk-jpl/src/c/solutions/control_core.cpp
r12832 r13073 82 82 /*Display info*/ 83 83 if(VerboseControl()) _pprintLine_("\n" << " control method step " << n+1 << "/" << nsteps); 84 for(i=0;i<num_responses;i++) step_responses[i]= (int)responses[n*num_responses+i];84 for(i=0;i<num_responses;i++) step_responses[i]=reCast<int,IssmDouble>(responses[n*num_responses+i]); 85 85 femmodel->parameters->SetParam(step_responses,1,num_responses,StepResponsesEnum); 86 86 … … 99 99 100 100 if(VerboseControl()) _pprintLine_(" optimizing along gradient direction"); 101 optpars.maxiter= (int)maxiter[n]; optpars.cm_jump=cm_jump[n];101 optpars.maxiter=reCast<int,IssmDouble>(maxiter[n]); optpars.cm_jump=cm_jump[n]; 102 102 BrentSearch(&search_scalar,J+n,&optpars,&objectivefunction,&optargs); 103 103 -
issm/trunk-jpl/src/c/solutions/hydrology_core.cpp
r12832 r13073 39 39 nsteps=1; 40 40 } 41 else nsteps= (int)((final_time-starttime)/dt);41 else nsteps=reCast<int,IssmDouble>((final_time-starttime)/dt); 42 42 time=starttime; 43 43 -
issm/trunk-jpl/src/c/solutions/issm.cpp
r13067 r13073 15 15 16 16 /*AD: */ 17 size_t tape_stats[11];17 int tape_stats[11]; 18 18 19 19 /*FemModel: */
Note:
See TracChangeset
for help on using the changeset viewer.