Comsol Multiphysics | Skills Pool
Comsol Multiphysics Set up coupled fluid-structure interaction for pump vibration analysis
Soljourner 9 スター 2025/11/07 COMSOL Multiphysics Integration
Comprehensive guide for setting up and automating coupled fluid-structure interaction (FSI) simulations using COMSOL Multiphysics, with a focus on pump vibration analysis and related multiphysics applications.
Overview
COMSOL Multiphysics is a leading commercial simulation platform for modeling and solving complex multiphysics problems. It provides:
Unified Environment : Single platform for multiple physics domains
Flexible Coupling : Built-in tools for coupling different physics
Equation-Based Modeling : Direct access to underlying PDEs
Java API : Programmatic control and automation
MATLAB LiveLink : Integration with MATLAB for pre/post-processing
Application Builder : Create custom simulation apps
COMSOL excels at coupled physics problems including:
Fluid-structure interaction (FSI)
Thermal-structural coupling
Electromagnetics with thermal effects
クイックインストール
Comsol Multiphysics npx skillvault add Soljourner/soljourner-claude-engineering-skills-skills-integrations-comsol-multiphysics-skill-md
スター 9
更新日 2025/11/07
職業
Acoustics-structure interaction
Electrochemistry with transport phenomena
COMSOL Architecture
Model Structure
Component : Independent geometry and physics
Study : Solution sequence with one or more steps
Physics Interfaces : Pre-configured PDE systems for specific phenomena
Multiphysics Couplings : Automatic or manual coupling between physics
Solver Configurations : Automatic or customized solver sequences
Solver Technology
COMSOL Solver : Direct and iterative solvers
Fully Coupled Approach : Simultaneous solution of all equations
Segregated Solver : Physics-based segregation for large models
Time-Stepping : Implicit methods for transient analysis
Mesh Adaptation : Automatic refinement based on solution
Licensing Requirements
Commercial Licensing COMSOL Multiphysics requires commercial licenses for all production use:
Academic Licensing
Classroom Kit: Limited to educational use
Research licenses: Available for academic institutions
Restrictions on commercial applications
May have feature or model size limitations
Important Licensing Notes
License Check : Always verify license availability before batch runs
License Release : Properly close COMSOL to release licenses
Batch Operations : Require special batch/HPC licenses
Module Dependencies : Some modules require others (e.g., FSI needs CFD + Structural)
API Access : Requires base license plus relevant modules
Key Modules for Pump Applications
CFD Module Comprehensive computational fluid dynamics for single-phase and multiphase flows:
Turbulence Models :
RANS: k-epsilon, k-omega, SST
LES and DES for high-fidelity simulations
Wall functions and low-Re formulations
Flow Types :
Incompressible and compressible
Laminar and turbulent
Steady-state and transient
Rotating machinery (frozen rotor, sliding mesh)
Multiphase Flow :
Euler-Euler multiphase
Phase field methods
Level set tracking
Bubbly flow models
Rotating reference frames for impellers
Mixing plane interfaces
Cavitation modeling
Pressure pulsation analysis
Structural Mechanics Module Comprehensive structural analysis including linear and nonlinear behavior:
Analysis Types :
Static structural analysis
Eigenfrequency analysis (modal analysis)
Frequency response analysis
Transient dynamics
Prestressed analysis
Material Models :
Linear elastic
Hyperelastic (rubber, polymers)
Plasticity (metals under high stress)
Composite materials
Contact and friction
Dynamic Analysis :
Modal analysis for natural frequencies
Harmonic response
Time-dependent loading
Damping models (Rayleigh, modal)
Rotating machinery stress analysis
Bolt preload and assembly stress
Fatigue analysis
Contact between impeller and casing
Fluid-Structure Interaction (FSI) Couples CFD and Structural Mechanics for two-way interaction:
One-Way FSI :
Fluid loads applied to structure
Structure does not affect fluid
Faster computation
Suitable for rigid-like structures
Two-Way FSI :
Fully coupled fluid and structure
Deforming mesh methods
Accounts for large deformations
Required for flexible structures
Weak Coupling :
Sequential solution (staggered approach)
Fluid → Structure → Fluid iteration
Better for loosely coupled problems
Strong Coupling :
Fully implicit simultaneous solution
Better convergence for tightly coupled problems
Higher computational cost
Automatic mesh deformation (ALE method)
Remeshing for large deformations
Fluid loads computed automatically
Pressure and viscous forces transferred
Support for multiple solid bodies
Impeller blade vibration under fluid forces
Casing vibration and acoustic radiation
Seal deflection under pressure
Shaft deflection and critical speeds
Cavitation-induced vibration
Additional Relevant Modules
Pressure pulsation analysis
Noise radiation from pump casing
Structure-borne noise
Coupled acoustic-structure-fluid problems
Thermal loads in pumps
Coupled thermal-structural analysis
Conjugate heat transfer (fluid-solid)
Thermal expansion effects
Design optimization
Topology optimization
Shape optimization
Parameter sweeps
Java API for Automation COMSOL provides a comprehensive Java API for programmatic model building and automation:
API Structure
Model object : Top-level container
Component : Geometry and physics
Physics interfaces : Add and configure physics
Study : Define solution procedures
Results : Post-processing and visualization
Basic Java API Workflow import com.comsol.model.*;
import com.comsol.model.util.*;
public class PumpFSI {
public static Model run() {
// Create model
Model model = ModelUtil.create("PumpFSI");
// Create component
model.component().create("comp1", true);
// Create geometry
model.component("comp1").geom().create("geom1", 3);
// Import CAD geometry
model.component("comp1").geom("geom1").create("imp1", "Import");
model.component("comp1").geom("geom1").feature("imp1")
.set("filename", "/path/to/pump_geometry.step");
model.component("comp1").geom("geom1").run();
// Add fluid physics (CFD)
model.component("comp1").physics().create("spf", "LaminarFlow", "geom1");
model.component("comp1").physics("spf").selection()
.named("geom1_fluid_domain");
// Add structural physics
model.component("comp1").physics().create("solid", "SolidMechanics", "geom1");
model.component("comp1").physics("solid").selection()
.named("geom1_solid_domain");
// Add FSI coupling
model.component("comp1").multiphysics().create("fsi1", "FluidStructureInteraction", 3);
model.component("comp1").multiphysics("fsi1")
.selection().named("geom1_fsi_boundary");
// Create mesh
model.component("comp1").mesh().create("mesh1");
model.component("comp1").mesh("mesh1").automatic(true);
model.component("comp1").mesh("mesh1").run();
// Create study
model.study().create("std1");
model.study("std1").create("time", "Transient");
model.study("std1").feature("time").set("tlist", "range(0,0.01,1)");
// Solve
model.sol().create("sol1");
model.sol("sol1").study("std1");
model.sol("sol1").feature().create("st1", "StudyStep");
model.sol("sol1").feature().create("v1", "Variables");
model.sol("sol1").feature().create("t1", "Time");
model.sol("sol1").attach("std1");
model.sol("sol1").runAll();
// Save model
model.save("/path/to/pump_fsi_model.mph");
return model;
}
public static void main(String[] args) {
run();
}
}
Running Java API Scripts # Compile Java file
comsol compile PumpFSI.java
# Run with COMSOL
comsol batch -inputfile PumpFSI.class -outputfile results.mph
# Or run directly
java -cp /path/to/comsol/plugins/*:. PumpFSI
API Advantages
Reproducibility : Scripts ensure consistent model building
Parametric Studies : Easy to vary parameters
Batch Processing : Run multiple cases automatically
Integration : Connect with other tools and databases
Version Control : Track model changes in source control
MATLAB LiveLink COMSOL integrates seamlessly with MATLAB for enhanced scripting and data processing:
LiveLink Features Model Control from MATLAB:
Build and modify COMSOL models
Run simulations from MATLAB scripts
Extract results into MATLAB workspace
Use MATLAB's data analysis tools
Requires separate LiveLink for MATLAB license
Configure MATLAB path to COMSOL installation
Start COMSOL server or use direct connection
Basic MATLAB LiveLink Usage % Initialize COMSOL with MATLAB
import com.comsol.model.*
import com.comsol.model.util.*
% Start COMSOL server (if not already running)
mphstart
% Create or load model
model = mphload('pump_model.mph');
% Modify parameters
model.param.set('inlet_velocity', '5[m/s]');
model.param.set('outlet_pressure', '101325[Pa]');
% Run study
model.study('std1').run();
% Extract results
pressure = mpheval(model, 'p', 'dataset', 'dset1');
velocity = mpheval(model, 'u', 'dataset', 'dset1');
% Process in MATLAB
mean_pressure = mean(pressure.d1);
max_velocity = max(sqrt(velocity.d1.^2 + velocity.d2.^2 + velocity.d3.^2));
% Plot using MATLAB
figure;
plot(pressure.p, pressure.d1);
xlabel('Position');
ylabel('Pressure [Pa]');
title('Pressure Distribution');
% Save results
save('pump_results.mat', 'pressure', 'velocity');
% Close COMSOL
ModelUtil.remove('model');
Parametric Study with MATLAB % Parametric study of inlet velocity effects
velocities = 1:1:10; % m/s
results = struct();
for i = 1:length(velocities)
fprintf('Running case %d: velocity = %.1f m/s\n', i, velocities(i));
% Set parameter
model.param.set('inlet_velocity', sprintf('%f[m/s]', velocities(i)));
% Solve
model.study('std1').run();
% Extract force on impeller
force = mphint2(model, 'spf.Fp_x', 'surface', 'selection', 5);
results(i).velocity = velocities(i);
results(i).force = force;
% Extract vibration amplitude
displacement = mphmax(model, 'sqrt(u^2+v^2+w^2)', 'volume', 'selection', 3);
results(i).max_displacement = displacement;
end
% Plot results
figure;
subplot(2,1,1);
plot([results.velocity], [results.force], '-o');
xlabel('Inlet Velocity [m/s]');
ylabel('Force on Impeller [N]');
grid on;
subplot(2,1,2);
plot([results.velocity], [results.max_displacement]*1e6, '-o');
xlabel('Inlet Velocity [m/s]');
ylabel('Max Displacement [μm]');
grid on;
% Save results
save('parametric_results.mat', 'results');
Common Workflows
Workflow 1: Pump Casing Vibration Under Fluid Loads Application : Analyze vibration of pump casing due to pressure pulsations from fluid flow.
Approach : One-way FSI (fluid loads mapped to structure)
Geometry Setup :
Import pump casing geometry
Create fluid domain inside casing
Define FSI boundary (fluid-structure interface)
CFD Setup :
Define inlet and outlet boundaries
Set up turbulence model (k-epsilon or k-omega SST)
Configure transient solver
Apply rotating reference frame if analyzing flow with rotating impeller
Structural Setup :
Define material properties (steel, cast iron)
Apply boundary conditions (fixed support at mounting points)
Set up transient structural analysis
Include damping if known
FSI Coupling :
Map fluid pressure and shear stress to structure
One-way coupling (structure assumed rigid relative to fluid)
Time synchronization between fluid and structural solvers
Solution :
Solve transient CFD first
Extract time-varying pressure loads
Apply loads to structural model
Solve structural dynamics
Post-Processing :
Extract displacement at critical points
FFT analysis for frequency content
Compare with natural frequencies
Stress concentration analysis
Workflow 2: Impeller FSI Analysis Application : Coupled analysis of impeller blade deformation under fluid forces.
Approach : Two-way FSI with moving mesh
Geometry and Mesh :
Import impeller geometry
Create fluid domain around impeller
Define FSI interface at blade surfaces
Mesh solid impeller and fluid domain
Fine mesh at FSI boundary
Fluid Physics :
Turbulent flow (k-omega SST recommended)
Rotating reference frame for impeller
Inlet velocity or mass flow boundary
Outlet pressure boundary
Moving mesh (ALE) enabled
Structural Physics :
Linear elastic material initially
Fixed at shaft connection
Prestress from centrifugal loading
Include rotation effects
Two-Way FSI Coupling :
Fluid applies loads to structure
Structure deformation moves mesh
Iterative coupling within each time step
Convergence criteria for FSI iteration
Prestressed FSI :
First: Stationary structural analysis with centrifugal load
Second: Use prestressed state as initial condition for FSI
Improves convergence and accuracy
Solution Strategy :
Start with coarse time steps for initial transient
Refine time stepping for periodic solution
Monitor residuals and FSI iterations
Expect longer solve times for strong coupling
Post-Processing :
Blade tip displacement vs. time
Stress distribution on blades
Effect of deformation on flow field
Comparison of rigid vs. flexible results
Workflow 3: Coupled Thermal-Flow Analysis Application : Thermal effects in pumps handling hot fluids.
Approach : Conjugate heat transfer with thermal expansion
Multi-Domain Setup :
Fluid domain (hot liquid)
Solid domains (casing, impeller)
Define fluid-solid boundaries
Coupled Physics :
CFD for fluid flow
Heat Transfer in Fluids (energy equation)
Heat Transfer in Solids (conduction)
Thermal Stress in solids
Automatic temperature coupling at boundaries
Boundary Conditions :
Inlet: Temperature and velocity
Outlet: Pressure outflow
External surfaces: Convection or radiation
Solid boundaries: Fixed temperature or insulation
Material Properties :
Temperature-dependent viscosity
Thermal expansion coefficients
Thermal conductivity
Solution Sequence :
Steady-state thermal-flow first
Use as initial condition for thermal stress
Or fully coupled transient simulation
Post-Processing :
Temperature distribution
Thermal stresses
Thermal expansion displacements
Effect on clearances and fits
Workflow 4: Modal Analysis with Fluid Loading Application : Natural frequencies of pump casing in contact with fluid.
Approach : Eigenfrequency analysis with fluid-structure coupling
Geometry :
Pump casing structure
Surrounding or contained fluid
FSI boundaries
Physics Setup :
Pressure Acoustics for fluid
Solid Mechanics for structure
Acoustic-Structure Boundary coupling
Boundary Conditions :
Structural: Fixed supports
Acoustic: Sound hard walls at rigid boundaries
FSI: Acceleration coupling
Study :
Eigenfrequency study
Search for eigenfrequencies in range of interest
Acoustic-structure coupling included automatically
Results :
Natural frequencies with fluid loading
Mode shapes
Comparison with in-air and in-vacuum modes
Fluid added mass effect
Batch Execution
Command Line Execution COMSOL can run in batch mode without GUI:
# Run existing model file
comsol batch -inputfile pump_model.mph -outputfile results.mph
# Run Java method file
comsol batch -inputfile PumpFSI.java -outputfile results.mph
# Run with specific study
comsol batch -inputfile pump_model.mph -outputfile results.mph -study std1
# Run with parameter override
comsol batch -inputfile pump_model.mph -outputfile results.mph \
-pname inlet_velocity -plist 5,10,15,20
# Run MATLAB script
comsol batch -inputfile pump_analysis.m -outputfile results.mph
# Specify number of processors
comsol batch -np 8 -inputfile pump_model.mph -outputfile results.mph
Batch Script Example (Linux) #!/bin/bash
# batch_comsol.sh
# Set license server
export [email protected]
# Set number of processors
NPROCS=8
# Input/output files
INPUT_MODEL="pump_fsi_base.mph"
OUTPUT_DIR="results"
# Create output directory
mkdir -p ${OUTPUT_DIR}
# Parameter sweep: inlet velocities
VELOCITIES="2 4 6 8 10"
for VEL in ${VELOCITIES}; do
echo "Running simulation with inlet velocity = ${VEL} m/s"
OUTPUT_FILE="${OUTPUT_DIR}/pump_fsi_v${VEL}.mph"
LOG_FILE="${OUTPUT_DIR}/pump_fsi_v${VEL}.log"
# Run COMSOL in batch mode
comsol batch -np ${NPROCS} \
-inputfile ${INPUT_MODEL} \
-outputfile ${OUTPUT_FILE} \
-pname inlet_velocity \
-plist ${VEL} \
> ${LOG_FILE} 2>&1
# Check exit status
if [ $? -eq 0 ]; then
echo " Simulation completed successfully"
else
echo " ERROR: Simulation failed - check ${LOG_FILE}"
exit 1
fi
done
echo "All simulations completed"
Python Automation with JPype Use JPype to call COMSOL Java API from Python:
import jpype
import jpype.imports
from jpype.types import *
import numpy as np
# Start JVM with COMSOL
comsol_root = '/usr/local/comsol56/multiphysics'
jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(
jvm_path,
f"-Djava.library.path={comsol_root}/lib/glnxa64",
f"-Dcs.lic.path={comsol_root}/license",
classpath=f"{comsol_root}/plugins/*"
)
# Import COMSOL packages
from com.comsol.model.util import ModelUtil
# Load model
model = ModelUtil.load('/path/to/pump_model.mph')
# Parametric study
velocities = np.linspace(2, 10, 5)
results = []
for vel in velocities:
print(f"Running velocity = {vel:.1f} m/s")
# Set parameter
model.param().set('inlet_velocity', f'{vel}[m/s]')
# Run study
model.study('std1').run()
# Extract results (example)
# Add actual result extraction here
# Save case
model.save(f'results/pump_v{vel:.1f}.mph')
results.append({
'velocity': vel,
# Add extracted results here
})
# Cleanup
ModelUtil.remove('model')
jpype.shutdownJVM()
print("Parametric study completed")
Best Practices
Model Setup
Geometry : Clean, defeatured geometry suitable for meshing
Selections : Use named selections for boundary conditions
Parameters : Use global parameters for easy modification
Units : Consistent unit system throughout model
Symmetry : Exploit symmetry when possible
Meshing
Mesh Quality : Check mesh quality metrics (skewness, growth rate)
Boundary Layers : Critical for turbulent flow
FSI Interface : Fine mesh at fluid-structure boundary
Mesh Independence : Verify solution mesh convergence
Adaptive Meshing : Use for complex flows
Physics Setup
Appropriate Models : Select physics models suitable for application
Material Properties : Verify material data accuracy
Boundary Conditions : Ensure physical consistency
Initial Conditions : Provide good initial guess
Coupling Settings : Check FSI coupling parameters
Solver Strategy
Solver Selection : Automatic vs. manual solver configuration
Convergence Criteria : Appropriate tolerances
Time Stepping : Adaptive time stepping for transient
Linearization : Check nonlinear solver settings
Parallel Computing : Use multiple cores effectively
Automation
Version Control : Track model files and scripts
Documentation : Comment code and document workflow
Error Handling : Implement checks and error recovery
Testing : Validate automation on simple cases first
License Management : Check license availability in batch jobs
Post-Processing
Data Extraction : Export only necessary data
Visualization : Standardized plots for comparison
Validation : Compare with experimental or analytical results
Reporting : Automated report generation
Data Management : Organize results systematically
Troubleshooting
Common Issues
Verify license server connectivity
Check module availability
Ensure batch licenses for automated runs
Simplify geometry (remove small features)
Adjust mesh size parameters
Use different mesh sequence
Reduce load step or time step
Improve initial conditions
Adjust solver tolerances
Check for poor mesh quality
Review boundary conditions
Mesh deformation failures: Remesh or adjust smoothing
Slow FSI convergence: Adjust relaxation factors
Large deformations: Consider remeshing strategies
Time step too large: Reduce for stability
Use coarser mesh initially
Simplify physics models
Exploit symmetry
Increase parallel cores
Use segregated solver for large models
Additional Resources
Documentation
COMSOL Multiphysics User's Guide : Core functionality
CFD Module User's Guide : Fluid flow physics
Structural Mechanics Module User's Guide : Solid mechanics
COMSOL API Reference : Java API documentation
LiveLink for MATLAB User's Guide : MATLAB integration
Online Resources
COMSOL Website : https://www.comsol.com
COMSOL Blog : Application examples and tips
COMSOL Support Center : Knowledge base and downloads
Application Gallery : Example models and tutorials
COMSOL Forums : Community discussions
Training
COMSOL Training Courses : Official training programs
Webinar Archive : Recorded training sessions
Learning Center : Video tutorials and guides
Support
Technical Support : [email protected]
Regional Support : Contact local COMSOL office
Application Engineers : Assistance with complex problems
02
Overview
計算化学
Drug Discovery Pharmaceutical research assistant for drug discovery workflows. Search bioactive compounds on ChEMBL, calculate drug-likeness (Lipinski Ro5, QED, TPSA, synthetic accessibility), look up drug-drug interactions via OpenFDA, interpret ADMET profiles, and assist with lead optimization. Use for medicinal chemistry questions, molecule property analysis, clinical pharmacology, and open-science drug research.