You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Star-CCM Java宏通过SSH在集群运行CFD仿真?

Star-CCM+ Java宏修改:SSH集群自动运行仿真

你需要替换本地直接运行仿真的代码逻辑,改成通过SSH连接集群并提交Star-CCM+任务的逻辑。以下是具体步骤和代码示例:

核心思路

本地Java宏不再调用simulation_0.getSimulationIterator().runAutomation();执行本地仿真,转而通过SSH客户端连接集群,在集群上启动Star-CCM+实例(或提交到集群调度器)运行你的仿真文件。

具体修改步骤

1. 引入SSH客户端库(JSch)

Java本身没有内置SSH功能,需要用第三方库JSch实现SSH连接:

  • 若用Maven管理依赖,在pom.xml中添加:
<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
</dependency>
  • 手动引入:下载JSch的jar包,放到宏项目的类路径中。

2. 替换本地运行代码为SSH执行逻辑

把原来的simulation_0.getSimulationIterator().runAutomation();替换为以下SSH执行代码:

示例代码:SSH连接集群并运行Star-CCM+

import com.jcraft.jsch.*;

// 封装SSH执行逻辑
public class ClusterSimRunner {
    public static void submitClusterSim() throws Exception {
        // 集群配置信息
        String clusterHost = "你的集群IP/主机名";
        String clusterUser = "你的集群用户名";
        String clusterPass = "你的集群密码"; // 推荐用密钥认证替代密码,见下方说明
        String simFilePath = "/集群上的仿真文件路径/your_simulation.sim";
        
        // 集群执行命令:直接启动Star-CCM+批处理模式
        // 如果集群用Slurm/PBS等调度器,换成提交脚本的命令(如sbatch your_job.sh)
        String execCommand = String.format(
            "starccm+ -batch %s -batch-report",
            simFilePath
        );

        // 建立SSH连接
        JSch jsch = new JSch();
        Session sshSession = jsch.getSession(clusterUser, clusterHost, 22);
        sshSession.setPassword(clusterPass);
        // 跳过主机密钥检查(生产环境建议添加已知主机,避免安全风险)
        sshSession.setConfig("StrictHostKeyChecking", "no");
        sshSession.connect();

        // 执行集群命令
        ChannelExec execChannel = (ChannelExec) sshSession.openChannel("exec");
        execChannel.setCommand(execCommand);
        execChannel.connect();

        // 等待任务执行完成(可选,根据需求调整)
        while (!execChannel.isClosed()) {
            Thread.sleep(1000);
        }

        // 关闭连接资源
        execChannel.disconnect();
        sshSession.disconnect();
    }
}

在你的宏中调用这个方法

// 注释掉原来的本地运行代码
// simulation_0.getSimulationIterator().runAutomation();

// 调用集群运行逻辑
try {
    ClusterSimRunner.submitClusterSim();
} catch (Exception e) {
    e.printStackTrace();
}

3. 补充优化建议

  • 密钥认证替代密码:硬编码密码不安全,改用SSH密钥认证:
    // 替换setPassword的代码,添加密钥文件路径
    jsch.addIdentity("/本地私钥文件路径/id_rsa");
    
  • 仿真文件同步:如果需要把本地的.sim文件传到集群,可在SSH连接后添加SFTP上传逻辑:
    ChannelSftp sftpChannel = (ChannelSftp) sshSession.openChannel("sftp");
    sftpChannel.connect();
    sftpChannel.put("/本地仿真文件路径/your_simulation.sim", "/集群目标路径/your_simulation.sim");
    sftpChannel.disconnect();
    
  • 集群调度器适配:如果集群用Slurm/PBS,需要提前编写调度脚本(比如starccm_job.sh),然后把execCommand改成sbatch starccm_job.sh(Slurm示例)。调度脚本示例:
    #!/bin/bash
    #SBATCH --job-name=starccm_sim
    #SBATCH --nodes=2
    #SBATCH --ntasks-per-node=16
    #SBATCH --time=24:00:00
    
    starccm+ -batch /path/to/your_simulation.sim -batch-report -np 32
    

内容的提问来源于stack exchange,提问作者Carlos Eduardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:02:40