====== Views ====== A dynamic and flexible way to extend a model, views are a powerful tool in the whatIf? suite. Models, especially once populated with data, are fairly rigid. Modifying any working model requires changing the design and reloading data. Views provide a mechanism for extending the model either through preprocessed input data, additional analysis of output data and even implementing feedback loops in the model's logic. Part of the design process is deciding what should be part of the rigid structure of the model and what should be dynamic and implemented by views. Anything that needs to be flexible is usually implemented in views. ==== Example 1: Extend a model by changing input data (create view) ==== Suppose you had a model which had a control variable specifying exogenously the market share for new vehicles over time. There are many ways to create that data and one must have been used to load the original model. If you found a new algorithm for determining that market share based on something inside the model, something totally external or some mix of these, then a view could be written to implement this algorithm and feed it into the model as the new market share. Essentially you have extended the model's scope but have taken on the work of actually modifying the model. Of course the model can be changed later to encapsulate the new logic in the model itself but it doesn't need to. ==== Example 2: Implementing feedback (feedback view) ==== Suppose you have a model with a coefficient in it which is NOT measured, for example an efficiency coefficient for a widget, and you need to estimate that coefficient. In historic time you have a good estimate of the number of widgets and the amount of energy used by the widgets (observedEnergyUse). You need to find an value for your coefficient that when multiplied by the number of widgets results in an energy use amount that tracks as close as possible to the observedEnergyUse. A feed back view can be used to run the model check the difference in energy use, modify the coefficient appropriately, run the model again, and continue this loop until some acceptable level of convergence is achieved. The result is a calibrated value for the coefficient in historic time that can be a good starting value for your simulation. This is used extensively in the calibration process ==== Example 3: Post Processing (display view) ==== Suppose you have an energy model that calculates fuel use and GHG emissions. Then you get some coefficients for CAC emissions and you want to do a quick calculation to get the CAC emissions. A display view can be written to take the results of the model and the new coefficients multiply them out and display the results. ===== Types of views ===== In the whatIf? platform views the way the user interacts dynamically with the model. Views are also used to import and export data, to mediate interaction with the model, do analysis and display it to the user, do iterative runs of the model to converge on parameter settings and every combination of these. ==== Display Views ==== Display views are read only views into the model which do not change any model data but instead pull data from the model. These can be considered as reporting view. Here are some uses of display views: * Overlaying data from various scenarios to enable easy comparisons * Manipulate and display model output data into coherent graphs and tables. Graphs, tables, maps and excel are the available display tools * Provides the ability to expand the functionality of the original model through manipulating and further processing the data * Export the results for use outside the mode ==== Create Views ==== * Importing data from various external sources * Interacting with the user to fill variables for scenario creation ==== Feedback views ==== * Providing the structure to run the model multiple times where each subsequent run uses updated variable settings. * Used primarily for adjusting variables to achieve convergence for calibration