A model-driven approach to enable the simulation of complex systems on distributed architectures