Changeset 14abf44 in OpenModelica
- Timestamp:
- 2015-03-10T12:11:28+01:00 (9 years ago)
- Branches:
- Added-citation-metadata, maintenance/v1.14, maintenance/v1.15, maintenance/v1.16, maintenance/v1.17, maintenance/v1.18, maintenance/v1.19, maintenance/v1.20, maintenance/v1.21, maintenance/v1.22, maintenance/v1.23, master, omlib-staging
- Children:
- 9cd11c8
- Parents:
- 6d2afdd6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
SimulationRuntime/c/simulation/simulation_input_xml.cpp
r120de989 r14abf44 99 99 // a map for overrides 100 100 typedef std::map<std::string, std::string> omc_CommandLineOverrides; 101 // a map to find out which names were used 102 #define OMC_OVERRIDE_UNUSED 0 103 #define OMC_OVERRIDE_USED 1 104 typedef std::map<std::string, int> omc_CommandLineOverridesUses; 105 101 106 // function to handle command line settings override 102 107 void doOverride(omc_ModelInput& mi, MODEL_DATA* modelData, const char* override, const char* overrideFile); … … 766 771 } 767 772 773 std::string getOverrideValue(omc_CommandLineOverrides& mOverrides, omc_CommandLineOverridesUses& mOverridesUses, std::string name) 774 { 775 mOverridesUses[name] = OMC_OVERRIDE_USED; 776 return mOverrides[name]; 777 } 778 768 779 void doOverride(omc_ModelInput& mi, MODEL_DATA* modelData, const char* override, const char* overrideFile) 769 780 { 770 781 omc_CommandLineOverrides mOverrides; 782 omc_CommandLineOverridesUses mOverridesUses; 771 783 char* overrideStr = NULL; 772 784 if((override != NULL) && (overrideFile != NULL)) … … 846 858 // map[key]=value 847 859 mOverrides[key] = value; 860 mOverridesUses[key] = OMC_OVERRIDE_UNUSED; 848 861 849 862 infoStreamPrint(LOG_SOLVER, 0, "override %s = %s", key.c_str(), value.c_str()); … … 856 869 857 870 // now we have all overrides in mOverrides, override mi now 858 mi.de["solver"] = mOverrides.count("solver") ? mOverrides["solver"]: mi.de["solver"];859 mi.de["startTime"] = mOverrides.count("startTime") ? mOverrides["startTime"]: mi.de["startTime"];860 mi.de["stopTime"] = mOverrides.count("stopTime") ? mOverrides["stopTime"]: mi.de["stopTime"];861 mi.de["stepSize"] = mOverrides.count("stepSize") ? mOverrides["stepSize"]: mi.de["stepSize"];862 mi.de["tolerance"] = mOverrides.count("tolerance") ? mOverrides["tolerance"]: mi.de["tolerance"];863 mi.de["outputFormat"] = mOverrides.count("outputFormat") ? mOverrides["outputFormat"]: mi.de["outputFormat"];864 mi.de["variableFilter"] = mOverrides.count("variableFilter") ? mOverrides["variableFilter"]: mi.de["variableFilter"];871 mi.de["solver"] = mOverrides.count("solver") ? getOverrideValue(mOverrides, mOverridesUses, "solver") : mi.de["solver"]; 872 mi.de["startTime"] = mOverrides.count("startTime") ? getOverrideValue(mOverrides, mOverridesUses, "startTime") : mi.de["startTime"]; 873 mi.de["stopTime"] = mOverrides.count("stopTime") ? getOverrideValue(mOverrides, mOverridesUses, "stopTime") : mi.de["stopTime"]; 874 mi.de["stepSize"] = mOverrides.count("stepSize") ? getOverrideValue(mOverrides, mOverridesUses, "stepSize") : mi.de["stepSize"]; 875 mi.de["tolerance"] = mOverrides.count("tolerance") ? getOverrideValue(mOverrides, mOverridesUses, "tolerance") : mi.de["tolerance"]; 876 mi.de["outputFormat"] = mOverrides.count("outputFormat") ? getOverrideValue(mOverrides, mOverridesUses, "outputFormat") : mi.de["outputFormat"]; 877 mi.de["variableFilter"] = mOverrides.count("variableFilter") ? getOverrideValue(mOverrides, mOverridesUses, "variableFilter") : mi.de["variableFilter"]; 865 878 866 879 // override all found! 867 880 for(long i=0; i<modelData->nStates; i++) 868 881 { 869 mi.rSta[i]["start"] = mOverrides.count(mi.rSta[i]["name"]) ? mOverrides[mi.rSta[i]["name"]]: mi.rSta[i]["start"];870 mi.rDer[i]["start"] = mOverrides.count(mi.rDer[i]["name"]) ? mOverrides[mi.rDer[i]["name"]]: mi.rDer[i]["start"];882 mi.rSta[i]["start"] = mOverrides.count(mi.rSta[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.rSta[i]["name"]) : mi.rSta[i]["start"]; 883 mi.rDer[i]["start"] = mOverrides.count(mi.rDer[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.rDer[i]["name"]) : mi.rDer[i]["start"]; 871 884 } 872 885 for(long i=0; i<(modelData->nVariablesReal - 2*modelData->nStates); i++) 873 886 { 874 mi.rAlg[i]["start"] = mOverrides.count(mi.rAlg[i]["name"]) ? mOverrides[mi.rAlg[i]["name"]]: mi.rAlg[i]["start"];887 mi.rAlg[i]["start"] = mOverrides.count(mi.rAlg[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.rAlg[i]["name"]) : mi.rAlg[i]["start"]; 875 888 } 876 889 for(long i=0; i<modelData->nVariablesInteger; i++) 877 890 { 878 mi.iAlg[i]["start"] = mOverrides.count(mi.iAlg[i]["name"]) ? mOverrides[mi.iAlg[i]["name"]]: mi.iAlg[i]["start"];891 mi.iAlg[i]["start"] = mOverrides.count(mi.iAlg[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.iAlg[i]["name"]) : mi.iAlg[i]["start"]; 879 892 } 880 893 for(long i=0; i<modelData->nVariablesBoolean; i++) 881 894 { 882 mi.bAlg[i]["start"] = mOverrides.count(mi.bAlg[i]["name"]) ? mOverrides[mi.bAlg[i]["name"]]: mi.bAlg[i]["start"];895 mi.bAlg[i]["start"] = mOverrides.count(mi.bAlg[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.bAlg[i]["name"]) : mi.bAlg[i]["start"]; 883 896 } 884 897 for(long i=0; i<modelData->nVariablesString; i++) 885 898 { 886 mi.sAlg[i]["start"] = mOverrides.count(mi.sAlg[i]["name"]) ? mOverrides[mi.sAlg[i]["name"]]: mi.sAlg[i]["start"];899 mi.sAlg[i]["start"] = mOverrides.count(mi.sAlg[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.sAlg[i]["name"]) : mi.sAlg[i]["start"]; 887 900 } 888 901 for(long i=0; i<modelData->nParametersReal; i++) 889 902 { 890 903 // TODO: only allow to override primary parameters 891 mi.rPar[i]["start"] = mOverrides.count(mi.rPar[i]["name"]) ? mOverrides[mi.rPar[i]["name"]]: mi.rPar[i]["start"];904 mi.rPar[i]["start"] = mOverrides.count(mi.rPar[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.rPar[i]["name"]) : mi.rPar[i]["start"]; 892 905 } 893 906 for(long i=0; i<modelData->nParametersInteger; i++) 894 907 { 895 908 // TODO: only allow to override primary parameters 896 mi.iPar[i]["start"] = mOverrides.count(mi.iPar[i]["name"]) ? mOverrides[mi.iPar[i]["name"]]: mi.iPar[i]["start"];909 mi.iPar[i]["start"] = mOverrides.count(mi.iPar[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.iPar[i]["name"]) : mi.iPar[i]["start"]; 897 910 } 898 911 for(long i=0; i<modelData->nParametersBoolean; i++) 899 912 { 900 913 // TODO: only allow to override primary parameters 901 mi.bPar[i]["start"] = mOverrides.count(mi.bPar[i]["name"]) ? mOverrides[mi.bPar[i]["name"]]: mi.bPar[i]["start"];914 mi.bPar[i]["start"] = mOverrides.count(mi.bPar[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.bPar[i]["name"]) : mi.bPar[i]["start"]; 902 915 } 903 916 for(long i=0; i<modelData->nParametersString; i++) 904 917 { 905 918 // TODO: only allow to override primary parameters 906 mi.sPar[i]["start"] = mOverrides.count(mi.sPar[i]["name"]) ? mOverrides[mi.sPar[i]["name"]]: mi.sPar[i]["start"];919 mi.sPar[i]["start"] = mOverrides.count(mi.sPar[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.sPar[i]["name"]) : mi.sPar[i]["start"]; 907 920 } 908 921 for(long i=0; i<modelData->nAliasReal; i++) 909 922 { 910 mi.rAli[i]["start"] = mOverrides.count(mi.rAli[i]["name"]) ? mOverrides[mi.rAli[i]["name"]]: mi.rAli[i]["start"];923 mi.rAli[i]["start"] = mOverrides.count(mi.rAli[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.rAli[i]["name"]) : mi.rAli[i]["start"]; 911 924 } 912 925 for(long i=0; i<modelData->nAliasInteger; i++) 913 926 { 914 mi.iAli[i]["start"] = mOverrides.count(mi.iAli[i]["name"]) ? mOverrides[mi.iAli[i]["name"]]: mi.iAli[i]["start"];927 mi.iAli[i]["start"] = mOverrides.count(mi.iAli[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.iAli[i]["name"]) : mi.iAli[i]["start"]; 915 928 } 916 929 for(long i=0; i<modelData->nAliasBoolean; i++) 917 930 { 918 mi.bAli[i]["start"] = mOverrides.count(mi.bAli[i]["name"]) ? mOverrides[mi.bAli[i]["name"]]: mi.bAli[i]["start"];931 mi.bAli[i]["start"] = mOverrides.count(mi.bAli[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.bAli[i]["name"]) : mi.bAli[i]["start"]; 919 932 } 920 933 for(long i=0; i<modelData->nAliasString; i++) 921 934 { 922 mi.sAli[i]["start"] = mOverrides.count(mi.sAli[i]["name"]) ? mOverrides[mi.sAli[i]["name"]] : mi.sAli[i]["start"]; 923 } 935 mi.sAli[i]["start"] = mOverrides.count(mi.sAli[i]["name"]) ? getOverrideValue(mOverrides, mOverridesUses, mi.sAli[i]["name"]) : mi.sAli[i]["start"]; 936 } 937 938 // give a warning if an override is not used #3204 939 for (std::map<std::string,int>::iterator it = mOverridesUses.begin(); it != mOverridesUses.end(); ++it) 940 if (it->second == OMC_OVERRIDE_UNUSED) 941 { 942 warningStreamPrint(LOG_STDOUT, 0, "simulation_input_xml.cpp: override variable name not found in model: %s\n", it->first.c_str()); 943 } 944 924 945 infoStreamPrint(LOG_SOLVER, 0, "override done!"); 925 946 }
Note: See TracChangeset
for help on using the changeset viewer.