Changeset 25471
- Timestamp:
- 08/25/20 14:24:03 (5 years ago)
- Location:
- issm/trunk-jpl/src/c/classes
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp
r25437 r25471 31 31 this->weights_enum = UNDEF; 32 32 this->misfit=0; 33 this->lock=0;34 33 this->timepassedflag = false; 35 this->last_time = 0.;36 37 34 } 38 35 /*}}}*/ … … 48 45 49 46 this->misfit=0; 50 this->lock=0;51 47 } 52 48 /*}}}*/ … … 54 50 if(this->name)xDelete(this->name); 55 51 this->misfit=0; 56 this->lock=0;57 52 } 58 53 /*}}}*/ … … 61 56 Cfdragcoeffabsgrad* mf = new Cfdragcoeffabsgrad(this->name,this->definitionenum, this->weights_enum,this->timepassedflag); 62 57 mf->misfit=this->misfit; 63 mf->lock=this->lock;64 58 return (Object*) mf; 65 59 } … … 100 94 /*}}}*/ 101 95 IssmDouble Cfdragcoeffabsgrad::Response(FemModel* femmodel){/*{{{*/ 102 /*diverse: */103 IssmDouble time;104 96 105 /*recover time parameters: */ 106 int i; 107 IssmDouble J=0.; 108 IssmDouble J_sum=0.; 97 /*recover parameters: */ 98 IssmDouble J=0.; 99 IssmDouble J_sum=0.; 109 100 110 for(i=0;i<femmodel->elements->Size();i++){111 112 113 101 for(int i=0;i<femmodel->elements->Size();i++){ 102 Element* element=(Element*)femmodel->elements->GetObjectByOffset(i); 103 J+=this->Cfdragcoeffabsgrad_Calculation(element,weights_enum); 104 } 114 105 115 116 117 106 ISSM_MPI_Allreduce ( (void*)&J,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm()); 107 ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 108 J=J_sum; 118 109 119 timepassedflag = true; 120 return J; 121 } 122 /*}}}*/ 110 timepassedflag = true; 111 return J; 112 }/*}}}*/ 123 113 IssmDouble Cfdragcoeffabsgrad::Cfdragcoeffabsgrad_Calculation(Element* element, int weights_enum){/*{{{*/ 124 114 -
issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.h
r22971 r25471 21 21 int weights_enum; 22 22 bool timepassedflag; 23 IssmDouble last_time;24 23 25 int lock; // if lock is on, we just return the value stored in "misfit". this is used so we don't compute misfit past the final_time26 24 IssmDouble misfit; //value carried over in time. 27 25 -
issm/trunk-jpl/src/c/classes/Cfsurfacelogvel.cpp
r25446 r25471 30 30 this->name = NULL; 31 31 this->misfit=0; 32 this->lock=0;33 32 this->datatime=0.; 34 33 this->timepassedflag = false; 35 this->last_time=0.;36 34 37 35 } … … 48 46 49 47 this->misfit=0; 50 this->lock=0;51 48 } 52 49 /*}}}*/ … … 54 51 if(this->name)xDelete(this->name); 55 52 this->misfit=0; 56 this->lock=0;57 53 } 58 54 /*}}}*/ … … 61 57 Cfsurfacelogvel* mf = new Cfsurfacelogvel(this->name,this->definitionenum,this->datatime,this->timepassedflag); 62 58 mf->misfit=this->misfit; 63 mf->lock=this->lock;64 59 return (Object*) mf; 65 60 } … … 105 100 IssmDouble time; 106 101 femmodel->parameters->FindParam(&time,TimeEnum); 107 if(time < last_time) this->timepassedflag = false; //FIXME: do we really need this? looks like an old piece of code before copy108 this->last_time = time;109 102 110 103 IssmDouble J=0.; -
issm/trunk-jpl/src/c/classes/Cfsurfacelogvel.h
r22612 r25471 21 21 IssmDouble datatime; 22 22 bool timepassedflag; 23 IssmDouble last_time;24 23 25 int lock; // if lock is on, we just return the value stored in "misfit". this is used so we don't compute misfit past the final_time26 24 IssmDouble misfit; //value carried over in time. 27 25 -
issm/trunk-jpl/src/c/classes/Cfsurfacesquare.cpp
r25446 r25471 33 33 this->weights_enum = UNDEF; 34 34 this->misfit=0; 35 this->lock=0;36 35 this->datatime=0.; 37 36 this->timepassedflag = false; 38 this->last_time = 0.;39 40 37 } 41 38 /*}}}*/ … … 54 51 55 52 this->misfit=0; 56 this->lock=0;57 53 } 58 54 /*}}}*/ … … 60 56 if(this->name)xDelete(this->name); 61 57 this->misfit=0; 62 this->lock=0;63 58 } 64 59 /*}}}*/ … … 67 62 Cfsurfacesquare* mf = new Cfsurfacesquare(this->name,this->definitionenum, this->model_enum,this->observation_enum,this->weights_enum,this->datatime,this->timepassedflag); 68 63 mf->misfit=this->misfit; 69 mf->lock=this->lock;70 64 return (Object*) mf; 71 65 } … … 114 108 /*recover time parameters: */ 115 109 femmodel->parameters->FindParam(&time,TimeEnum); 116 if(time < last_time) timepassedflag = false;117 last_time = time;118 110 119 int i; 120 IssmDouble J=0.; 121 IssmDouble J_sum=0.; 111 IssmDouble J=0.; 112 IssmDouble J_sum=0.; 122 113 123 114 if(datatime<=time && !timepassedflag){ 124 for(i =0;i<femmodel->elements->Size();i++){115 for(int i=0;i<femmodel->elements->Size();i++){ 125 116 Element* element=(Element*)femmodel->elements->GetObjectByOffset(i); 126 117 J+=this->Cfsurfacesquare_Calculation(element,model_enum,observation_enum,weights_enum); … … 133 124 timepassedflag = true; 134 125 return J; 135 }126 } 136 127 else return J; 137 128 } -
issm/trunk-jpl/src/c/classes/Cfsurfacesquare.h
r22612 r25471 26 26 IssmDouble datatime; 27 27 bool timepassedflag; 28 IssmDouble last_time;29 28 30 int lock; // if lock is on, we just return the value stored in "misfit". this is used so we don't compute misfit past the final_time31 29 IssmDouble misfit; //value carried over in time. 32 30 -
issm/trunk-jpl/src/c/classes/Misfit.cpp
r25379 r25471 229 229 230 230 /*If we are locked, return time average: */ 231 if(this->lock) return misfit/(time-starttime);231 if(this->lock) return misfit/(time-starttime); 232 232 233 233 /*First, the global model response: */
Note:
See TracChangeset
for help on using the changeset viewer.