diff --git a/Dockerfile b/Dockerfile index 47a5db2..259c648 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,18 +16,10 @@ RUN apt-get update \ ca-certificates \ curl \ gdebi-core \ - vim \ - wget \ - git \ openjdk-8-jdk \ - liblapack-dev \ - gfortran \ libgfortran4 \ - cmake \ python3-venv \ python3-pip \ - libblas-dev \ - ruby-full \ && rm -rf /var/lib/apt/lists/* @@ -42,130 +34,62 @@ RUN update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/jav WORKDIR $BUILD_DIR -ENV OPENSTUDIO_DOWNLOAD_FILENAME OpenStudio-3.6.1+bb9481519e-Ubuntu-20.04-x86_64.deb -ENV OPENSTUDIO_DOWNLOAD_URL https://github.com/NREL/OpenStudio/releases/download/v3.6.1/OpenStudio-3.6.1+bb9481519e-Ubuntu-20.04-x86_64.deb - -ENV ENERGYPLUS_VERSION 23.1.0 -ENV ENERGYPLUS_TAG v23.1.0 -ENV ENERGYPLUS_SHA 87ed9199d4 -ENV ENERGYPLUS_DIR /usr/local/EnergyPlus +ENV OPENSTUDIO_DOWNLOAD_URL https://github.com/NREL/OpenStudio/releases/download/v3.8.0/OpenStudio-3.8.0+f953b6fcaf-Ubuntu-20.04-x86_64.deb # mlep / external interface needs parts of EnergyPlus that are not included with OpenStudio # expandobjects, runenergyplus might be two examples, but the need to install EnergyPlus separately from OpenStudio # might be revaluated -ENV ENERGYPLUS_DOWNLOAD_BASE_URL https://github.com/NREL/EnergyPlus/releases/download/$ENERGYPLUS_TAG -ENV ENERGYPLUS_DOWNLOAD_FILENAME EnergyPlus-$ENERGYPLUS_VERSION-$ENERGYPLUS_SHA-Linux-Ubuntu20.04-x86_64.tar.gz -ENV ENERGYPLUS_DOWNLOAD_URL $ENERGYPLUS_DOWNLOAD_BASE_URL/$ENERGYPLUS_DOWNLOAD_FILENAME +ENV ENERGYPLUS_DIR /usr/local/EnergyPlus +ENV ENERGYPLUS_DOWNLOAD_URL https://github.com/NREL/EnergyPlus/releases/download/v24.1.0/EnergyPlus-24.1.0-9d7789a3ac-Linux-Ubuntu20.04-x86_64.tar.gz # We would rather use the self extracting tarball distribution of EnergyPlus, but there appears to # be a bug in the installation script so using the tar.gz manually here and making our own links -RUN curl -SLO $ENERGYPLUS_DOWNLOAD_URL \ +RUN curl -SL $ENERGYPLUS_DOWNLOAD_URL -o energyplus.tar.gz\ && mkdir $ENERGYPLUS_DIR \ - && tar -C $ENERGYPLUS_DIR/ --strip-components=1 -xzf $ENERGYPLUS_DOWNLOAD_FILENAME \ + && tar -C $ENERGYPLUS_DIR/ --strip-components=1 -xzf energyplus.tar.gz \ && ln -s $ENERGYPLUS_DIR/energyplus /usr/local/bin/ \ && ln -s $ENERGYPLUS_DIR/ExpandObjects /usr/local/bin/ \ && ln -s $ENERGYPLUS_DIR/runenergyplus /usr/local/bin/ \ - && rm $ENERGYPLUS_DOWNLOAD_FILENAME + && rm energyplus.tar.gz -RUN curl -SLO $OPENSTUDIO_DOWNLOAD_URL \ - && gdebi -n $OPENSTUDIO_DOWNLOAD_FILENAME \ - && rm -f $OPENSTUDIO_DOWNLOAD_FILENAME \ +RUN curl -SL $OPENSTUDIO_DOWNLOAD_URL -o openstudio.deb\ + && gdebi -n openstudio.deb \ + && rm -f openstudio.deb \ && cd /usr/local/openstudio* \ && rm -rf EnergyPlus \ && ln -s $ENERGYPLUS_DIR EnergyPlus # Install commands for Spawn ENV SPAWN_VERSION=0.3.0-69040695f9 -RUN wget https://spawn.s3.amazonaws.com/custom/Spawn-$SPAWN_VERSION-Linux.tar.gz \ - && tar -C /usr/local/ -xzf Spawn-$SPAWN_VERSION-Linux.tar.gz \ +RUN curl -SL https://spawn.s3.amazonaws.com/custom/Spawn-$SPAWN_VERSION-Linux.tar.gz -o spawn.tar.gz \ + && tar -C /usr/local/ -xzf spawn.tar.gz \ && ln -s /usr/local/Spawn-$SPAWN_VERSION-Linux/bin/spawn-$SPAWN_VERSION /usr/local/bin/ \ - && rm Spawn-$SPAWN_VERSION-Linux.tar.gz + && rm spawn.tar.gz ## MODELICA -ENV FMIL_TAG 2.4 -ENV FMIL_HOME $ROOT_DIR/fmil - -ENV SUNDIALS_HOME $ROOT_DIR -ENV SUNDIALS_TAG v4.1.0 - -ENV ASSIMULO_TAG Assimulo-3.2.9 - -ENV PYFMI_TAG PyFMI-2.9.5 - -ENV SUPERLU_HOME $ROOT_DIR/SuperLU_MT_3.1 - # Modelica requires libgfortran3 which is not in apt for 20.04 -RUN wget http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-6/gcc-6-base_6.4.0-17ubuntu1_amd64.deb \ - && wget http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-6/libgfortran3_6.4.0-17ubuntu1_amd64.deb \ +RUN curl -SLO http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-6/gcc-6-base_6.4.0-17ubuntu1_amd64.deb \ + && curl -SLO http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-6/libgfortran3_6.4.0-17ubuntu1_amd64.deb \ && dpkg -i gcc-6-base_6.4.0-17ubuntu1_amd64.deb \ && dpkg -i libgfortran3_6.4.0-17ubuntu1_amd64.deb \ && ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7 /usr/lib/x86_64-linux-gnu/libffi.so.6 \ && rm *.deb -# Build FMI Library (for PyFMI) -RUN git clone --branch $FMIL_TAG --depth 1 https://github.com/modelon-community/fmi-library.git \ - && mkdir $FMIL_HOME \ - && mkdir fmil_build \ - && cd fmil_build \ - && cmake -DFMILIB_INSTALL_PREFIX=$FMIL_HOME ../fmi-library \ - && make install \ - && cd .. && rm -rf fmi-library fmil_build - -# Build SuperLU (groan) -COPY build/make.inc $BUILD_DIR - -RUN cd $ROOT_DIR \ - && curl -SLO http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_mt_3.1.tar.gz \ - && tar -xzf superlu_mt_3.1.tar.gz \ - && cd SuperLU_MT_3.1 \ - && rm make.inc \ - && cp $BUILD_DIR/make.inc make.inc \ - && make lib - -ENV LD_LIBRARY_PATH $ROOT_DIR/lib:$SUPERLU_HOME/lib:$LD_LIBRARY_PATH - -# Build Sundials with SuperLU(for Assimulo) -RUN git clone --branch $SUNDIALS_TAG --depth 1 https://github.com/LLNL/sundials.git \ - && mkdir sundials_build \ - && cd sundials_build \ - && cmake ../sundials \ - -DPTHREAD_ENABLE=1 \ - -DBLAS_ENABLE=1 \ - -DLAPACK_LIBRARIES='-llapack -lblas' \ - -DLAPACK_ENABLE=1 \ - -DSUPERLUMT_ENABLE=1 \ - -DSUNDIALS_INDEX_SIZE=32 \ - -DSUPERLUMT_INCLUDE_DIR=$SUPERLU_HOME/SRC \ - -DSUPERLUMT_LIBRARY_DIR=$SUPERLU_HOME/lib \ - -DSUPERLUMT_LIBRARIES='-lblas' \ - && make \ - && make install \ - && cd .. && rm -rf sundials sundials_build - -# This is required for Assimulo to build correctly with setuptools 60+ -ENV SETUPTOOLS_USE_DISTUTILS stdlib - COPY requirements.txt $BUILD_DIR RUN pip install -r requirements.txt && \ rm requirements.txt # Install Assimulo for PyFMI -RUN git clone --branch $ASSIMULO_TAG --depth 1 https://github.com/modelon-community/Assimulo.git \ - && cd Assimulo \ - && python3 setup.py install \ - --sundials-home=$SUNDIALS_HOME \ - --blas-home=/usr/lib/x86_64-linux-gnu \ - --lapack-home=/usr/lib/x86_64-linux-gnu/lapack/ \ - --superlu-home=$SUPERLU_HOME \ - && cd .. && rm -rf Assimulo +RUN curl -SLO https://github.com/modelon-community/Assimulo/releases/download/Assimulo-3.4.3/Assimulo-3.4.3-cp38-cp38-linux_x86_64.whl \ + && pip install Assimulo-3.4.3-cp38-cp38-linux_x86_64.whl \ + && rm Assimulo-3.4.3-cp38-cp38-linux_x86_64.whl # Install PyFMI -RUN git clone --branch $PYFMI_TAG --depth 1 https://github.com/modelon-community/PyFMI.git \ - && cd PyFMI \ - && python3 setup.py install \ - && cd .. && rm -rf PyFMI +RUN curl -SLO https://github.com/modelon-community/PyFMI/releases/download/PyFMI-2.11.0/PyFMI-2.11.0-cp38-cp38-linux_x86_64.whl \ + && pip install PyFMI-2.11.0-cp38-cp38-linux_x86_64.whl \ + && rm PyFMI-2.11.0-cp38-cp38-linux_x86_64.whl -ENV PYTHONPATH=/usr/local/lib/python3.8/dist-packages/Assimulo-3.2.9-py3.8-linux-x86_64.egg:/usr/local/lib/python3.8/dist-packages/PyFMI-2.9.5-py3.8-linux-x86_64.egg +ENV PYTHONPATH=${PYTHONPATH}:${ENERGYPLUS_DIR} ENV SEPARATE_PROCESS_JVM /usr/lib/jvm/java-8-openjdk-amd64/ ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/ diff --git a/build/make.inc b/build/make.inc deleted file mode 100644 index 66cfc9a..0000000 --- a/build/make.inc +++ /dev/null @@ -1,80 +0,0 @@ -############################################################################ -# -# Program: SuperLU_MT -# -# Module: make.inc -# -# Purpose: Top-level Definitions -# -# Creation date: May 26, 2021 -# -# Modified: -# -# -############################################################################ -# -# The machine (platform) identifier to append to the library names -# -PLAT = _PTHREAD - -# The name of the libraries to be created/linked to -# -TMGLIB = libtmglib$(PLAT).a -SUPERLULIB = libsuperlu_mt$(PLAT).a -#BLASLIB = ../lib/libblas$(PLAT).a -MATHLIB = -lm -MPLIB = -lpthread - -# BLASDEF = -DUSE_VENDOR_BLAS -# BLASLIB = /Users/xsli/Dropbox/Codes/SuperLU/superlu_mt.git/CBLAS/libblas.a -BLASLIB = ../lib/libblas$(PLAT).a -LIBS = $(SUPERLULIB) ${BLASLIB} - -# -# The archiver and the flag(s) to use when building archive (library) -# If your system has no ranlib, set RANLIB = echo. -# -ARCH = /usr/bin/ar -ARCHFLAGS = cr -RANLIB = /usr/bin/ranlib - -############################################################################ -# -# Definitions used by CPP: -PREDEFS = -D__PTHREAD ## -DDEBUGlevel=0 -DPRNTlevel=0 -# -CC = gcc -fPIC -CFLAGS = $(PREDEFS) -g #-O3 -# Uncomment the following to use 64-bit integer -# CFLAGS += -D_LONGINT - -# -# There are a few files that should NOT be optimized, which appear in the -# end of SRC/Makefile, taking the flag $(NOOPTS) -# NOOPTS should be defined to explicitly turn off any optimization. -NOOPTS = -O0 - -BLASOPTS = - -############################################################################ - -FORTRAN = gfortran -FFLAGS = -O -# Uncomment the following to use 64-bit integer -# FFLAGS += -fdefault-integer-8 - -############################################################################ - -LOADER = $(CC) -LOADOPTS = -O #-pthread - -############################################################################ -# -# C preprocessor defs for compilation (-DNoChange, -DAdd_, or -DUpCase) -# -CDEFS = -DAdd_ - -# -# The directory in which Matlab is installed -# -MATLAB = /Applications/MATLAB_R2017a.app diff --git a/requirements.txt b/requirements.txt index 6760e9b..24ce15a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ numpy -Cython \ No newline at end of file