diff --git a/dev_notes/todo.txt b/dev_notes/todo.txt index ba90d49f..c55bdafb 100644 --- a/dev_notes/todo.txt +++ b/dev_notes/todo.txt @@ -4,16 +4,15 @@ Add forums on github page? (github Discussions) - Would like to be able to use in_flux in initial code (for e.g. setting initial steady states easily), but then we also need to be able to compute initial values for fluxes. With in_flux_connection it could be tricky to determine what initial fluxes must be computed (?). + Would like to be able to use in_flux in initial code (for e.g. setting initial steady states easily), but then we also need to be able to compute initial values for fluxes. With in_flux_connection it could be tricky to determine what initial fluxes must be computed (Not tricky, maybe, but a lot of work.. ?). Made it possible to add properties to solvers manually, but it could be error prone. Fix errors if they appear. Specific models - - Keep better track of what elevation different models want wind speed. Maybe convert between different elevations if necessary. Maybe factor out common phyto module for EasyChem and FjordChem. + Also for O2 (found a difficulty with that earlier, but maybe we could resolve it?) NIVAFjord! @@ -92,7 +91,7 @@ Alternatively, in the ODE codegen, directly make a subtraction of the flux (on condition of correct index). This is maybe the easiest, but is still a bit of work for this special case. - Actually in grid1d the connection aggregate is always unnecessary unless it is referenced. Would be better to remove it as a default and only generate it if it is referenced by in_flux(connection). + Actually in grid1d the connection aggregate is always unnecessary unless it is referenced. Would it be better to remove it as a default and only generate it if it is referenced in code by in_flux(connection)? .specific target: diff --git a/docs/existingmodels/existingmodels.md b/docs/existingmodels/existingmodels.md index 939efa2a..685ed925 100644 --- a/docs/existingmodels/existingmodels.md +++ b/docs/existingmodels/existingmodels.md @@ -16,7 +16,7 @@ The Mobius2 framework comes with several existing modules and models that can be If desired, the above models can be coupled together into a full catchment-to-coast system, or you can use them separately to study smaller sub-systems. The following model is stand-alone: -- [MAGIC](magic.html). This is a longer-timescale model for development of soil water chemistry (with a focus on acidity) in smaller catchment. +- [MAGIC](magic.html). This is a longer-timescale model for development of soil water chemistry (with a focus on acidity) in smaller catchments. In addition to these, Mobius2 comes with modules for other processes that are convenient to include into larger models, for instance - [Snow pack and melt](autogen/auxiliary.html#hbvsnow) diff --git a/docs/mobius2docs/guide_chapters/07_layered_lake.md b/docs/mobius2docs/guide_chapters/07_layered_lake.md index b4732887..edc693fc 100644 --- a/docs/mobius2docs/guide_chapters/07_layered_lake.md +++ b/docs/mobius2docs/guide_chapters/07_layered_lake.md @@ -72,8 +72,9 @@ var(layer.water.N2freq, [s-2]) { Note how we can reference a value below us along a `grid1d` connection by using a square bracket. The `@no_store` directive just tells Mobius2 to not store the time series of this variable. This can be useful for a couple of reasons - - It saves memory. This is especially important for variables in compartments that are distributed over large index sets. - - Too many variables can clutter up the user interface, and not all of them are interesting in themselves. + +- It saves memory. This is especially important for variables in compartments that are distributed over large index sets. +- Too many variables can clutter up the user interface, and not all of them are interesting in themselves. The mixing coefficient $$K$$ is (as in MyLake) given by diff --git a/example_notebooks/basic_julia.ipynb b/example_notebooks/basic_julia.ipynb index 870e0cb2..388420ba 100644 --- a/example_notebooks/basic_julia.ipynb +++ b/example_notebooks/basic_julia.ipynb @@ -19,19 +19,21 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "Main.mobius.Model_Data(Ptr{Nothing} @0x0000027352bf52b8, true)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" + "ename": "LoadError", + "evalue": "MethodError: no method matching setup_model(::String, ::String; store_transport_fluxes::Bool)\n\n\u001b[0mClosest candidates are:\n\u001b[0m setup_model(::String, ::String, \u001b[91m::Bool\u001b[39m, \u001b[91m::Bool\u001b[39m, \u001b[91m::Bool\u001b[39m)\u001b[91m got unsupported keyword argument \"store_transport_fluxes\"\u001b[39m\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain.mobius\u001b[39m \u001b[90mC:\\Data\\Mobius2\\mobius_jl\\\u001b[39m\u001b[90m\u001b[4mmobius.jl:106\u001b[24m\u001b[39m\n\u001b[0m setup_model(::String, ::String, \u001b[91m::Bool\u001b[39m, \u001b[91m::Bool\u001b[39m)\u001b[91m got unsupported keyword argument \"store_transport_fluxes\"\u001b[39m\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain.mobius\u001b[39m \u001b[90mC:\\Data\\Mobius2\\mobius_jl\\\u001b[39m\u001b[90m\u001b[4mmobius.jl:106\u001b[24m\u001b[39m\n\u001b[0m setup_model(::String, ::String, \u001b[91m::Bool\u001b[39m)\u001b[91m got unsupported keyword argument \"store_transport_fluxes\"\u001b[39m\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain.mobius\u001b[39m \u001b[90mC:\\Data\\Mobius2\\mobius_jl\\\u001b[39m\u001b[90m\u001b[4mmobius.jl:106\u001b[24m\u001b[39m\n\u001b[0m ...\n", + "output_type": "error", + "traceback": [ + "MethodError: no method matching setup_model(::String, ::String; store_transport_fluxes::Bool)\n\n\u001b[0mClosest candidates are:\n\u001b[0m setup_model(::String, ::String, \u001b[91m::Bool\u001b[39m, \u001b[91m::Bool\u001b[39m, \u001b[91m::Bool\u001b[39m)\u001b[91m got unsupported keyword argument \"store_transport_fluxes\"\u001b[39m\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain.mobius\u001b[39m \u001b[90mC:\\Data\\Mobius2\\mobius_jl\\\u001b[39m\u001b[90m\u001b[4mmobius.jl:106\u001b[24m\u001b[39m\n\u001b[0m setup_model(::String, ::String, \u001b[91m::Bool\u001b[39m, \u001b[91m::Bool\u001b[39m)\u001b[91m got unsupported keyword argument \"store_transport_fluxes\"\u001b[39m\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain.mobius\u001b[39m \u001b[90mC:\\Data\\Mobius2\\mobius_jl\\\u001b[39m\u001b[90m\u001b[4mmobius.jl:106\u001b[24m\u001b[39m\n\u001b[0m setup_model(::String, ::String, \u001b[91m::Bool\u001b[39m)\u001b[91m got unsupported keyword argument \"store_transport_fluxes\"\u001b[39m\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain.mobius\u001b[39m \u001b[90mC:\\Data\\Mobius2\\mobius_jl\\\u001b[39m\u001b[90m\u001b[4mmobius.jl:106\u001b[24m\u001b[39m\n\u001b[0m ...\n", + "", + "Stacktrace:", + " [1] top-level scope", + " @ In[2]:2" + ] } ], "source": [ "# Create a model application from model and data files\n", - "app = setup_model(\"../models/simplyc_model.txt\", \"../models/data/simplyc_langtjern.dat\", true)" + "app = setup_model(\"../models/simplyc_model.txt\", \"../models/data/simplyc_langtjern.dat\", store_transport_fluxes=true)" ] }, { @@ -41,14 +43,16 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "\"2008-12-31\"" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" + "ename": "LoadError", + "evalue": "UndefVarError: `app` not defined", + "output_type": "error", + "traceback": [ + "UndefVarError: `app` not defined", + "", + "Stacktrace:", + " [1] top-level scope", + " @ In[3]:2" + ] } ], "source": [ @@ -66,14 +70,16 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "true" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" + "ename": "LoadError", + "evalue": "UndefVarError: `app` not defined", + "output_type": "error", + "traceback": [ + "UndefVarError: `app` not defined", + "", + "Stacktrace:", + " [1] top-level scope", + " @ In[4]:2" + ] } ], "source": [ @@ -88,104 +94,16 @@ "metadata": {}, "outputs": [ { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOy9e5wkVX33/zlV1de57O7s7uyVZbkJbtQFRVgxD0hEAxo0mmB+/kzyS/AWJJHnonkEX09eJl5IYnweL/hT8/KXiBd8UIkxiAmiPiBCQECJIiDC7rLLsjd2dnamZ/pWdc7vj1NVXV1V3X2qurq6uuf7/gNmZ7p7zpyqOp/zvR4mhABBEARBrFS0YQ+AIAiCIIYJCSFBEASxoiEhJAiCIFY0JIQEQRDEioaEkCAIgljRkBASBEEQKxoSQoIgCGJFY6i/9L777vva175WLpff+ta3nnLKKb6fPvPMM7fccsuePXuKxeIll1xyySWXJDpOgiAIghgIqhbhnXfeeemll5500knNZvO888579tlnfS/46U9/unv37tNPP31qauotb3nLJz/5yaSHShAEQRDJwxQ7y7zmNa+5+OKL3/ve9wJ405vetGPHjg984AOdXvyZz3zmy1/+8j333JPUKAmCIAhiQKhahD/84Q9f+cpXyq8vueSSu+++u9Mr6/X6vffee/bZZ3d6wQ9+8INvf/vb6kNsNpvqLyYGgRDCsqxhj2KlQw/C0BFCmKY57FGsdDjnnPNkP1MpRri4uLi0tLR+/Xr5z9nZ2aBrFMDjjz9+wQUXLC8vn3POOd/73vc6fdrXv/71e++995vf/Kb8J2Psuuuu27hxY6fXVyqVyclJlXESA8I0zWazWSqVhj2QFQ09CEPHsqx6vV4ul4c9kBVNo9EAkM/nFV9fLBY1rYfJpySE+XyeMeZuhRqNRqFQCL7sjDPOeOqpp44cOfKe97zn7W9/+0033RT6aatWrdq8efNLX/pS+c9cLrd+/frQD+z+64jU0HVd0zS6CsOFHoShI/0idBWGC2MMUYRQvr47SkJYKBRmZmYOHDggk0UPHDiwefPm4Mt0XV+zZs2aNWv+6q/+ateuXUKI0BGsWrXqnHPO+ZM/+ROVXy0/Vtd1xRcTg0AIwTmnqzBc6EHIAnQVho6c/2SvgmqM8PWvf/3NN98MgHP+jW984/Wvfz0A0zRvv/32paUlAJVKxX3x/ffff/LJJ6voMEEQBEEMF9U6wmuvvfbCCy88cODA0aNHm83mH/zBHwCoVCqXXnrpY489dtZZZ73zne/cs2fP9u3bDxw48Oijj3byixIEQRBEplAVwtNPP/2xxx676667SqXSRRddJP2zU1NTDz30kPSXfuELX3jooYf279+/du3al770pVNTUwMcNUEQBEEkRITOMqtWrXrd617n/Y6u6y9+8Yvl17lcbteuXbt27UpydARBEAQxYKjXKEEQBLGiISEkCIIgVjQkhARBpMSPDomnFpR6OhJEmpAQEgSREl96kn//WRJCInNESJYZLnNzc1dfffXYdLx83vOe96EPfWjYoyCIVCENJLLJyAjhwYMH77nnno997GPDHkgCHDx48IYbbiAhJFYaQpAWEllkZIQQwPT09BVXXDHsUSTAr371qxtuuGHYoyAIgiAAihESBJEmauefEkSqkBASBJESJIJENiEhJAgiPUgLiQxCQkgQBEGsaEgICYJICSEoRkhkERJCgiAIYkUzSuUTI8SDDz54//3379+//81vfvPOnTuHPRyCyASCYoREJiEhHAh//ud/vmnTpu9973tnn302CSFBEESWIddoX3zrW9968skn3X/eeuutTzzxBIAf/OAHX/nKVzZv3jy8oRFEFiGLkMggJIR98cgjj3zwgx+UX8/Pz7/lLW8pFovDHRJBZBZSQSKbjLBr1OR44/esqpXew/XOs7TfPaVt6/DWt771zDPPnJubm5mZufHGGy+++OJt27alNh6CGDkoa5TIICMshIaG/75Tq5rp/cYXzjDfdzZu3HjppZd+6Utfuuaaaz7/+c//zd/8TXqjIQiCIJJghIUQwMs3+JUpfa666qp3vetdL3nJS06cOPGbv/mbwx4OQWQXOn2CyCYUI+yXiy66CMDVV1/99re/Xdf1YQ+HIAiCiAYJYb8wxq666qpHH330yiuvdL/5R3/0R6eddtqjjz56zTXXnHbaaffdd98QR0gQGUFQjJDIJKPtGs0ItVrt8ssv37Jli/udG264odlsuv+cmpoaxrgIgiCI3pAQ9sXhw4e/9a1vffSjH7311lu935+cnBzWkAgiy5BBSGQQco32xcLCwp49e2688cbzzz9/2GMhiKxDflEim5BF2BdnnHHG9ddfP+xREMTIQFJIZBCyCAmCIIgVDQkhQRApQVmjRDYhISQIgiBWNCSEBEGkBJ1HSGSTkUmW0XV99+7d55577rAHkgD1ep160BAEQWSEkRHCM888895777Usa9gD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", - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" + "ename": "LoadError", + "evalue": "UndefVarError: `app` not defined", + "output_type": "error", + "traceback": [ + "UndefVarError: `app` not defined", + "", + "Stacktrace:", + " [1] top-level scope", + " @ In[5]:2" + ] } ], "source": [ @@ -207,108 +125,16 @@ "metadata": {}, "outputs": [ { - "data": { - "image/png": "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VK9RekDcULJMKyAhbDO0viP6inC7T1Cv0QpoxmgFJITth4Y10W/QbF43dOlagaF4XD6ff/jhh1955ZWlS5eeddZZmlZS0EcffXTr1q2nnHLK2rVrnRcnJibuvvtuzvkFF1wwMjLS5LPuIcjLQfQVpTpCSpapF2ou03RULcLVq1f/7d/+7X333fepT33qTW96UyaTka9/8YtffP/73//oo49eeumlX/3qV+WL+/btO+WUU2699dbbb7/9xBNP3L17d0vOvVcgLST6jVCdZQg3FCNsBaoW4a9+9atjjz0WQC6Xe81rXvPjH//48ssvP3jw4Fe+8pXNmzevXLly8+bNZ5555vr164eGhr7+9a+vXbv2jjvuAPCnf/qn11133b/+67+28Et0M+ToIPoQxcncjhHSE+KCZoxWoGoRShUEkEgk5syZk8/nAdxzzz2rVq1auXIlgFNOOWXBggX3338/gLvuuus973mPPP4973nPz372s6afdy9BzznRPzjapu4aJdyQELYCVYvQ4Re/+MUrr7xy6aWXAti9e/eSJUucXy1ZskR6Qd2vOy/6MjY29tJLL33jG9+QPzLGPvCBD6TT6WrHFwqFQqGndi2yOCwLhYLV7hNRolAoCCHcEWIiYrr9EbAsAOBCCKDmFzFNADAts3O+Mee8vbfANMF57UvXw1iWVSgUDENVvAzDYIzVOCbUGWzatOnKK6/893//97lz58oTcs+JhmGYpul5Xdd1+aIvmUxmz549Tz75pPwxHo9fcsklyWSy2vGWZVlWd2iGIkJoXMCyuqOhvGVZQogeuwXdRbc/ApwzQONCcF572FsWA7SO+sac8/beAt5VM0YrsIooHq/rejOFcMuWLW9/+9u//vWvX3DBBfKVRYsW7d+/3zlg3759ixcv9rzuvOjL0qVLlyxZ8qUvfUnxHAqFQoBMdiO6bmk6Sya7w8bSNE0IkUgk2n0i/Uu3PwKxGAcsxjQwUfOLxOICMI1YvHMeEM65ELXPvHXoOgfjyWS8XSfQdqSh1dxboDq8nn/++QsuuOArX/nKu9/9bufFM888c9OmTQcPHgSwa9eubdu2velNbwJw9tlnb9y4UR6zcePGs846q4ln3GNQgJDoK+R455Q1Wi9OjHDHlLjgV1WdbUQoVC3C888/P5lMPvjggw8++CCACy+88B3veMeKFSve9773XXTR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", - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "ename": "LoadError", + "evalue": "UndefVarError: `flow` not defined", + "output_type": "error", + "traceback": [ + "UndefVarError: `flow` not defined", + "", + "Stacktrace:", + " [1] top-level scope", + " @ In[6]:2" + ] } ], "source": [ @@ -331,7 +157,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.4", "language": "julia", "name": "julia-1.10" }, @@ -339,7 +165,7 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.4" } }, "nbformat": 4, diff --git a/example_notebooks/basic_python.ipynb b/example_notebooks/basic_python.ipynb index c686604f..aea1c5c8 100644 --- a/example_notebooks/basic_python.ipynb +++ b/example_notebooks/basic_python.ipynb @@ -36,7 +36,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -249,6 +249,14 @@ "app.run()\n", "app.var('Reach flow flux')['Coull'].plot(figsize=(10, 5), legend=True)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a9a5de3-9040-4c9c-bee7-e51c9b921a9e", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/mobipy/__init__.py b/mobipy/__init__.py index be9296c9..1c7a231a 100644 --- a/mobipy/__init__.py +++ b/mobipy/__init__.py @@ -68,6 +68,13 @@ class Mobius_Entity_Metadata(ctypes.Structure) : ("min", Parameter_Value), ("max", Parameter_Value) ] + +class Mobius_Base_Config(ctypes.Structure) : + _fields_ = [ + ("store_transport_fluxes", ctypes.c_bool), + ("store_all_series", ctypes.c_bool), + ("developer_mode", ctypes.c_bool), + ] def mobius2_path() : #NOTE: We have to add a trailing slash to the path for Mobius2 to understand it. @@ -106,7 +113,7 @@ def load_dll() : dll.mobius_encountered_log.argtypes = [ctypes.c_char_p, ctypes.c_int64] dll.mobius_encountered_log.restype = ctypes.c_int64 - dll.mobius_build_from_model_and_data_file.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_bool, ctypes.c_bool] + dll.mobius_build_from_model_and_data_file.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.POINTER(Mobius_Base_Config)] dll.mobius_build_from_model_and_data_file.restype = ctypes.c_void_p dll.mobius_delete_application.argtypes = [ctypes.c_void_p] @@ -391,9 +398,20 @@ def __exit__(self, type, value, tb) : self.__del__() @classmethod - def build_from_model_and_data_file(cls, model_file, data_file, store_all_series=False, dev_mode=False) : + def build_from_model_and_data_file(cls, model_file, data_file, + store_all_series=False, dev_mode=False, store_transport_fluxes=False + ) : + base_path = mobius2_path() - data_ptr = dll.mobius_build_from_model_and_data_file(_c_str(model_file), _c_str(data_file), _c_str(base_path), store_all_series, dev_mode) + + # TODO: We could use the args as dict thing here to make this more dynamic. + config = Mobius_Base_Config() + config.store_all_series = store_all_series + config.dev_mode = dev_mode + config.store_transport_fluxes = store_transport_fluxes + + cfgptr = ctypes.POINTER(Mobius_Base_Config)(config) + data_ptr = dll.mobius_build_from_model_and_data_file(_c_str(model_file), _c_str(data_file), _c_str(base_path), cfgptr) _check_for_errors() return cls(data_ptr, True) diff --git a/mobius_jl/mobius.jl b/mobius_jl/mobius.jl index 7fb758cb..1bd9f479 100644 --- a/mobius_jl/mobius.jl +++ b/mobius_jl/mobius.jl @@ -66,6 +66,12 @@ struct Entity_Ref entity_id::Entity_Id end +struct Mobius_Base_Config + store_transport_fluxes::Cint + store_all_series::Cint + developer_mode::Cint +end + invalid_entity_id = Entity_Id(-1, -1) invalid_var = Var_Id(-1, -1) no_index = Mobius_Index_Value(C_NULL, 0) @@ -97,11 +103,15 @@ function check_error() end end -function setup_model(model_file::String, data_file::String, store_series::Bool = false, dev_mode::Bool = false)::Model_Data +function setup_model(model_file::String, data_file::String, ; store_transport_fluxes::Bool = false, store_all_series::Bool = false, dev_mode::Bool = false)::Model_Data #mobius_path = string(dirname(dirname(Base.source_path())), "\\") # Doesn't work in IJulia mobius_path = string(dirname(dirname(@__FILE__)), "\\") - result = ccall(setup_model_h, Ptr{Cvoid}, (Cstring, Cstring, Cstring, Cint, Cint), - model_file, data_file, mobius_path, store_series, dev_mode) + + cfg = Mobius_Base_Config(store_transport_fluxes, store_all_series, dev_mode) + cfgptr = Ref(cfg) + + result = ccall(setup_model_h, Ptr{Cvoid}, (Cstring, Cstring, Cstring, Ptr{Mobius_Base_Config}), + model_file, data_file, mobius_path, cfgptr) check_error() return Model_Data(result, true) end diff --git a/models/modules/airsea_fpv.txt b/models/modules/airsea_fpv.txt index eff74221..0aaf2a44 100644 --- a/models/modules/airsea_fpv.txt +++ b/models/modules/airsea_fpv.txt @@ -174,8 +174,6 @@ Authors: Francois Clayer, Magnus D. Norling /* - # TODO: Separate heat fluxes between FPV-surface (and FPV-air) ? - # TODO: Make the below work (and add the correct heat budget for the basin?) k_vis : property("Kinematic viscosity") @@ -202,25 +200,26 @@ Authors: Francois Clayer, Magnus D. Norling # TODO: Name the magic constants, and/or reference the formula - #T_front_final := air.temp->[K], - #need to iterate to updte T_front (what is the breaking condition?) - T_front := top_water.temp->[K], - T_air := air.temp->[K], - T_sky := (0.0552 * (T_air=>[]^(1.5))) => [K], - T_water := top_water.temp -> [K], # Why is it the same as T_front? - h_air := (2.8 + 3*air.wind=>[]) => [W, m-2, K-1], - h_sky := (1/(1/0.88+1/0.80-1)) * 5.67e-8[W, m-2, K-4] * (T_front+T_sky)*(T_front^2 + T_sky^2), - B_back := A_both + h_water, - C_back := h_water * T_water, + T_air := air.temp->[K], + T_sky := (0.0552 * (T_air=>[]^1.5)) => [K], + T_water := top_water.temp -> [K], + h_air := (2.8 + 3*air.wind=>[]) => [W, m-2, K-1], + B_back := A_both + h_water, + C_back := h_water * T_water, + + T_front := top_water.temp->[K] + 3[K], + eps := 0.001[K] + i:{ + h_sky := (1/(1/0.88+1/0.80-1)) * 5.67e-8[W, m-2, K-4] * (T_front+T_sky)*(T_front^2 + T_sky^2), B_front := A_both + h_air + h_sky, C_front := h_air*T_air + h_sky*T_sky, numer := B_front*B_back*2*A_both - (A_both^2)*(B_front - B_back), - T_cell := (B_front*B_back*(1- FPV_alb) * (1-FPV_eff)*air.g_rad + A_both*B_back*C_front + A_both*B_front*C_back) / numer -> [deg_c], - #A_both * h_water / (A_both + h_water) + A_both / (A_both + h_air + h_sky)*(h_air + h_sky*(Tc - T_sky)/(Tc - T_air)) - T_front_final := ((A_both =>[] * (T_cell->[K])=>[]) + C_front=>[]) / B_front=>[], + T_cell := (B_front*B_back*(1- FPV_alb)*(1-FPV_eff)*air.g_rad + A_both*(B_back*C_front + B_front*C_back)) / numer -> [deg_c], + T_front_update := ((A_both =>[] * (T_cell->[K])=>[]) + C_front=>[]) / B_front=>[K], - T_cell - + T_cell if abs(T_front - T_front_update) < eps, + {T_front <- T_front_update, iterate i} otherwise + } } var(fpv.T_s_back, [deg_c]) { diff --git a/models/modules/pet.txt b/models/modules/pet.txt index 4249d71d..eaefa1f5 100644 --- a/models/modules/pet.txt +++ b/models/modules/pet.txt @@ -87,7 +87,8 @@ Authors: Magnus D. Norling # Also, the energy balance should take snow melt into account. net_rad := net_sw + air.lwd - lwu, - u := max(0.5[m, s-1], air.wind), + w := air.wind * 0.75, # Convert from 10m to 2m altitude + u := max(0.5[m, s-1], w), # Modified psychrometric constant psy_corr := { psy if pt, diff --git a/src/c_abi.cpp b/src/c_abi.cpp index 6ad77c85..705a6ae8 100644 --- a/src/c_abi.cpp +++ b/src/c_abi.cpp @@ -79,12 +79,10 @@ mobius_encountered_log(char *msg_out, s64 buf_len) { } DLLEXPORT Model_Data * -mobius_build_from_model_and_data_file(char * model_file, char * data_file, char *base_path, bool store_series, bool dev_mode) { +mobius_build_from_model_and_data_file(char * model_file, char * data_file, char *base_path, Mobius_Base_Config *cfg) { - Mobius_Config config; + Mobius_Config config = *cfg; config.mobius_base_path = base_path; - config.store_all_series = store_series; - config.developer_mode = dev_mode; try { Mobius_Model *model = load_model(model_file, &config); diff --git a/src/c_abi.h b/src/c_abi.h index 996b8f81..66f4ff1d 100644 --- a/src/c_abi.h +++ b/src/c_abi.h @@ -62,7 +62,7 @@ DLLEXPORT s64 mobius_encountered_log(char *msg_out, s64 buf_len); DLLEXPORT Model_Data * -mobius_build_from_model_and_data_file(char * model_file, char * data_file, char *base_path, bool store_series, bool dev_mode); +mobius_build_from_model_and_data_file(char * model_file, char * data_file, char *base_path, Mobius_Base_Config *cfg); DLLEXPORT void mobius_delete_application(Model_Data *data); diff --git a/src/model_composition.cpp b/src/model_composition.cpp index 17903c4e..b4a13191 100644 --- a/src/model_composition.cpp +++ b/src/model_composition.cpp @@ -931,7 +931,7 @@ prelim_compose(Model_Application *app, std::vector &input_names) { sprintf(varname, "carried_flux(%s, %s)", var_name.data(), flux_name.data()); // It is just much cleaner in MobiView if this is off, but on the other hand we do want to know some of these fluxes quite often. Make a more granular way to specify which ones to store? - bool no_store = true; + bool no_store = !model->config.store_transport_fluxes; Var_Id gen_flux_id = register_state_variable(app, invalid_entity_id, false, varname, no_store); auto gen_flux = as(app->vars[gen_flux_id]); diff --git a/src/model_declaration.cpp b/src/model_declaration.cpp index a28661c0..d4015314 100644 --- a/src/model_declaration.cpp +++ b/src/model_declaration.cpp @@ -1466,12 +1466,14 @@ load_config(String_View file_name) { match_declaration(decl, {{Token_Type::quoted_string, Token_Type::boolean}}, false); config.developer_mode = single_arg(decl, 1)->val_bool; - - log_print(Log_Mode::dev, file_name, ": Configured to developer mode.\n"); } else if(item == "Just store all the series") { match_declaration(decl, {{Token_Type::quoted_string, Token_Type::boolean}}, false); config.store_all_series = single_arg(decl, 1)->val_bool; + } else if(item == "Store transport fluxes") { + match_declaration(decl, {{Token_Type::quoted_string, Token_Type::boolean}}, false); + + config.store_transport_fluxes = single_arg(decl, 1)->val_bool; } else { decl->source_loc.print_error_header(); fatal_error("Unknown config option \"", item, "\"."); @@ -1479,6 +1481,9 @@ load_config(String_View file_name) { delete decl; } + if(config.developer_mode) + log_print(Log_Mode::dev, file_name, ": Configured to developer mode.\n"); + return std::move(config); } diff --git a/src/model_declaration.h b/src/model_declaration.h index 2ff64f8a..120589b3 100644 --- a/src/model_declaration.h +++ b/src/model_declaration.h @@ -274,12 +274,20 @@ Solver_Function_Registration : Registration_Base { }; struct -Mobius_Config { - std::string mobius_base_path; +Mobius_Base_Config { + bool store_transport_fluxes = false; bool store_all_series = false; bool developer_mode = false; }; +struct +Mobius_Config : Mobius_Base_Config { + std::string mobius_base_path; + + Mobius_Config() = default; + Mobius_Config(const Mobius_Base_Config &c) : Mobius_Base_Config(c) {} +}; + struct Mobius_Model : Catalog {