Meep es un Software libre de simulación desarrollado por el MIT que utiliza el Método de Diferencias Finitas en el Dominio del Tiempo escrito en C++, el cual cuenta con una gran variedad de bondades que pueden ser utilizadas por profesionales, científicos o experimentales para realizar simulaciones poderosas y con un grado de exactitud razonable.
Se puede utilizar Meep para hacer simulaciones tanto en 1d, 2d o 3d, cuenta con soporte para paralelización mediante MPI, se puede utilizar utilizando una gran variedad de lenguajes e incluso cuenta con un lenguaje de programación funcional “scheme” el cual hace que el usuario final no tenga que necesariamente ser programador o saber programar ya que es una abstracción de todas las funciones de la librería en forma sencilla e intuitiva.
También, tiene soporte para el formato HDF5 el cual es un estándar muy flexible y poderoso para manejar datasets en varias dimensiones, para información detallada de todo lo que Meep soporta esta su pagina, y para preguntas frecuentes esta el FAQ..
¿Y porque estoy hablando de Meep?
Básicamente he tenido la encomienda de mi asesor de doctorado y amigo el Dr. Jesús Manzanares de hacer simulación utilizando para esto y como herramienta el Meep por medio de C++.
¿Y porque desde C++ y no algún otro lenguaje de scripting?
Lo que se quiere lograr al final del día es tener simulaciones personalizadas lo mas posible, por este motivo se ha decidido que una de las lineas de investigación sera la de C++ para tener el mayor grado posible de flexibilidad y control sobre el código de la simulación.
¿Y porque Meep y no algun otro software de FDTD?
El grupo del Dr. Manzanares creemos que el Meep es uno de los mas poderosos software para simulación FDTD en el mercado, ya que aparte de ser libre y de código abierto nos ofrece la posibilidad de hacer paralelización para cálculos muy grandes.
¿Y por que publicar sobre Meep si este tiene su propia pagina?
Meep tiene su propia página la cual es excelente, desgraciadamente el usuario final de Meep esta contemplado para no tener que ser programador o entender de programación para poder utilizarlo lo que llevo a los creadores de Meep a dar gran soporte a los lenguajes funcionales (Scheme) que sirven de interfaz para hacer simulaciones y el cual abstrae mucha de la gran complejidad de la librería de C++ en sí, cabe mencionar que los creadores del Meep hicieron un extraordinario trabajo intentando hacer que Meep fuera lo suficientemente fácil y entendible para cualquier persona y utilizaron lo que el Dr. Manzanares llamaría “Bloques Lego” que en este caso es la perfecta analogía para el lenguaje funcional e ilustra la forma en que “literalmente” se estarían construyendo las simulaciones, es por esto que en la página del Meep el enfoque de utilizar C++ como interfaz para acceder a la librería esta pobremente documentado ya que la intención principal de los creadores no era precisamente el exponer C++ como interfaz principal para simulaciones por lo que toda la información que se publique en esta categoría sera un intento por documentar la interfaz de C++ y tener la información accesible para cualquier persona en español.
¿Que se necesita para utilizar Meep?
Meep es un lenguaje desarrollado para plataformas *nix y se recomienda especialmente instalarlo desde una plataforma Linux y mas específicamente utilizando Debian o Ubuntu ya que se cuenta con un paquete precompilado en los repositorios que hace que el disponer de este Software sea una cuestión muy sencilla, una vez instalado no se necesita ser especialmente programador o algo por el estilo ya que se cuenta con la interfaz funcional con la cual se pueden hacer una gran variedad de simulaciones, Ahh y por supuesto se necesita una gran cantidad de ganas de internarse en esta increíble aventura.
Con esto, doy inicio a una serie de posts en donde trataré de documentar de la manera más clara posible la utilización de esta invaluable herramienta utilizando como lenguaje e interfaz principal C++. Espero que lo disfrutes tanto como yo 🙂