SciCompMod / memilio

Modular spatio-temporal models for epidemic and pandemic simulations
https://scicompmod.github.io/memilio/
Apache License 2.0
50 stars 15 forks source link

Change directory structure #66

Closed joergbrech closed 2 years ago

joergbrech commented 2 years ago

Have a stricter distinction between utility code and model-specific code.

Suggestion:

For this, we would have to change the CMake config, s.t. epidemiology_io is not an optional project, but an optional feature of epidemiology.

Each model should be in its own namespace.

dabele commented 2 years ago

I think the name for the "framework" directory needs to be project specific, because it's part of include files. so it probably should be "memilio" or something.

analogously, the namespace epi should probably be changed. ideas: mem, lio, mlo, mlio. IMHO, namespaces should be short (3-4 characters), but memorable so noone is tempted to do using namespace ... which only leads to problems in the long term. This is related to #5, but should probably be done here when we change the model namespaces.

complete structure:

- cpp
    - memilio # used to be epidemiology
        - util # generic programming utility
        - math # math utility (integrators, linalg,...)
        - io # used to be in epidemiology_io, could also be in util but I think it deserves its own
        - epidemiology # non-model-specific utility for epidemiological models (abm or compartment)
        - migration # non-model-specific spatial resolution, same as before, maybe there is a better name
    - models
        - secir
        - abm
        - ...
    - examples # mostly for using the framework, not for using the models
    - sims
    - tests

tagging @mknaranja

joergbrech commented 2 years ago

@dabele, did you intentionally close this?

As for a namespace, I like lio or mlio. mem sounds too much like memory.

mknaranja commented 2 years ago

Thanks @dabele for this well described new ordering. I would only change two things:

Even if it's OK from the programming side, I'd like to have the mobility/migration as visible as the models. I'd proposed to move it to the same level as models.. I don't know if this is the best choice but it should be more visible. Another proposal would be to call the models 'local_models'. Anyway, I propose to rename 'migration' 'mobility' now.

Last small thing, I'd like 'sims' to become 'simulations'.

dabele commented 2 years ago

mobility is a part of memilio, I think it would look weird in a directory on its own, that it's somehow not a part of the core framework. That could actually decrease visibility if people look for it in the wrong place. this would also be reflected in the include paths (admittedly, not the most important issue). I think the way to increase visibility for the mobility stuff to give it a lot of room in the (currently non-existant) documentation.

mknaranja commented 2 years ago

OK. For the namespace I'd probably go for mepi or mio, don't have any better idea.