Changeset 23546 for issm/trunk-jpl/src/c/classes/FemModel.cpp
- Timestamp:
- 12/13/18 07:05:22 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/FemModel.cpp
r23544 r23546 4821 4821 } 4822 4822 /*}}}*/ 4823 void FemModel::InitTransientOutputx(int* stackedinput_enum,int numoutputs){ /*{{{*/4824 4825 for(int i=0;i<numoutputs;i++){4826 if(stackedinput_enum[i]<0){4827 _error_("Can't deal with non enum fields for result Stack");4828 }4829 else{4830 for(int j=0;j<elements->Size();j++){4831 TransientInput* transient_input = new TransientInput(stackedinput_enum[i]);4832 /*Intermediaries*/4833 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));4834 //transient_input->Configure(element->parameters);4835 element->inputs->AddInput(transient_input);4836 }4837 }4838 }4839 }4840 /*}}}*/4841 void FemModel::StackTransientOutputx(int* input_enum,int* stackedinput_enum,IssmDouble hydrotime,int numoutputs){ /*{{{*/4842 4843 for(int i=0;i<numoutputs;i++){4844 if(input_enum[i]<0){4845 _error_("Can't deal with non enum fields for result Stack");4846 }4847 else{4848 for(int j=0;j<elements->Size();j++){4849 /*Intermediaries*/4850 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));4851 TransientInput* stacking_input=NULL;4852 Input* input=element->inputs->GetInput(stackedinput_enum[i]); _assert_(input); //this is the enum stack4853 stacking_input=dynamic_cast<TransientInput*>(input);4854 4855 int numvertices = element->GetNumberOfVertices();4856 IssmDouble* N=xNew<IssmDouble>(numvertices);4857 element->GetInputListOnVertices(&N[0],input_enum[i]); //this is the enum to stack4858 switch(element->ObjectEnum()){4859 case TriaEnum:4860 stacking_input->AddTimeInput(new TriaInput(stackedinput_enum[i],&N[0],P1Enum),hydrotime);4861 break;4862 case PentaEnum:4863 stacking_input->AddTimeInput(new PentaInput(stackedinput_enum[i],&N[0],P1Enum),hydrotime);4864 break;4865 case TetraEnum:4866 stacking_input->AddTimeInput(new TetraInput(stackedinput_enum[i],&N[0],P1Enum),hydrotime);4867 break;4868 default: _error_("Not implemented yet");4869 }4870 xDelete<IssmDouble>(N);4871 }4872 }4873 }4874 }4875 /*}}}*/4876 void FemModel::AverageTransientOutputx(int* stackedinput_enum,int* averagedinput_enum,IssmDouble init_time,int numoutputs){ /*{{{*/4877 4878 for(int i=0;i<numoutputs;i++){4879 if(stackedinput_enum[i]<0){4880 _error_("Can't deal with non enum fields for result Stack");4881 }4882 else{4883 for(int j=0;j<elements->Size();j++){4884 /*Intermediaries*/4885 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));4886 int numvertices = element->GetNumberOfVertices();4887 IssmDouble* time_averaged=NULL;4888 4889 Input* input=element->inputs->GetInput(stackedinput_enum[i]); _assert_(input);4890 TransientInput* stacking_input=NULL;4891 stacking_input=dynamic_cast<TransientInput*>(input);4892 stacking_input->GetInputAverageOnTimes(&time_averaged,init_time);4893 4894 element->AddInput(averagedinput_enum[i],&time_averaged[0],P1Enum);4895 xDelete<IssmDouble>(time_averaged);4896 }4897 }4898 }4899 }4900 /*}}}*/4901 4823 void FemModel::InitMeanOutputx(int* stackedinput_enum,int numoutputs){ /*{{{*/ 4902 4824
Note:
See TracChangeset
for help on using the changeset viewer.