Changeset 26826
- Timestamp:
- 01/27/22 13:30:21 (3 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r26596 r26826 273 273 ./classes/RiftStruct.cpp \ 274 274 ./modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp \ 275 ./modules/ModelProcessorx/Transient/UpdateParametersTransient.cpp \ 275 276 ./cores/transient_core.cpp \ 276 277 ./cores/steadystate_core.cpp \ -
issm/trunk-jpl/src/c/cores/groundingline_core.cpp
r25680 r26826 16 16 17 17 /* intermediaries */ 18 int numoutputs; 18 19 bool save_results; 20 char** requested_outputs = NULL; 19 21 20 22 /* recover parameters */ 21 23 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 24 femmodel->parameters->FindParam(&numoutputs,GroundinglineNumRequestedOutputsEnum); 25 if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,GroundinglineRequestedOutputsEnum); 22 26 23 27 /*Move grounding line*/ … … 33 37 extrudefrombase_core(femmodel); 34 38 35 if(save_results){ 36 int outputs[3] = {SurfaceEnum,BaseEnum,MaskOceanLevelsetEnum}; 37 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3); 38 } 39 /*Save results*/ 40 if(save_results) femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs); 41 42 /*Free ressources:*/ 43 if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);} 39 44 40 45 /*Stop profiler*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
r26388 r26826 81 81 UpdateElementsAndMaterialsDakota(elements,inputs,materials,iomodel); 82 82 #endif 83 if(solution_enum==TransientSolutionEnum) UpdateElementsTransient(elements,parameters,inputs,iomodel); 84 83 if(solution_enum==TransientSolutionEnum){ 84 UpdateParametersTransient(parameters,iomodel); 85 UpdateElementsTransient(elements,parameters,inputs,iomodel); 86 } 85 87 /*Output definitions dataset: */ 86 88 if(VerboseMProcessor()) _printf0_(" creating output definitions" << "\n"); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
r25379 r26826 24 24 void UpdateElementsAndMaterialsDakota(Elements* elements,Inputs* inputs,Materials* materials, IoModel* iomodel); 25 25 void UpdateElementsTransient(Elements* elements,Parameters* parameters,Inputs* inputs,IoModel* iomodel); 26 void UpdateParametersTransient(Parameters* parameters,IoModel* iomodel); 26 27 void CreateNodes(Nodes*nodes, IoModel* iomodel,int analysis,int finite_element,bool isamr=false,int approximation=NoneApproximationEnum,int* approximations=NULL); 27 28 -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26825 r26826 190 190 syn keyword cConstant GroundinglineMeltInterpolationEnum 191 191 syn keyword cConstant GroundinglineMigrationEnum 192 syn keyword cConstant GroundinglineNumRequestedOutputsEnum 193 syn keyword cConstant GroundinglineRequestedOutputsEnum 192 194 syn keyword cConstant HydrologyAveragingEnum 193 195 syn keyword cConstant HydrologyCavitySpacingEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26825 r26826 184 184 GroundinglineMeltInterpolationEnum, 185 185 GroundinglineMigrationEnum, 186 GroundinglineNumRequestedOutputsEnum, 187 GroundinglineRequestedOutputsEnum, 186 188 HydrologyAveragingEnum, 187 189 HydrologyCavitySpacingEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26825 r26826 192 192 case GroundinglineMeltInterpolationEnum : return "GroundinglineMeltInterpolation"; 193 193 case GroundinglineMigrationEnum : return "GroundinglineMigration"; 194 case GroundinglineNumRequestedOutputsEnum : return "GroundinglineNumRequestedOutputs"; 195 case GroundinglineRequestedOutputsEnum : return "GroundinglineRequestedOutputs"; 194 196 case HydrologyAveragingEnum : return "HydrologyAveraging"; 195 197 case HydrologyCavitySpacingEnum : return "HydrologyCavitySpacing"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r26825 r26826 183 183 syn keyword juliaConstC GroundinglineMeltInterpolationEnum 184 184 syn keyword juliaConstC GroundinglineMigrationEnum 185 syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum 186 syn keyword juliaConstC GroundinglineRequestedOutputsEnum 185 187 syn keyword juliaConstC HydrologyAveragingEnum 186 188 syn keyword juliaConstC HydrologyCavitySpacingEnum -
issm/trunk-jpl/src/m/classes/groundingline.m
r24861 r26826 9 9 friction_interpolation = ''; 10 10 melt_interpolation = ''; 11 requested_outputs = {}; 11 12 end 12 13 methods … … 25 26 self.friction_interpolation= 'SubelementFriction1'; 26 27 self.melt_interpolation = 'NoMeltOnPartiallyFloating'; 28 %default output 29 self.requested_outputs = {'default'}; 27 30 28 31 end % }}} … … 32 35 md = checkfield(md,'fieldname','groundingline.friction_interpolation','values',{'NoFrictionOnPartiallyFloating' 'SubelementFriction1' 'SubelementFriction2'}); 33 36 md = checkfield(md,'fieldname','groundingline.melt_interpolation','values',{'NoMeltOnPartiallyFloating' 'SubelementMelt1' 'SubelementMelt2' 'FullMeltOnPartiallyFloating'}); 37 md = checkfield(md,'fieldname','groundingline.requested_outputs','stringrow',1); 34 38 35 39 if ~strcmp(self.migration,'None') & strcmp(solution,'TransientSolution') & md.transient.isgroundingline==1, … … 48 52 49 53 end % }}} 54 function list = defaultoutputs(self,md) % {{{ 55 56 list = {'Surface','Base','MaskOceanLevelset'}; 57 58 end % }}} 50 59 function disp(self) % {{{ 51 60 disp(sprintf(' grounding line migration parameters:')); … … 53 62 fielddisplay(self,'friction_interpolation','type of friction interpolation for partially floating elements: ''NoFrictionOnPartiallyFloating'',''SubelementFriction1'', or ''SubelementFriction2'''); 54 63 fielddisplay(self,'melt_interpolation','type of melt interpolation for partially floating elements: ''NoMeltOnPartiallyFloating'',''SubelementMelt1'',''SubelementMelt2'', or ''FullMeltOnPartiallyFloating'''); 64 fielddisplay(self,'requested_outputs','additional outputs requested'); 55 65 56 66 end % }}} … … 59 69 WriteData(fid,prefix,'data',self.friction_interpolation,'name','md.groundingline.friction_interpolation','format','String'); 60 70 WriteData(fid,prefix,'data',self.melt_interpolation,'name','md.groundingline.melt_interpolation','format','String'); 71 72 %process requested outputs 73 outputs = self.requested_outputs; 74 pos = find(ismember(outputs,'default')); 75 if ~isempty(pos), 76 outputs(pos) = []; %remove 'default' from outputs 77 outputs = [outputs defaultoutputs(self,md)]; %add defaults 78 end 79 WriteData(fid,prefix,'data',outputs,'name','md.groundingline.requested_outputs','format','StringArray') 61 80 end % }}} 62 81 function savemodeljs(self,fid,modelname) % {{{ 63 82 64 83 writejsstring(fid,[modelname '.groundingline.migration'],self.migration); 65 writejsstring(fid,[modelname '.groundingline.friction_interpolation'],self.migration); 66 writejsstring(fid,[modelname '.groundingline.melt_interpolation'],self.migration); 84 writejsstring(fid,[modelname '.groundingline.friction_interpolation'],self.friction_interpolation); 85 writejsstring(fid,[modelname '.groundingline.melt_interpolation'],self.melt_interpolation); 86 writejscellstring(fid,[modelname '.groundingline.requested_outputs'],self.requested_outputs); 67 87 68 88 end % }}} -
issm/trunk-jpl/src/m/classes/groundingline.py
r26358 r26826 18 18 self.friction_interpolation = '' 19 19 self.melt_interpolation = '' 20 self.requested_outptuts = [] 20 21 21 22 # Set defaults … … 29 30 s += '{}\n'.format(fielddisplay(self, 'migration', 'type of friction interpolation on partially floating elements: ''SubelementFriction1'', ''SubelementFriction2'', ''NoFrictionOnPartiallyFloating''')) 30 31 s += '{}\n'.format(fielddisplay(self, 'migration', 'type of melt interpolation on partially floating elements: \'SubelementMelt1\', \'SubelementMelt2\', \'NoMeltOnPartiallyFloating\', \'FullMeltOnPartiallyFloating\'')) 32 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 31 33 return s 32 34 # }}} 35 36 def defaultoutputs(self, md): # {{{ 37 return ['Surface', 'Base','MaskOceanLevelset'] 38 39 #}}} 33 40 34 41 def setdefaultparameters(self): # {{{ … … 37 44 self.friction_interpolation = 'SubelementFriction1' 38 45 self.melt_interpolation = 'NoMeltOnPartiallyFloating' 46 # Default output 47 self.requested_outputs = ['default'] 39 48 40 49 return self … … 45 54 md = checkfield(md, 'fieldname', 'groundingline.friction_interpolation', 'values', ['SubelementFriction1', 'SubelementFriction2', 'NoFrictionOnPartiallyFloating']) 46 55 md = checkfield(md, 'fieldname', 'groundingline.melt_interpolation', 'values', ['SubelementMelt1', 'SubelementMelt2', 'NoMeltOnPartiallyFloating', 'FullMeltOnPartiallyFloating']) 56 md = checkfield(md, 'fieldname', 'groundingline.requested_outputs', 'stringrow', 1) 47 57 48 58 if(not m.strcmp(self.migration, 'None') and md.transient.isgroundingline and solution == 'TransientSolution'): … … 62 72 WriteData(fid, prefix, 'data', self.friction_interpolation, 'name', 'md.groundingline.friction_interpolation', 'format', 'String') 63 73 WriteData(fid, prefix, 'data', self.melt_interpolation, 'name', 'md.groundingline.melt_interpolation', 'format', 'String') 74 75 # Process requested outputs 76 outputs = self.requested_outputs 77 indices = [i for i, x in enumerate(outputs) if x == 'default'] 78 if len(indices) > 0: 79 outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:] 80 outputs = outputscopy 81 WriteData(fid, prefix, 'data', outputs, 'name', 'md.groundingline.requested_outputs', 'format', 'StringArray') 64 82 # }}}
Note:
See TracChangeset
for help on using the changeset viewer.