Changeset 26362
- Timestamp:
- 07/26/21 14:15:53 (4 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
r26329 r26362 1187 1187 Element* basalelement; 1188 1188 1189 if(control_interp==P0Enum) _error_("cannot require regularization for P0 controls"); 1190 1189 1191 /*Get basal element*/ 1190 1192 element->FindParam(&domaintype,DomainTypeEnum); … … 1375 1377 /*Intermediaries*/ 1376 1378 int domaintype; 1379 1380 if(control_interp==P0Enum) _error_("cannot require regularization for P0 controls"); 1377 1381 1378 1382 /*Get basal element*/ … … 1440 1444 /*Intermediaries*/ 1441 1445 int domaintype; 1446 if(control_interp!=P1Enum) _error_("not implemented yet..."); 1442 1447 1443 1448 /*Get basal element*/ … … 1502 1507 /*Intermediaries*/ 1503 1508 int domaintype,dim; 1509 if(control_interp!=P1Enum) _error_("not implemented yet..."); 1504 1510 1505 1511 /*Get domaintype*/ … … 1579 1585 int domaintype,dim; 1580 1586 Element* basalelement; 1587 if(control_interp!=P1Enum) _error_("not implemented yet..."); 1581 1588 1582 1589 /*Get basal element*/ … … 1661 1668 /*return if floating (gradient is 0)*/ 1662 1669 if(element->IsAllFloating()) return; 1670 if(control_interp==P0Enum) _error_("cannot require regularization for P0 controls"); 1663 1671 1664 1672 /*Intermediaries*/ … … 1755 1763 if(element->IsAllFloating()) return; 1756 1764 if(!element->IsOnBase()) return; 1765 if(control_interp!=P1Enum) _error_("not implemented yet..."); 1757 1766 1758 1767 /*Intermediaries*/ … … 1934 1943 1935 1944 /*Build gradient vector (actually -dJ/dD): */ 1936 for(int i=0;i<numvertices;i++){ 1937 if(domaintype!=Domain2DverticalEnum) ge[i]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i]; 1938 else ge[i]+=-2.*drag*dalpha2dk*(lambda*vx)*Jdet*gauss->weight*basis[i]; 1939 _assert_(!xIsNan<IssmDouble>(ge[i])); 1940 } 1941 } 1942 gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL); 1945 if(control_interp==P1Enum){ 1946 for(int i=0;i<numvertices;i++){ 1947 if(domaintype!=Domain2DverticalEnum) ge[i]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i]; 1948 else ge[i]+=-2.*drag*dalpha2dk*(lambda*vx)*Jdet*gauss->weight*basis[i]; 1949 _assert_(!xIsNan<IssmDouble>(ge[i])); 1950 } 1951 } 1952 else if(control_interp==P0Enum){ 1953 if(domaintype!=Domain2DverticalEnum) ge[0]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight; 1954 else ge[0]+=-2.*drag*dalpha2dk*(lambda*vx)*Jdet*gauss->weight; 1955 _assert_(!xIsNan<IssmDouble>(ge[0])); 1956 } 1957 else{ 1958 _error_("not supported"); 1959 } 1960 } 1961 if(control_interp==P1Enum){ 1962 gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL); 1963 } 1964 else if(control_interp==P0Enum){ 1965 gradient->SetValue(vertexpidlist[0],ge[0],ADD_VAL); 1966 } 1967 else{ 1968 _error_("not supported"); 1969 } 1943 1970 1944 1971 /*Clean up and return*/ … … 2073 2100 if(element->IsAllFloating()) return; 2074 2101 if(!element->IsOnBase()) return; 2102 if(control_interp!=P1Enum) _error_("not implemented yet..."); 2075 2103 2076 2104 /*Intermediaries*/ … … 2171 2199 if(element->IsAllFloating()) return; 2172 2200 if(!element->IsOnBase()) return; 2201 if(control_interp!=P1Enum) _error_("not implemented yet..."); 2173 2202 2174 2203 /*Intermediaries*/ … … 2241 2270 /*return if floating (gradient is 0)*/ 2242 2271 if(element->IsAllFloating()) return; 2272 if(control_interp!=P1Enum) _error_("not implemented yet..."); 2243 2273 2244 2274 /*Intermediaries*/ … … 2366 2396 int domaintype,dim; 2367 2397 Element* basalelement; 2398 if(control_interp!=P1Enum) _error_("not implemented yet..."); 2368 2399 2369 2400 /*Get basal element*/ -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r26329 r26362 220 220 /*Call inputs method*/ 221 221 switch(interpolation_enum){ 222 case P0Enum: 223 control_input->SetControl(interpolation_enum,1,&this->lid,values,values_min,values_max); 224 break; 222 225 case P1Enum: 223 226 control_input->SetControl(interpolation_enum,NUMVERTICES,&vertexlids[0],values,values_min,values_max); -
issm/trunk-jpl/src/c/classes/Inputs/PentaInput.cpp
r25508 r26362 177 177 } 178 178 } 179 else if(interp_in==P0Enum && this->interpolation==P0Enum){ 180 _assert_(this->N==1); 181 for(int i=0;i<numindices;i++){ 182 int row = indices[i]; 183 _assert_(row>=0); 184 _assert_(row<this->M); 185 this->values[row] = values_in[i]; 186 } 187 } 179 188 else if(this->interpolation!=P1Enum && interp_in==P1Enum){ 180 189 this->Reset(interp_in);
Note:
See TracChangeset
for help on using the changeset viewer.