1 / 20 Solving industrial design problems by using COMSOL Multiphysics with MATLAB Benjamin Ivorra MOMAT Research group & Instituto de Matemática Interdisciplinar & Departamento de Matemática Aplicada Universidad Complutense de Madrid Outline Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 2 / 20 • Industrial examples - Microfluidic mixer - Toy problem • COMSOL Multiphysics - Creation of the model - Conversion to MATLAB • MATLAB - Structure of the M-script - Useful commands - Creating a function • Conclusions Part I: Industrial examples Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 3 / 20 Device: Microfluidic mixer Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 4 / 20 Application: Microfluidic mixers are used to quickly mix a protein solution with a solvent provoking a rapid change in chemical potential resulting in the unfold of certain proteins. Example of microfluidic mixer: There exist a wide range of techniques to create microfluidic mixers. For instance: Industrial problem Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 5 / 20 Objective: optimize the mixer to reduce the time needed to reach a certain protein concentration. Considered mixer: Knight mixer Parameters Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 6 / 20 px lc h2 (cx2,cy2) l2 ls (cx1,cy1) h1 l1 le θ us A xi al s ym m et ry exit Center inlet Side inlet Ω uc Mathematical Modeling Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 7 / 20 Steady equations: C C30 90 + Convective−Diffusion Navier−Stokes Design Problem Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 8 / 20 We are interested in minimizing: J(xparam) = ∫ c xparam 30 c xparam 90 dy u xparam(y) · t , where c xparam 90 , c xparam 30 and u xparam are computed by solving numerically (COMSOL) the following system:        −∇ · (η(∇u+ (∇u)⊤)) + ρ(u · ∇)u+∇p = 0 in Ω, ∇ · u = 0 in Ω, ∇ · (−D∇c+ cu) = 0 in Ω, + boundary conditions. This optimization problem is solved by using the Global Optimization Platform software (MATLAB): http://www.mat.ucm.es/momat/software.htm Some Results Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 9 / 20 Experimental implementation Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 10 / 20 Bibliography Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 11 / 20 ■ Benjamin Ivorra, Juana Redondo, Juan Santiago, Pilar Ortigosa, and Angel Ramos. Two- and three-dimensional modeling and optimization applied to the design of a fast hydrodynamic focusing microfluidic mixer for protein folding. Physics of Fluids, 25, 032001, 2013. ■ David E. Hertzog, Benjamin Ivorra, Bijan Mohammadi, Olgica Bakajin, Juan G. Santiago. Optimization of a Fast Microfluidic Mixer for Studying Protein Folding Kinetics. Analytical chemistry, 78(13), 4299-4306, 2006. ■ Benjamin Ivorra, David E. Hertzog, Bijan Mohammadi, Juan G. Santiago. Semi-deterministic and genetic algorithms for global optimization of microfluidic protein-folding devices. International Journal for Numerical Methods in Engineering , 66(2), 319-333, 2006. Toy problem Outline Part I: Industrial examples Microfluidic mixer Toy problem Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 12 / 20 We want to optimize the temperature of the left wall (Tl) of a given rectangular heat chamber such that the mean spatial temperature is 50◦C: min Tl∈[0,100] J(Tl) = ∣ ∣ ( ∫ Ω T (Tl)dx/ ∫ Ω 1dx ) − 50 ∣ ∣ Parameter ����������������������������� ����������������������������� ����������������������������� ����������������������������� ����������������������������� ����������������������������� ����������������������������� ����������������������������� ����������������������������� ����������������������������� ����������������������������� ����������������������������� Ω T =[0,100]ºCl Wall Wall Heat PDE Fixed T=25ºC Part II: COMSOL Multiphysics Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 13 / 20 Main steps Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 14 / 20 ■ Use the COMSOL GUI to easily create the model. ■ Identify and isolate all the parameters to be modified by the MATLAB code. ■ Compress history before exporting the model to MATLAB format. Part III: MATLAB Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 15 / 20 Useful MATLAB commands Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 16 / 20 ■ mphgeom(model,’geom1’) ■ mphmesh(model,’mesh1’) ■ model.result.table(’tbl1’).getReal ■ mphint(model,’u’,’T’,tf,’edim’,2,’selection’,[1]) ■ mphinterp(model,’u’,’T’,tf,’coord’,[0.2;0.2]) ■ mphsave(model,’optimum’) ■ model=mphload(’optimum’) ■ model.variable(’var1’).set(’Tmax’, num2str(x(1))) Conclusions Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 17 / 20 Extended courses Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 18 / 20 ■ Course (10H): Método de Elementos Finitos: Aplicaciones y Optimización con COMSOL MULTIPHYSICS. Doctorado en Ingenieŕıa Matemática, Estad́ıstica e Investigación Operativa. Universidad Complutense de Madrid. February. ■ Seminary (2H): Simulación numérica en Ingenieŕıa y Ciencias con MATLAB + COMSOL Multiphysics. Departamento de F́ısica Aplicada II y Vicerrectorado de Investigación. Universidad de Málaga. May. Download files Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 19 / 20 Google keywords: Ivorra Benjamin Researchgate Thank you Outline Part I: Industrial examples Part II: COMSOL Multiphysics Part III: MATLAB Conclusions 12/06/2015 Iberian COMSOL Multiphysics Conference 2015 – 20 / 20 !!! Thank you for your attention!!! Global Optimization Platform http://www.mat.ucm.es/momat/software.htm Outline Part I: Industrial examples Device: Microfluidic mixer Industrial problem Parameters Mathematical Modeling Design Problem Some Results Experimental implementation Bibliography Toy problem Part II: COMSOL Multiphysics Main steps Part III: MATLAB Useful MATLAB commands Conclusions Extended courses Download files Thank you pdstartclock: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: pdclock.time: