Changeset 16485
- Timestamp:
- 10/21/13 15:41:43 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 1 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/CMakeLists.txt ¶
r16470 r16485 73 73 $ENV{ISSM_DIR}/src/c/modules/VecMergex 74 74 $ENV{ISSM_DIR}/src/c/modules/Mergesolutionfromftogx 75 $ENV{ISSM_DIR}/src/c/modules/InputToResultx76 75 $ENV{ISSM_DIR}/src/c/analyses 77 76 $ENV{ISSM_DIR}/src/c/solutionsequences … … 219 218 ./modules/VecMergex/VecMergex.cpp 220 219 ./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp 221 ./modules/InputToResultx/InputToResultx.cpp222 220 ./analyses/ProcessArguments.cpp 223 221 ./analyses/ResetBoundaryConditions.cpp -
TabularUnified issm/trunk-jpl/src/c/Makefile.am ¶
r16470 r16485 337 337 ./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\ 338 338 ./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h\ 339 ./modules/InputToResultx/InputToResultx.cpp\340 ./modules/InputToResultx/InputToResultx.h\341 339 ./analyses/ProcessArguments.cpp\ 342 340 ./analyses/ResetBoundaryConditions.cpp\ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.h ¶
r16478 r16485 64 64 virtual void DeleteResults(void)=0; 65 65 virtual void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0; 66 virtual void InputToResult(int enum_type,int step,IssmDouble time)=0;67 66 virtual void InputDuplicate(int original_enum,int new_enum)=0; 68 67 virtual void InputCreate(IssmDouble* vector,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code)=0; 69 virtual void RequestedOutput(int output_enum,int step,IssmDouble time)=0;70 68 71 69 virtual int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum)=0; -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.cpp ¶
r16483 r16485 2113 2113 } 2114 2114 /*}}}*/ 2115 /*FUNCTION Penta::InputToResult{{{*/2116 void Penta::InputToResult(int enum_type,int step,IssmDouble time){2117 2118 Input *input = NULL;2119 2120 /*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */2121 if (enum_type==MaterialsRheologyBbarEnum) input=this->material->inputs->GetInput(MaterialsRheologyBEnum);2122 else if (enum_type==DamageDbarEnum) input=this->material->inputs->GetInput(DamageDEnum);2123 else input=this->inputs->GetInput(enum_type);2124 //if (!input) _error_("Input " << EnumToStringx(enum_type) << " not found in penta->inputs"); why error out? if the requested input does not exist, we should still2125 //try and output whatever we can instead of just failing.2126 if(!input)return;2127 2128 /*If we don't find it, no big deal, just don't do the transfer. Otherwise, build a new Result2129 * object out of the input, with the additional step and time information: */2130 this->results->AddResult(input->SpawnResult(step,time));2131 #ifdef _HAVE_CONTROL_2132 if(input->ObjectEnum()==ControlInputEnum){2133 if(((ControlInput*)input)->gradient!=NULL) this->results->AddResult(((ControlInput*)input)->SpawnGradient(step,time));2134 }2135 #endif2136 }2137 /*}}}*/2138 2115 /*FUNCTION Penta::InputUpdateFromConstant(bool value, int name);{{{*/ 2139 2116 void Penta::InputUpdateFromConstant(bool constant, int name){ … … 2931 2908 /*clean-up*/ 2932 2909 delete gauss; 2933 }2934 /*}}}*/2935 /*FUNCTION Penta::RequestedOutput{{{*/2936 void Penta::RequestedOutput(int output_enum,int step,IssmDouble time){2937 if(IsInput(output_enum)){2938 /*just transfer this input to results, and we are done: */2939 InputToResult(output_enum,step,time);2940 }2941 else{2942 /*this input does not exist, compute it, and then transfer to results: */2943 switch(output_enum){2944 case BasalFrictionEnum:2945 2946 /*create input: */2947 BasalFrictionCreateInput();2948 2949 /*transfer to results :*/2950 InputToResult(output_enum,step,time);2951 2952 /*erase input: */2953 inputs->DeleteInput(output_enum);2954 break;2955 case ViscousHeatingEnum:2956 2957 /*create input: */2958 ViscousHeatingCreateInput();2959 2960 /*transfer to results :*/2961 InputToResult(output_enum,step,time);2962 2963 /*erase input: */2964 inputs->DeleteInput(output_enum);2965 break;2966 2967 case StressTensorEnum:2968 this->ComputeStressTensor();2969 InputToResult(StressTensorxxEnum,step,time);2970 InputToResult(StressTensorxyEnum,step,time);2971 InputToResult(StressTensorxzEnum,step,time);2972 InputToResult(StressTensoryyEnum,step,time);2973 InputToResult(StressTensoryzEnum,step,time);2974 InputToResult(StressTensorzzEnum,step,time);2975 break;2976 2977 default:2978 /*do nothing, no need to derail the computation because one of the outputs requested cannot be found: */2979 break;2980 }2981 }2982 2983 2910 } 2984 2911 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.h ¶
r16478 r16485 98 98 void InputScale(int enum_type,IssmDouble scale_factor); 99 99 100 void InputToResult(int enum_type,int step,IssmDouble time);101 void RequestedOutput(int output_enum,int step,IssmDouble time);102 100 void ListResultsInfo(int** results_enums,int** results_size,IssmDouble** results_times,int** results_steps,int* num_results); 103 101 void ResultInterpolation(int* pinterpolation,int output_enum); -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Seg.h ¶
r16478 r16485 110 110 void InputDuplicate(int original_enum,int new_enum){_error_("not implemented yet");}; 111 111 void InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");}; 112 void InputToResult(int enum_type,int step,IssmDouble time){_error_("not implemented yet");};113 112 void DeleteResults(void){_error_("not implemented yet");}; 114 113 void MaterialUpdateFromTemperature(void){_error_("not implemented yet");}; 115 114 int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");}; 116 115 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm){_error_("not implemented yet");}; 117 void RequestedOutput(int output_enum,int step,IssmDouble time){_error_("not implemented yet");};118 116 void ListResultsInfo(int** results_enums,int** results_size,IssmDouble** results_times,int** results_steps,int* num_results){_error_("not implemented yet");}; 119 117 void ResultInterpolation(int* pinterpolation,int output_enum){_error_("not implemented");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.cpp ¶
r16483 r16485 1635 1635 } 1636 1636 /*}}}*/ 1637 /*FUNCTION Tria::InputToResult{{{*/1638 void Tria::InputToResult(int enum_type,int step,IssmDouble time){1639 1640 Input *input = NULL;1641 1642 /*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */1643 if (enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum)1644 input=this->material->inputs->GetInput(enum_type);1645 else1646 input=this->inputs->GetInput(enum_type);1647 //if (!input) _error_("Input " << EnumToStringx(enum_type) << " not found in tria->inputs");1648 if(!input)return;1649 1650 /*If we don't find it, no big deal, just don't do the transfer. Otherwise, build a new Result1651 * object out of the input, with the additional step and time information: */1652 this->results->AddResult(input->SpawnResult(step,time));1653 1654 #ifdef _HAVE_CONTROL_1655 if(input->ObjectEnum()==ControlInputEnum){1656 if(((ControlInput*)input)->gradient!=NULL) this->results->AddResult(((ControlInput*)input)->SpawnGradient(step,time));1657 }1658 #endif1659 }1660 /*}}}*/1661 1637 /*FUNCTION Tria::InputUpdateFromConstant(int value, int name);{{{*/ 1662 1638 void Tria::InputUpdateFromConstant(int constant, int name){ … … 2611 2587 } 2612 2588 2613 2614 }2615 /*}}}*/2616 /*FUNCTION Tria::RequestedOutput{{{*/2617 void Tria::RequestedOutput(int output_enum,int step,IssmDouble time){2618 2619 if(IsInput(output_enum)){2620 /*just transfer this input to results, and we are done: */2621 InputToResult(output_enum,step,time);2622 }2623 else{2624 /*this input does not exist, compute it, and then transfer to results: */2625 switch(output_enum){2626 case StressTensorEnum:2627 this->ComputeStressTensor();2628 InputToResult(StressTensorxxEnum,step,time);2629 InputToResult(StressTensorxyEnum,step,time);2630 InputToResult(StressTensorxzEnum,step,time);2631 InputToResult(StressTensoryyEnum,step,time);2632 InputToResult(StressTensoryzEnum,step,time);2633 InputToResult(StressTensorzzEnum,step,time);2634 break;2635 2636 default:2637 /*do nothing, no need to derail the computation because one of the outputs requested cannot be found: */2638 break;2639 }2640 }2641 2589 2642 2590 } -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.h ¶
r16478 r16485 101 101 void InputDuplicate(int original_enum,int new_enum); 102 102 void InputScale(int enum_type,IssmDouble scale_factor); 103 void InputToResult(int enum_type,int step,IssmDouble time);104 103 void DeleteResults(void); 105 104 void MaterialUpdateFromTemperature(void){_error_("not implemented yet");}; 106 105 int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum); 107 106 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm); 108 void RequestedOutput(int output_enum,int step,IssmDouble time);109 107 void ListResultsInfo(int** results_enums,int** results_size,IssmDouble** results_times,int** results_steps,int* num_results); 110 108 void ResultInterpolation(int* pinterpolation,int output_enum); -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.cpp ¶
r16478 r16485 478 478 } 479 479 /*}}}*/ 480 void FemModel::RequestedOutputsx(char** requested_outputs, int numoutputs){/*{{{*/481 482 char *output_string;483 int step;484 IssmDouble time;485 IssmDouble output_value;486 487 /*Get time and step*/488 parameters->FindParam(&step,StepEnum);489 parameters->FindParam(&time,TimeEnum);490 491 /*retrieve Inputs*/492 if(numoutputs){493 for(int i=0;i<numoutputs;i++){494 output_string=requested_outputs[i];495 496 if (strcmp(output_string,"IceVolume")==0){497 Responsex(&output_value,output_string);498 results->AddObject(new GenericExternalResult<double>(results->Size()+1,IceVolumeEnum,reCast<IssmPDouble>(output_value),step,time));499 }500 else if (strcmp(output_string,"IceVolumeAboveFloatation")==0){501 Responsex(&output_value,output_string);502 results->AddObject(new GenericExternalResult<double>(results->Size()+1,IceVolumeAboveFloatationEnum,reCast<IssmPDouble>(output_value),step,time));503 }504 else if (strcmp(output_string,"TotalSmb")==0){505 Responsex(&output_value,output_string);506 results->AddObject(new GenericExternalResult<double>(results->Size()+1,TotalSmbEnum,reCast<IssmPDouble>(output_value),step,time));507 }508 else if (strcmp(output_string,"MaxVel")==0){509 Responsex(&output_value,output_string);510 results->AddObject(new GenericExternalResult<double>(results->Size()+1,MaxVelEnum,reCast<IssmPDouble>(output_value),step,time));511 }512 else if (StringToEnumx(output_string,false)==-1){513 /*This response can only be computed by going into the output definitions: */514 output_value=OutputDefinitionsResponsex(this,output_string);515 results->AddObject(new GenericExternalResult<double>(results->Size()+1,output_string,reCast<IssmPDouble>(output_value),step,time));516 }517 else{518 /*create this output in the element inputs, and then transfer to results:*/519 for(int j=0;j<elements->Size();j++){520 Element* element=(Element*)elements->GetObjectByOffset(j);521 element->RequestedOutput(StringToEnumx(output_string),step,time);522 }523 }524 }525 }526 }527 /*}}}*/528 480 void FemModel::RequestedOutputsx(Results **presults,char** requested_outputs, int numoutputs){/*{{{*/ 529 481 -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.h ¶
r16478 r16485 84 84 void RequestedOutputsx(Results **presults,int* requested_outputs,int numoutputs); 85 85 void RequestedOutputsx(Results **presults,char** requested_outputs, int numoutputs); 86 void RequestedOutputsx(char** requested_outputs, int numoutputs);87 86 void RequestedDependentsx(void); 88 87 void Responsex(IssmDouble* presponse,int response_descriptor_enum); -
TabularUnified issm/trunk-jpl/src/c/modules/modules.h ¶
r16413 r16485 44 44 #include "./InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h" 45 45 #include "./InterpFromMeshToGridx/InterpFromMeshToGridx.h" 46 #include "./InputToResultx/InputToResultx.h"47 46 #include "./InputUpdateFromConstantx/InputUpdateFromConstantx.h" 48 47 #include "./InputUpdateFromSolutionx/InputUpdateFromSolutionx.h"
Note:
See TracChangeset
for help on using the changeset viewer.