Full text
Supplementary Material We provide the data presented in C. Henkel et al. “Condensation on Soft Substrates: A Mesoscopic Perspective”. In: Mater. Adv. (2025). doi:10.1039/D5MA00936G. accepted along with the source codes used to generate the data and figures. 1
1. Data Sets The original data sets presented in the manuscript are stored in the data/ directory. It includes: Time Simulations |data/time_simulation/ Directory Description Figures condensation_elastic/ Time simulation of a nucleus on a substrate of intermediate softness, distorted from equilibrium such that it starts growing due to condensation Fig. 7 condensation_liquid/ Time simulation of a nucleus on a liquid-like substrate, distorted from equilibrium such that it starts growing due to condensation Fig. 7 condensation_rigid/ Time simulation of a nucleus on a rigid substrate, distorted from equilibrium such that it starts growing due to condensation Fig. 7 evaporation_elastic/ Time simulation of a nucleus on a substrate of intermediate softness, distorted from equilibrium such that it starts shrinking due to evaporation Fig. 7 evaporation_liquid/ Time simulation of a nucleus on a liquid-like substrate, distorted from equilibrium such that it starts shrinking due to evaporation Fig. 7 evaporation_rigid/ Time simulation of a nucleus on a rigid substrate, distorted from equilibrium such that it starts shrinking due to evaporation Fig. 7 2
Continuations |data/continuation/ Directory Description Figure cont_p_liquid Continuation in the supersaturation of a steady nucleus state on a liquid-like substrate Fig. 8, Fig. 9, Fig. 10 cont_p_rigid Continuation in the supersaturation of a steady nucleus state on a rigid substrate Fig. 8, Fig. 9 cont_softness Continuation in the substrate softness of a steady nucleus state at fixed supersaturation Fig. 11 The continuation and time simulation data were all produced using the open source C++ library Oomph-lib. Each subdirectory contains: File/Directory Description dat/ Directory where the solutions, i.e., the coordinate rand the profiles hand ξas well as their derivatives are stored in numbered .dat files parameters.ini File that stores all (constant) physical parameters trace.dat File that stores some traced parameters that may have change during a time simulation branch.dat File that stores some traced parameters that may have change during the continuation Experiment |data/experiment/ From the experiments only the file rho_lec.txt is provided which holds the measured drop densities for different elasto-capillary length as plotted in Fig. 1(b). 2. Plotting Scripts All figures presented in the manuscript are found in the directory figures/. The figures representing the above mentioned data can be reproduced using the provided Python scripts, which are named according to the figure they will produce. The file FuncsAndStyles.py includes some customized routines and settings which may require the installation of additional Python packages. Figures that are not provided a Python script were created via Inkscape. 3
3. Driver Codes In order to run simulations, you need a working Oomph-lib-installation. You may install it yourself, however, we provide a container with multiple installations that we used ourselves. Therefore, only apptainer needs to be installed. 3.1Using Apptainer We provide multiple oomph-lib installations within a container that can be used with apptainer. If you have your own Oomph-lib installation, you can skip this part. However, you have to adapt the installation folder in tools/global.mk. If you use our provided container, you don’t have to change anything. • Follow the instructions on installing apptainer on your operating system on https://apptainer.org/docs/admin/main/installation.html e.g., on Ubuntu with: sudo add-apt-repository -y ppa:apptainer/ppa sudo apt update sudo apt install -y apptainer • Navigate to the folder with the container and start it in a terminal by running # make the container executable with chmod +x oomphlib-container.sif # start it with ./oomphlib-container.sif The apptainer mounts your home directory. As long as you do not want to write in the root directory /, this is sufficient. However, if you want to write in the root-directory, you can create an overlay-folder that stores all changes: #create an overlay folder mkdir -p overlayFolder # start the container apptainer shell -fakeroot -overlay overlayFolder oomphlib-container.sif However, this is optional and not required for this implementation. • The oomph-lib container has three installations (in its root directory) 1. Normal installation (single core) in /oomph-lib-installation/oomph-libno-mpi/ 2. Parallel installation in /oomph-lib-installation/oomph-lib-with-mpi/ 3. Debug installation in /oomph-lib-installation/oomph-lib-extra-slow/ Which version is used can be set later in the makefile. 4
• For completeness, we also provide the definition-file oomphlib-container.def used to create the container, together with the necessary bash scripts to install oomph-lib automatically. To build it just execute apptainer build oomphlib-container.sif oomphlib-container.def # Then, you can enter the apptainer by ./oomphlib-container.sif 3.2Running Simulations To perform a simulation navigate to code/drivers/FullCurve_radial_nonconserved/ and follow these steps: 1. Open main.cpp and change the parameters to your liking. If new parameters are introduced be sure to add them in as_element.h // line 11 ... namespace Const { ... } 2. There are three predefined runs that can be selected in line 82 by adjusting // select which run is to be performed (see below) // 1= quasi-static dynamics // 2= continuation in the supersaturation // 3= continuation in the softness int run_number = ... 3. Other initial conditions can be changed by calling them in main.cpp. Specific initial functions are implemented in as_problem.h. After having made changes, don’t forget to recompile before running the simulation. make clean make new 4. In order to run simulations, you might execute the following instructions # Start the apptainer ./oomphlib-container.sif # run the recompiled version make run Results are stored in out/, unless you have changed the output directory. 5
5. Note, that solutions can be stored as restart files, e.g., to skip the relaxation dynamics to find a steady state as done in line 163 and following in main.cpp char filename[100]; std::ofstream restart_file; sprintf(filename,"restart/my_%g_kappa_%g.dat", my, kappa); restart_file.open(filename); problem.dump_it(restart_file); restart_file.close(); Replace my_%g_kappa_%g.dat by any name you like. A simulation can be started from a restart file, say my_restart_file.dat stored in the restart/ directory, simply by calling ./main restart/my_restart_file.dat 6. A basic plotting routine is provided in SimplePlot.py which can be used to loop over the .dat files stored in out/ and plot the profiles. 6