Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade to OpenStudio 3.8, Energyplus 24.1, and PyFMI 2.11.0 #2

Merged
merged 7 commits into from
May 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 21 additions & 97 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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/*


Expand All @@ -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/
80 changes: 0 additions & 80 deletions build/make.inc

This file was deleted.

1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
numpy
Cython
Loading