How to use COMSOL, MATLAB and COMSOL livelink with MATLAB on Server

[TOC]

This note is to show the way of using MATLAB, COMSOL,COMSOL Livelink With MATLAB on our server (ubuntu). We hope that we can run them with bash code in background and after we logout or exit the server the simulations will continue. We also need to know the simulation progress from a log file. These needs can all be satisfied only if you write proper bash code.

## Run COMSOL on server

If you want to run COMSOL on server, you can use the command of the following form

above command shows the smallest example and the “< >” isn’t included in the actual terminal command. The form nohup <command> & is used to execute the command in the background even if we logout from the server. To avoid confusion, I give a more specific example, If we want to simulate the file “test.mph”, then the command should be as follows

In above example we use 30 cores (set with “-np 30”)to simulate our mph file. If we have many mph files to simulate, we can write a bash code to arrange our simulation works. We create a file with the name “comsolscript.sh” with the following content

Above code will simulate the file “test1.mph”, “test2.mph”, “test3.mph” respectively. The “&&” at the end of the line will let the server to execute the next command only when this command complete. if you use “&” then all the mission will simultaneously execute. You need upload the “comsolscript.sh” file to the correct folder and make it executable

then in the corresponding folder type

The simulation will begin and you can see the progress from the log file by typing vi test.log.

If you write the bash code on windows then upload the file to the server, when you try to run the bash file there may be error: “/bin/bash^M:bad interpreter:No such file or directory“, this is because of the difference of coding in Unix and Windows. You can use the following command in the corresponding folder to fix it

if you use vi on the server to create the bash file, this error can also be avoided.

## Run MATLAB on server

Before using the MATLAB on server, you need make sure that the matlab is in the system enviroment path. The method of adding the MATLAB path to the system enviroemnt can be found from my another note Ubuntu安装COMSOL,MATLAB以及FDTD Solutions.

If you want to run matlab without displaying the desktop, you can type

If you want to run a file in the background, you can type the following command

above code run the “test.m” in the background and save the screen display into the file “progress.txt”, so we can know the progress from the file. “-nojvm” is used to hide the plot progress if you don’t want to see the plot during the simulation. When the simulation meets some problems, there will be a “nohup.out” file to show the error information.

A better choice is to use a bash file “matlabscript.sh” to run the corresponding MATLAB file.

Above bash file doesn’t use the “nohup command &” and it will not run in the background. If you want to run in the background, you can type

The “exit” is important and if not after the simulation the MATLAB will be still alive in the background, then you need kill the MATLAB by typing kill <pid of MATLAB progress>.

The usage of COMSOL live link with MATLAB can be found on the installation folder of COMSOL, the detailed usage is in the file “LiveLinkForMATLABUsersGuide.pdf”.

If you can use the graphics window, then you can run a MATLAB file “test.m” to run a COMSOL file by typing

You can also run the script in batch without the MATLAB desktop and the MATLAB splash screen. Enter this command:

However, if you want to run the script in the background, you can not just simply add a “nohup+command+&”, I don’t know the reason. From the “LiveLinkForMATLABUsersGuide.pdf”, we can see the following words

To connect COMSOL with a MATLAB terminal requires that xterm is installed on the machine. If this is not the case as it might be for a computation COMSOL server, a workaround is to connect manually MATLAB to a COMSOL server with the function mphstart.

After trying for a while I finally know how to run the COMSOL livelink with MATLAB in the background on server. We need to create four files named “matlab_exe.m”,”test.m”,”comsolscript.sh”,”test.mph”.

• “test.mph” is the COMSOL file you want to simulate.
• “test.m” is the file to run “test.mph” from MATLAB.
• “matlab_exe.m” is used to link the MATLAB with COMSOL mphserver and run the “test.m” file and finally exit MATLAB.
• “comsolscript.sh” is the bash code to open the COMSOL mphserver and run the file “matlab_exe.m”
the following is the detailed code.

For “matlab_exe.m”

For “comsolscript.sh”

For “test.m”