40m QIL Cryo_Lab CTN SUS_Lab TCS_Lab OMC_Lab CRIME_Lab FEA ENG_Labs OptContFac Mariner WBEEShop
  COMSOL elog, Page 3 of 3  Not logged in ELOG logo
IDup Date Author Type Category Subject
  101   Sat Sep 5 15:17:41 2015 ranaGeneralConfigurationFEA logs merged

I moved the only entry from the 'ENG_FEA' log into the COMSOL log and then renamed that logbook as 'FEA' since we don't need two FEA logs.

Also renamed 'AdhikariLab' log as ATF.

  102   Fri Dec 4 18:32:02 2015 ranaGeneralConfigurationCOMSOL: remote server w/ matlab

This summarizes how to get the remote comsol server to run. COMSOL is now on tegmeni thanks to Larry.

On the server:

rana@tegmeni|~> /usr/local/comsol51/multiphysics/bin/comsol server -login force

This starts up a comsol server instance, listening on port 2036. '-login force' will ask you to supply a username and password which you make up. You will have to enter these later from the client side.

On my laptop, from the MATLAB prompt:

>> addpath('/Applications/COMSOL51/Multiphysics/mli/')

>> mphstart('tegmeni.ligo.caltech.edu', 2036,'uname','pword')

That's it! Now you just run the matlab script which runs the COMSOL file.

I'm attaching a tarball of the .mph file (written by Dmitry Kopstov from MSU) and the associated matlab scripts which change the parameters, as well as looping over test mass thickness to produce a plot of Brownian noise PSD v. 

Attachment 1: BrownianSweep.tgz
  105   Tue Jun 28 15:50:45 2016 Joy WestlandMechanicsAnalysisA Simple Model of the Modal Analysis of a Cantilever Circular/Cylinder Cross Section in ANSYS tutorial

Here is a tutorial to implement a simple Modal Analysis of a Cantilever Cylinder

1. Open the ANSYS workbench

2. Drop and drag the "Modal" analysis system into the project schematic

3. Right click on "Engineering Data" and edit the material. There are predetermined properties found in the "Engineering Data Sources" (Right click on the description or press the books in the top right hand corner). For this tutorial, fused silica was created with these parameters:

  • Young's Modulus E: 7.2E10 Nm^-2 (Isotropic Elasticity)
  • Density p: 2200 kgm^-3 (Density)
  • Specific Heat c: 770 J/kgK (Specific Heat)
  • Isotropic Thermal Conductivity k: 1.38 W/mk (Isotropic Thermal Conductivity)
  • Coefficient of Thermal Expansion: 3.9E-7 (Isotropic Secant Coefficient of Thermal Expansion)
  • Reference Temperature: 21 C (Isotropic Secant Coefficient of Thermal Expansion)
  • Poisson's Ratio: 0.17 (Isotropic Elasticity)

In order to put in the parameters, just drag and drop from the toolbox. Also make sure the filter is turned off (that's the filter symbol next to the engineering data sources/books in the top right hand corner) this will allow a user to few all the parameters.

4. Return to the project, and open/edit the geometry. The cantilever that was used for this tutorial is a cylinder with a diameter of 2 mm with a length of 200 mm, shown in image 1.

  • How to Create a geometry:
    • Open up the geometry
    • Decide which plane you want to start drawing in: XY Plane, ZX Plane, YZ Plane
    • Click on "new sketch" in the 4th row from the top after "Sketch1" it's blue sketch
    • Whatever plane you decide to choose, press the "Look at Face/Plane/Sketch" icon in the top right hand corner (The person looking at a face)
    • This will allow the view to go to the view where you want to sketch on
    •  Click on "Sketching" which is next to the "Modeling" right above the "Details View"
    • Here will be Several Options
      • Draw: This is where you can decide what shape you want to use
      • Modify: This is the extras such as fillets, chamfers and corners
      • Dimensions: This is where you can select what type of dimensions you will be using
      • Constraints: This is where you can constrain lines or connect lines
        • When you want to connect lines together, click on each end and make them "Coincident" this way the shape will connect when you change dimensions
      • Settings: This is where you can show a grid or snap grid
    • Sketch Color:
      • Teal: Underdefined: The sketch does not have enough dimensions to constrain and tell the program what exactly the shape is
      • Blue: Defined: The sketch is fully defined and does not need any more dimensions
      • Red: Overdefined: The sketch has repeating dimensions that causes errors
    • For this tutorial, draw a circle. I made mine coincident to the middle by pressing the vertex in the middle and one of the axis and then repeat the process with the second axis to center the circle
    • Dimensions: The diameter is 2 mm, under dimensions to display the number, click "Display" and then "Value" instead of "name"
    • To change the dimensions, the "Details View" in the bottom left hand corner will say D1 and from there you can change the diameter
    • From there in order to create the length of the cylinder, press "Extrude" at the top (4th row) towards the right. From there it will ask what geometry, click on your sketch and click "Apply". Make sure the "Operation" is "Add Material" to Extrude.
    • Then choose a "Depth" in this case it's 200 mm. Then click "Generate" the lightning bolt next to the "New Sketch" symbol.
    • Your cylinder should look like image 1.

5. Return to the project and open the Model tab. With that open, go to the subtab of "Geometry", named "Solid". Under Solid go to "Assignment" under "Material" to assign Fused Silica or whatever material you decide to choose.

6. Go to the "Mesh" tab. In this case the "Element Size" under the "Sizing" tab is 0.04 and the "Relevance Center" as "Fine". Right click on the mesh and press "Generate mesh".

7. Under the Modal tab, go to the Analysis Settings and change the "Max Modes to Find" for ANSYS to calculate. In this tutorial, the amount of modes that were used was 17.

8. Right Click the Modal and press on "Fixed Support". This will make the bar a cantilever bar, once the geometry is set to fix one face of the bar. Press on one of the faces and click on "apply" on the Geometry.

9. Right click on the solution and press "Solve". Let ANSYS run the modes through.

10. On the Solution tab, the "Tabular Data" is listed but the Total Deformation has not been listed. In order to do so, select all the frequency of the modes in the column and right click and press "Create Mode Shape Results".

11. Once loaded, the total deformation will have a lightning bolt next to each entry, right click and press "Solve" or "Evaluate All Results". This will make all the entries have a green check mark.

12. This will give the user the ability to animate each entry. This is down by clicking the play (sideways triangle button). ANSYS will run through the simulation for that mode that is selected, shown in image 2.

13. Using Mathematica (or another computational system) input the analytical solution for a Cantilever bar fixed to one end.

  • wn=(knL)2Sqrt(EI/mL4)
    • Where:
    • wn is the frequency measured in radians/second
    • E = Young's Modulus
    • I = moment of cross section
      • Irectangle = ba3/12 (b and a are the sides)
      • Icircle = (Pi/64)(d4) (d is the diameter)
    • m = mass per unit length
    • L = length of the bar
    • kn relates to the amount of nodes
      • k1L = 1.875, k2L = 4.694, k3L = 7.855, k4L = 10.996, k5L = 14.137
      • n greater than 5: knL = (2n -1)(Pi/2)
  • Convert wn to f measured in Hz

14. Compare only to the bar actually bending, not twisting or contracting. There are modes that are the same due to the symmetry of the bar. In image 3 the underlined frequencies compare to the analytical calculations (Mathematica) and the computational calculations (ANSYS).

Attachment 1: Simple_Cantilever_200_mm_Long_Geometry.PNG
Attachment 2: Simple_Cantilever_200_mm_Long.PNG
Attachment 3: Comparison_between_ANSYS_and_Calculations_Fused_Silica_200_mm_L.PNG
  106   Tue Jun 28 16:54:23 2016 Nikhil MathurMechanicsAnalysisAnsys 14.5 Indroductory Tutorial: Modal Frequency Convergence

This tutorial will go through how to show frequency convergence for a cylindrical cantilever using Ansys 14.5 and Mathematica.

Attachment 1: ConvergenceTutorial.pdf.gz
  107   Wed Jun 29 14:14:44 2016 Joy WestlandMechanicsAnalysisANSYS Tutorials with Basic Meshing

Here are a series of tutorials for basic meshing principles from ANSYS Meshing Basics:

  1. ANSYS Meshing Fine Mesh Basic Tutorial 1: https://www.youtube.com/watch?v=sZIX3CJkWBE
  2. ANSYS Meshing Method Basic Tutorial 2: https://www.youtube.com/watch?v=ATSnvFUbEk4
  3. ANSYS Meshing Refinement Mesh Basic Tutorial 3: https://www.youtube.com/watch?v=QVfJiydCu2g
  4. ANSYS Meshing Sizing Mesh Basic Tutorial 4: https://www.youtube.com/watch?v=ODJ11YDC6ac
  5. ANSYS Meshing Spheres of Influence Basic Tutorial 5: https://www.youtube.com/watch?v=AQlGccK_X-0
  6. Body of Influnce 6: https://www.youtube.com/watch?v=3E1p1w32jt0
  7. Section Plane 7: https://www.youtube.com/watch?v=hhZOJSESJEU
  8. Mapped and Match Control 8: https://www.youtube.com/watch?v=3pogywR8Vgw
  9. MultiZone and Inflation 9: https://www.youtube.com/watch?v=vxVBvANHuB0
  10. Sizing Soft/Hard 10: https://www.youtube.com/watch?v=D8UzdC5Gmhs
  108   Fri Jul 29 14:33:41 2016 Joy WestlandMechanicsGeneralA Tutorial in Importing SolidWorks Files and Applying a Gaussian Force in ANSYS for a LIGO Test Mass

Here is a tutorial in importing SolidWorks into ANSYS and the steps needed to apply a Gaussian Force to the LIGO test mass that’s imported.

Using SolidWorks:

  1. Download the SolidWorks Zip Folders from the DCC
    1. https://dcc.ligo.org/login/index.shtml?entityID=https%3A%2F%2Fdcc.ligo.org%2Fshibboleth-sp&return=https%3A%2F%2Fdcc.ligo.org%2FShibboleth.sso%2FLogin%3FSAMLDS%3D1%26target%3Dss%253Amem%253A15b6c314d87e3fa8b3768d89cb6b9836fe39c754 (LIGO-D1000760-v4)
    2. Open/export the zip folders into a different file
  2. For only the test mass and ears, open the file called: D0902456 ITM OPTIC WITH EARS ASSEMBLY. This will represent the bottom mass.
  3. An assembly can be imported into ANSYS but it’s easier to convert an assembly into a part before importing it into ANSYS. Also this will allow you to perform a split line.
    1. To do this, resave the assembly but before pressing save, change the file to PRT extension instead of Assembly.
  4. Open the PRT file of the test mass, make a new sketch on the face of the test mass.
  5. Draw a circle (Or whatever shape) on the test mass. In this case a 0.1 m circle was made in the middle of the test mass.
  6. From there go to “Insert” and then press “Curve” and then go to “Split Line”. Split line allows a user to project the sketch onto the part. This makes it possible to press the sketch separately from the part. This is a useful tool because in ANSYS, once split line has been used on a sketch, a user can press that shape separately on the face of the object. The importance of this tool allows a user to click on the circle separately and apply a force in that particular area.
    1. In “Split Line” press the “sketch” you want to project onto the “face” of the object.

Importing SolidWorks into ANSYS:

  1. Once the part has been made, choose the “static structural analysis”.
  2. In the geometry: Import the test mass that was converted into a part
  3. Once imported, press the geometry again and “edit”
  4. In the edit module, “generate” the part and once the part has loaded notice the circle can be pressed such that it is a different part of the test mass surface.
  5. Exit geometry module

Applying Gaussian Force:

  1. Enter the “model” module to edit the setup of the analysis
  2. Assign the material that you want for the test mass under “Geometry” à “Solid” under the “Material” and “Assignment”
  3. Under the “Coordinate Systems”, make a new coordinate system
  4. “Coordinate System:
    1. Click on the face, in this case the circle made on the test mass for the “geometry” and “apply”
    2. Under “Definition” à “Type” à Change from Cartesian to Cylindrical. This allows the Gaussian Force to be distributed correctly
  5. Under “Analysis Settings” Turn on “Large Deflection”
  6. Add “gravity” under “Static Structural”
    1. Treat the test mass is if it were the bottom mass so make sure gravity is pointing the correct way, such that the wires on the ears would extend upward.
  7. Insert “Fix” to the top surfaces of the ears
  8. Insert “Pressure”
    1. Press on the circle made to apply for the pressure
    2. Under “Definition” change the “Magnitude” to “Function” (the arrow at the end of the Magnitude entry bar)
    3. Once function has been activated: A Gaussian force of: 1/((3.141592654*0.0156^2)*2.718281828^((x/0.0156)^2)) was used in SI units. Note that ANSYS does not use symbols. Once that’s entered into the “Magnitude”, under “Function” the “Coordinate System” will appear. Change that to the coordinate system that was made in step 4 of the cylindrical system.
    4. Under “Graph Controls” Make sure that the X-Axis is changed from Time to X.
    5. Pick a range for the graph and the number of segments that you want to look at.
  9. “Solve” the system and right click on “Solution” and evaluate the different results you need.
Attachment 1: Bottom_Test_Mass_With_Ears.PNG
Attachment 2: Applying_Parameters.PNG
Attachment 3: Applying_Gaussian_Force.PNG
  109   Sun May 7 18:22:35 2017 ranaGeneralVoyagerVoyager ITM: Radiative cooling with cold shield and cold CP

I took Aidan's COMSOL model for the ITM from a couple years ago and updated it with some more details:

  1. Through radiative cooling only, the ITM is cooled to 103 K. Taking it to 123 K will be accomplished by adding a ring heater to the ITM.
  2. Assume 3 W of heating from main laser beam onto ITM HR face.
  3. Emissivity of ITM barrel is 0.95. Emissivity of HR* and AR faces is 0.5.
  4. The CP and the Inner Shield are kept fixed at 80 K. This is to simulated the effect of having conductive cooling with cold straps. This needs to be checked in more detail by actually modeling thermal straps.
  5. Emissivity of the CP is 0.9.
  6. The total length of the inner shield is 5 m. The CP is at z = 0 m and the ITM is at z = 2.25 m. We should check what the result would be if the shield is ~1m shorter or longer.

In the attached image, I have made one quadrant of the tubular cryo shield transparent just for clarity - the actual modelled tube is 3 cm thick, made of aluminum, has an emissivity of 0.95 on the inside and 0.03 on the outside (to simulate what we would get from polished aluminum or gold coating).

This files is in our GitLab: https://git.ligo.org/rana-adhikari/CryogenicLIGO/blob/master/FEA/ITM-ColdShield-CP.mph

*I am suspicious of just using a single emissivity number for the AR and HR coatings. Since we are concerned with wavelengths which are long w.r.t. the coating thickness, it may be that the HR and AR coatings have a complicated wavelength dependence in the 5-50 micron band.

Attachment 1: ITM-ColdShield-CP.png
  110   Mon Jul 24 15:35:34 2017 MariiaGeneralConfigurationRunning Comsol to Matlab

WIth Gautam's help, I have created a user directory in 40 meter Lab and copied Rana's documents (MATLAB coating files) from flash card into it. After that, from this elog by Rana : COMSOL: remote server w/ matlab from Fri Dec 4 18:32:02 2015,  ran the matlab document BarrelCoating which resulted in the following error 

Could not obtain license for#LiveLink for MATLAB
Could not obtain license for LiveLink for MATLAB.
License error: -4.
Licensed number of users already reached.
Has anybody seen this before?


  111   Mon Jul 24 15:54:26 2017 KojiGeneralConfigurationRunning Comsol to Matlab

The number of licenses already used by whom / still remains can be confirmed by running the following command on a comsol-installed linux machine

$ cd /usr/local/comsol51/multiphysics/license/glnxa64
$ ./lmstat -c ../license.dat -a


  112   Wed Jul 26 20:14:46 2017 ranaGeneralConfigurationRunning Comsol to Matlab

I've just tried this out on my desktop machine using COMSOL 5.1 and its still working. Which COMSOL is installed on optimus at the 40m ?

  113   Fri Jul 28 15:48:58 2017 MariiaGeneralConfigurationComsol batch for windows

Using the written path from elog by ericq: Computer Scripts/Programs, Comsol can be run from the directory on the distant computer: /cvs/cds/caltech/apps/linux64/comsol51/bin/glnxa64/comsol batch -inputfile Model1.mph -outputfile Model_solv.mph. To transfer files from Linux to Windows : the command pscp.

The method:

1. To download PuTTY and make a coonection with a distant computer.

2. Linux terminal: ssh optimus % allows to go into the whole system

3. Windows terminal: pscp "the path of the file" controls@nodus.ligo.caltech.edu:/users/.../ % allows to transfer mph-file from Windows to Linux

4. Linux terminal: /cvs/cds/caltech/apps/linux64/comsol51/bin/glnxa64/comsol batch -inputfile Model1.mph -outputfile Model_solv.mph % calculation on the distant computer, without outputfile solution would be stored in the input file

5. Windows terminal: pscp controls@nodus.ligo.caltech.edu:/users/.../Model_solv.mph Documents\ % copy file from Linux to Windows, Documents is the name of the folder in Windows 



  114   Mon Jul 31 22:18:57 2017 ranaGeneralGeneralusing more than 12 cores in matlab

Since 2014, the limit of 12 workers using the matlab parallel computing toolbox has been lifted. Today, I was able to get this to work. There's a trick.

Usually, when you start up matlab and run a parallel thing like 'parfor', it just uses a default profile 'local' which limits you to 12 workers. You can try to ask for more by doing 'parpool(40)' for 40 workers, but it will tell you that NumWorkers = 12 and you're out of luck. So instead:

myCluster = parcluster('local')

myCluster.NumWorkers = 40;


parpool('myCluster', 40)

It seems that it needs the max # of workers and the requested number of workers to be 40 to use 40, otherwise you'll just get 12 (as of matlab 2016a).

Attachment 1: Screen_Shot_2017-07-31_at_10.11.35_PM.png
  115   Thu Nov 2 17:23:56 2017 AaronMechanicsPonderSqueezeModelling suspension noise

aLIGO Suspensions Toy Model

On Wednesday I started making my own model of the aLIGO suspensions, with the top of the silica fibers attached to ears that are fixed rather attached to an additional suspension stage (so this will be a one stage suspension).

I grabbed the aLIGO ear design from the DCC: LIGO-D080751-v4

I am almost done with the model, should have it working tomorrow and will add it to the experimental gravity github in an appropriate place.

  116   Fri Nov 3 15:03:10 2017 AaronMechanicsPonderSqueezeModelling suspension noise

Model Geometry

Test Mass

I found the dimension of the test mass flat in the drawings of the mock test mass design here: LIGO-D080687.


I modelled the fibers with the profile described in LIGO-D080751, fig 3.7.


I grabbed the d-values from LIGO-T1000545, but since the d-value is defined as the distance from the center of mass (of the penultimate mass (PUM) or the E/ITM) to the bend point (BP) of the fiber (I believe the point on the fiber with maximal flexure in the fundamental mode), I did not go through the effort of figuring out where the bend point is but rather grabbed the horn-CM distance from LIGO-T1100407

I wanted to get the real aLIGO parameters for the first version of this model, and have parametrized the model in such a way that I can define all of the parameters that need to change (surface area of the ear-TM bond, length of the fibers, thickness and profile of fibers, d-value, etc) and scale them with mass in some way for future iterations on this design.

I need to pare down the number of parameters, because I started by fully defining the ears and now am importing a 3D model of the ears and planning to scale these with mass.


For the material of the entire test mass and suspension, I used the fused silica that is specified as [solid,NIST SRM 739 - Type I]. I wasn't sure the difference between the types of silica, but this one said SRM so I thought it might have been defined on my distribution of COMSOL by a LIGO person. A quick google search showed me that person may have been rana?? https://labcit.ligo.caltech.edu/~rana/research/etm.html


I'm using a solid mechanics model.

Fixed Boundary Constraint

I fixed the position of the bonding surfaces for the PUM ears, so it is as if they are contacted to a completely fixed PUM (the PUM is not included in the model, but the upper ears are included, so the constraint is on the ears not the fiber. See drawing).


I added gravity to all parts of the model. Apparently, it is not trivial to use gravity in a frequency domain study in COMSOL, as described in this presentation here. Fortunately, the presentation in the link is interested in the transfer function for a mass on a string also, so I follow the simulation steps they describe below.

Boundary Load

I add a boundary load that will vary sinusoidally for the frequency domain study.


I have not yet messed with the meshing for these models. Obviously the points with more flexture and smaller parts (like at the horns of the ears, the tapering parts of the fibers, etc) will require a finer mesh.


I need to incorporate the advice on how to build this study described in the link above. The following might also be useful, though I haven't looked through them yet:



  117   Wed Nov 15 14:05:12 2017 AaronMechanicsPonderSqueezeModelling suspension noise

Model Geometry

I pared down the number of parameters in the model to only the necessary ones. These are the ones that remain:
TM_radius: Radius of the test mass
TM_width: Width of the test mass
TM_flats: length of TM flats
ear_length: length of the ear
horn_spacing: length of the ear
horn_gap: gap between the top of the horn and the TM on the near side
d_val: distance from the CM to the bend point
horn_BP: distance from the horn to the bend point
ear_height_tot_nominal: nominal total height of the ear and horn for the unscaled (aLIGO) design (this name made more sense in a previous version of the model)
fiber_stock_length: length of the fiber's stock
fiber_neck_length: length of the fiber's neck
fiber_thick_length: length of the thick section of the fiber
fiber_main_length: length of the main section of fiber (the thinnest part)
fiber_taper_length: length of the tapering section of fiber
fiber_stock_radius: radius of the fiber stock
fiber_thick_radius: radius of the thick section of fiber
fiber_main_radius: radius of the main section of fiber
F_load: force of the boundary load used for the excitation in the frequency domain study
ear_scale_height: scale the height of the ear
ear_scale_length: scale the length of the ear
ear_scale_width: scale the width of the ear


For the material of the entire test mass and suspension, I used the fused silica that is specified as [solid,NIST SRM 739 - Type I]. I wasn't sure the difference between the types of silica, but this one said SRM so I thought it might have been defined on my distribution of COMSOL by a LIGO person. A quick google search showed me that person may have been rana?? https://labcit.ligo.caltech.edu/~rana/research/etm.html


Rana suggests that for the purpose of this study, it is not necessary to actually have COMSOL handle gravity as a restoring force... I'm not sure if I understand why this is yet? It seems that if we are interested in the relative strain energy in different parts of the wire compared to other parts of the system, it is important that the wire be under tension. If we have no gravity, the wire is effectively not under tension.


I have not yet messed with the meshing for these models. Obviously the points with more flexture and smaller parts (like at the horns of the ears, the tapering parts of the fibers, etc) will require a finer mesh.


I need to incorporate the advice on how to build this study described in the link above. The following might also be useful, though I haven't looked through them yet:



  118   Mon Dec 4 16:27:13 2017 aaronMechanicsPonderSqueeze 

Meshing Surface Layers

Defining New Selections

I don't know why I wasn't seeing this problem with previous models (perhaps because I wasn't importing any CAD or STEP files), but my latest attempts at meshing and selecting specific domains of my model were being thwarted by inconsistent domain definitions. I was previously always manually selecting domains, which is confusing because all domains just get assigned a number when they are created. Worse, sometimes the numbers assigned to domains change when the model rebuilds, especially if there has been a significant change in the model geometry. This results in later steps selecting the wrong set of domains (or boundaries, etc).

To fix this problem, I created new selections (sets of domains, boundaries, or etc that receive their own label and can be selected as a group later in the model). The new selections include:

-Domain selections that separate surface and bulk layer for all domains in the fibers (fiber stock, neck, thick section, taper, and main section, in order from the horn to the center of the fiber)
-Boundary selections for all domain selections described above

This is probably also a necessary step for getting reliable results when interfacing with MATLAB, and might explain some weird problems I was running in to a while ago and just made haphazard fixes for.

Mesh Steps

I use the following mesh steps to get what seems like a pretty reliable meshing:

  1. Mesh the upper tapers (bulk and surface separately) with a free tetrahedral mesh
    1. I mostly use the defaults for an extremely coarse mesh, but the only parameter that seems to make a large difference is the minimum mesh size. I set this to the skin_depth for the surface layer, and (fiber_main_radius-skin_depth) for the bulk. fiber_main_radius-skin_depth should be the radius of the bulk domain, and the skin_depth characterizes the smallest length scale in the surface layers. I have some limited ability to tweak the minimum mesh sizes when the surface layer is comparable in size to the fiber_main_radius (so the surface layer is comparable to the entire fiber radius), but it seems to be best to keep the mesh this fine when the surface layer becomes small.
  2. Mesh the main fiber (bulk and surface separately) with a swept mesh
    1. I create a distribution with a fixed number of elements, at ceil(fiber_main_length/fiber_stock_radius/2). This is somewhat arbitrary--the stock has the largest radial length scale, so I figured I'd divide up the main fiber into units that tall. A better thing would be to know how high a mode we are interested in studying, and break up the fiber into enough pieces to observe that mode. Seems fine for now, might want this distribution to be a bit coarser though.
  3. Mesh the lower tapers (bulk and surface separately) with a free tetrahedral mesh
    1. Use the same size settings as on the upper tapers
  4. Mesh the thick sections (bulk and surface separately) with a swept mesh
    1. The distribution uses a fixed number of ceil(fiber_thick_length/fiber_stock_radius/2) elements. Again perhaps this can be coarser; it also doesn't attempt to make a finer mesh at the thermoelastic cancellation region.
  5. Mesh the necks (bulk and surface separately) with a free tetrahedral mesh.
    1. I use an extremely coarse mesh with the minimum mesh element size set to fiber_thick_radius-skin_depth for the bulk; for the surface it is an extra coarse mesh instead, because the extremely coarse mesh gave low quality mesh elements. I'm not sure why this is, I can't see much difference and the problem only seems to happen to one of the 8 neck sections (why not in all sections?). The problem only arises when the skin depth is less than 20um, for the other parameters at the nominal aLIGO values.
  6. Mesh the stocks (bulk and surface separately) with a swept mesh
    1. Distribution is again ceil(fiber_stock_length/fiber_stock_radius/2), resulting in 2 vertical divisions of the stock.
  7. Mesh the horns with a free tetrahedral mesh
    1. Size is an extremely coarse mesh, where the minimum element size is set to the skin_depth (because the horn sees the boundary of the stock surface, so its smallest adjacent element can have a scale down to the skin_depth), and maximum growth rate is increased to 9 (any higher results in low quality mesh elements; I set it high because most of the horn does not need to be meshed as finely as the part directly in contact with the fiber stock).

Note on the skin depth: I defined the thickness of the surface layer by the parameter skin_depth. Since we are interested in how the energy in the surface layer changes with the radius of the fiber, and expect that the surface depth doesn't change much with fiber radius (a very thick fiber will have a few micron surface layer; so will a fiber half that diameter). I managed to get the mesh working with a 15um surface layer, but was having trouble getting a 10um layer. I wasn't completely sure how small a surface layer would be necessary, but for a test mass 1/100 the size of the aLIGO masses, the main part of the fiber would have a radius of 20um, so if we want to study the surface layer for masses down to that size I figure the skin depth should be at most around 10-15um. It would be better to be motivated by the actual scale of the physics going on at the surface--how deep to micro cracks and other lossy imperfections go?


I'm running the frequency study on a small number (2) of frequencies in each decade from 60Hz to 10kHz (so there should be 5-8 total frequencies in the study). I started it at 4:25pm on my local machine, and it hasn't gotten very far in 30 minutes, so I may abort the study and try to make the mesh coarser--especially the distribution settings, which are easy to change.

  119   Mon Dec 4 17:42:53 2017 gautamMechanicsPonderSqueezeFEA on optimus

We could run the simulations on the 32 core machine in the 40m lab (optimus)? I think Mariia was running some of her studies on optimus, and even though we had some problems with the licensing initially, I think she resolved these and has detailed the procedure in her elogs...




I'm running the frequency study on a small number (2) of frequencies in each decade from 60Hz to 10kHz (so there should be 5-8 total frequencies in the study). I started it at 4:25pm on my local machine, and it hasn't gotten very far in 30 minutes, so I may abort the study and try to make the mesh coarser--especially the distribution settings, which are easy to change.


  120   Mon Dec 4 19:49:32 2017 gautamMechanicsPonderSqueezeFEA on optimus

It's a good idea, I'll check out her elogs and get it started tonight.

I found that I had the relative tolerance set too low (0.001, while the iterations were not converging further than 0.02 or so); I changed it to 0.1, which let me run over a few modes relatively quickly once I reduced the number of sections on the main part of the fiber to 10. This is not sufficient--at 600Hz the fiber looks completely jagged because the mesh is not fine enough, so using optimus will be necessary. 


We could run the simulations on the 32 core machine in the 40m lab (optimus)? I think Mariia was running some of her studies on optimus, and even though we had some problems with the licensing initially, I think she resolved these and has detailed the procedure in her elogs...


  121   Tue Dec 5 10:50:54 2017 aaronMechanicsPonderSqueezeFEA on optimus

I had some trouble running this on optimus.

Optimus has COMSOL 5.1 installed, but I made these files in 5.3. I downloaded the comsol 5.3 dvd.iso file last night, but on install I'm now getting the error "No locks available." I wasn't sure if this is a file permissions issue (sometimes the file has been 'locked' when it is saved and I open it in the GUI), an svn issue (most of the information I find online is from people running into some problem with lockd or their NFS), or a licensing issue (I don't think this is likely, COMSOL on my laptop shows more licenses available).

Has anyone seen this? Do I need to do something else with /cvs after install?

  122   Tue Dec 5 19:50:47 2017 aaronMechanicsPonderSqueezeFEA on optimus

Gautam advised me against trying to install version 5.3, lest it break version 5.1--I had already gone through the install, but looking at the install manual it says it shouldn't affect previous installs except that the default behavior when double clicking .mph files will always choose the latest version of COMSOL. Since we mostly run on the command line we should be fine. That said I haven't tested files with COMSOL 5.1.

Zach pointed me to sandbox1.ligo.caltech.edu at the lunch meeting, as well as these notes from Rana about running comsol on a remote server. I couldn't run the file myself on sandbox1 because I don't yet have a home directory there, but I asked Larry if he could set one up for me so I can use the clusters. Gautam helped me run them on sandbox1 by having me scp the file onto the shared 40m drive, then he moved it in to his home directory on sandbox1 and ran it. A version of the model asking for an analysis at 60Hz and 600Hz ran in 10-20 min, and looked good (I was able to scp the output to my laptop and open it in the gui, though I have a script not quite to the point where Matlab can do this for me, it's not ready yet and anyway I wanted to directly see that the output was normal). I modified the study to take 100 steps between 60Hz and 5kHz, and Gautam has now started that run, which if it scales linearly (hopefully better than linear, since it won't have to remesh and etc) will take about 8-16 hours.

Thank you Gautam for the extended mattermost session helping me run these!

  123   Tue Dec 12 11:50:12 2017 aaronMechanicsPonderSqueezeFEA on optimus

Simulation results

First run

Gautam ran the COMSOL model on sandbox1 since we were trying to run it before I had a home directory there to run from my login. Since that first run, Larry set me up on sandbox1 so I was able to run a few more times with some tweaked model parameters.
Here are the results from the first run, which uses the nominal aLIGO test mass parameters:

I don't think I was expecting such a regular pattern here. Are the modes really that closely and regularly spaced? This might also be indicating some problem with my meshing, I could imagine a few scenarios. To go from this chart to something that looks like the suspension thermal noise plot, I'll have to scale this by the frequency-dependent loss angle and a strain sensitivity TF probably? I need to remind myself for another few minutes on this, maybe chat about it.

Relevant properties of the file that might need to be tweaked:

  • F_load
    • The applied force may have been resulting in large displacements of the test mass (and thus large curvature in the fibers). Since the model contains geometric nonlinearities (I think it has to, no?), large displacements may not be able to be linearly extrapolated back to the small displacements we expect. Since I am running a frequency domain study, COMSOL expects a load force, which means I am specifying a force rather than a displacement. In future runs, I wanted to reduce the displacement by scaling down the force... I'll discuss my first attempt at this later.
  • skin_depth
    • Gabriele mentioned that when he models surface losses for wafers he does not explicitly mesh a boundary layer, but rather asks COMSOL for a boundary integral (so just the 2D integral on the outer surface of the wafer), and then presumably makes some assumption about the thickness of this layer to go from J/m to J if need be. In contrast, my suspension thermal noise model defines the 'surface' of the fiber as the 15um outer layer, and I explicitly mesh that surface volume and do a 3D (volume) integral over the surface domain.
    • Using a 2D integral would significantly simplify the model and probably run faster and result in fewer bugs when the scale of the geometry changes the necessary fineness of the mesh. However, I am a bit uncertain about whether this is what we want. At least in my understanding, we are interested in asking about what happens when the surface layer depth becomes comparable to the radius of the fiber. Since the 2D integral would always represent an infinitesimal volume, and the geometry of an extended (deep) surface layer would differ significantly from that of an infinitesimal shell, so I am concerned that the strain energy density would vary significantly with the radial postition in the fiber. Nonetheless, even the mesh I am using now has only a few (2-4) mesh elements along the radial direction, so I'm not sure I'm doing much better even with the additional computation time. Therefore, in future runs I'd like to try Gabriele's suggestion.
  • Frequencies
    • I was using 50Hz spacing on the frequencies from 60Hz to 5kHz. I haven't been very systematic about this, but I'm getting some convergence issues going to lower frequencies--maybe by taking the suggestion for eliminating the skin_depth I can make a finer mesh and go to lower frequencies. This frequency sweep is too coarse to find well-defined resonances, but they are suggested in the plot below.

More recent runs

I wanted to automate this loop over mass parameters in a matlab script, so I set up the Livelink handshake so Matlab would send the model to sandbox1 for solving, then MATLAB on my machine would work with the solved model to extract results. I realized later during running that this might not be optimal, since it will require me to keep the connection to the remote COMSOL server during the entire run, which is A. annoying and B. risky because these might take many hours to run and the connection can easily be severed, wrecking the job. I don't really have a workaround for this, so my current plan is to continue logging on to the remote server and running individual COMSOL files. As I'll discuss, this is probably necessary for now anyway since I ran in to some problems running these models, and might want to tweak the models on my local GUI before running them over a large (frequency) parameter space on sandbox1. 

aLIGO parameters, but decrease F_load

Based on the plots generated from the first run, I estimated that the TM displacement was comparable to the TM thickness; just as a first pass I figured 'small displacement' could be easily defined as 'displacements smaller than the thickness of the fiber' or maybe 'smaller than the thickness of the surface layer'. If the displacement is directly proportional to the force, this meant I wanted to scale the previous F_load by 1e-5, which I did. I wanted to just see what kinds of displacements I would get, so I asked to run the model only at 300Hz. After more than 45 min of running, the server threw an error that it couldn't find my STEP file for the horns, which were in a local directory but not in the remote (server's) directory.

I thought this was an odd error for two reasons. First, I had originally not even had the STEP in my local directory (it only needed to load once and then could be used many times for a given model in the GUI), and I was getting an error within a couple minutes of starting the job that it could not find the file. Adding the file to my local directory seemed to solve this problem, as the model was running for much longer. The error I got after it finally crashed was not the same error as before, but was still an error in loading the file, which makes me a bit confused about where it is actually looking for this file or when exactly the loading process happens. To solve this, I have copied the STEP to the remote directory and will run again with the import pointing to that remote file, which I suspect will solve the problem.

aLIGO with the mass scaled by 0.1, also decrease F_load by 1e-5*0.1

Since the first run seemed to mostly work up to the outstanding questions mentioned above, I decided to also run the model in batch mode directly from the sandbox1 command line, just as Gautam had. That is, I ssh on to sandbox1 and run the command

$ /usr/local/comsol53/multiphysics/bin/glnxa64/comsol batch -inputfile [inputname].mph -outputfile [outputname].mph

For this run, I scaled the mass of the model by 0.1, so we now have a 4kg TM. Most lengths of the model then scale by 0.1^(1/3), but those related to the radius of the fibers (and the bend point of the fibers) scale by 0.1^(1/2) because we want to maintain a constaint stress in the fiber. The main length of the fiber remained the same so the modes would be in about the same place. I document these more thoroughly in the matlab script, which I should upload to the git. I scale the force by 1e-5 as above (same back of the envelope calculation), with an additional factor of 0.1 to account for the lower mass.

The model ran in to some convergence issues after a few frequencies. I could solve this by changing the relative tolerance, but I think I will most likely instead pursue Gabriele's suggestion above and try to refine the mesh to improve the convergence. The solver nodes of the COMSOL models are still a bit mysterious to me--I don't really know much about when different methods or measures of convergence are appropriate. Probably playing with these could both improve the accuracy and efficiency of the model... but it seems like a hefty undertaking. Might be worht the long term payoff though.

The first few frequencies did converge, but as I was extracting the resuls ancha, the COMSOL license server, went down so I'll have to extract them later.



  124   Thu Jan 18 21:13:59 2018 aaronOpticsPonderSqueezemodifications to Gautam's 40m finesse model

I made a copy of Gautam's 40m model to add the unstable filter cavity for the ponderomotive squeezing project. I wanted to make a more explanatory record of the changes I've made because I think some of them might be necessary for other scripts using gautam's original model, but I have not implemented them in that file (also just for my own paper trail).


  • swapped the role of nXBS and nYBS; before I think it was sending the reflected beam at the main BS to the X arm, and the transmitted beam to the Y arm
  • I kept nPOY, but I am a bit confused by it--this is the beam returning from the x-arm that is transmitted in to the BS, but it isn't followed out of the BS; rather it seems this pick off beam is detected inside the BS substrate, which is odd. Anyway we aren't using it for now.
  • Changed some labels to distinguish between the beamsplitter already in the IFO (IBS) and the BS used in the quantum phase compensator (QBS)
  • Added a quantum phase compensator cavity, consisting of QP1 and QP2, as well as a mirror (QP0) to direct light transmitted from the QPC through QBS back to QBS
  125   Mon Jan 22 21:13:25 2018 aaronMechanicsPonderSqueezetips from Shoaib

I talked with Shoaib about some changes I could make to the FEA model to improve convergence and reduce memory usage. Summary:

  • use a hex mesh rather than tetrahedral
  • Use more structured meshes. In particular, I can make an angled swept the mesh in the tapered portions rather than using a free mesh in these regions, defining the mesh only on one boundary
  • Use a nonconformal mesh, so adjacent domains do not need to have matching meshes. This could allow transitions to coarser meshes as the fiber becomes thicker or contacts the horn
  • try using curved elements so the curvature isn't just approximated by the number of regular mesh elements
  • Might try scaling the model uniformly by some factor (100, 1000), which could avoid machine precision issues

I'll get these implemented this week and see if the computation goes through.

  126   Mon Jan 29 23:02:13 2018 aaronMechanicsPonderSqueezetips from Shoaib

I started implemented some of these changes:

  • Started the mesh with a boundary free quad mesh on the interface between the upper tapers and the main part of the fiber. I used the following size setting
    • Maximum element size is fiber_taper_length, which I felt was a good characteristic maximum because it wouldn't make sense to have radial elements larger than the length of the taper itself. This setting does not limit the mesh (elements are much smaller than the maximum)
    • Minimum element size: skin_depth/10, where I use the thickness of the surface layer as the characteristic length, and allow a mesh with elements substantially smaller than this characteristic length.
    • Maximum element growth rate I set at 8, which from some trial and error isn't strongly affecting the mesh as long as it isn't brought much lower than this (so the mesh is allowed to get coarse relatively quickly, though other settings limit this)
    • Curvature factor is 0.7, and actually does affect the mesh strongly; for now value seems to give a 'pretty' (symmetric to the eye) mesh.
    • The resolution of narrow regions is set to 5, where this value again strongly affects the mesh and this value was chosen because it looks 'pretty'
    • Note that in contrast to the previous way I had defined the mesh, I now am defining the surface and bulk of the mesh in the same step, which seems to help these two regions match up. Shoaib had mentioned using a nonconformal mesh, which I may end up implementing in a later update.
  • Instead of doing a free mesh in each non-cylindrical region, I continued with a swept mesh along the length of the fiber (still sweeping in sections, though I'm not sure this is necessary)
  • I also slightly increased the number of mesh elements along the length of the fibers (ie, used more elements in each section of the mesh sweeping).
  • In this model, I still have a free tet mesh on the horn and test mass, since those seemed a bit more involved to move over to a hex mesh (there is no free hex mesh in COMSOL that I could see right away, and I'm not sure that the horn can be meshed with a swept mesh due to its irregularity. I'll look in to this further, but I had no immediate solution for making a hex mesh in the horn) and anyway they are much coarser than the fibers so I don't expect them to cause much trouble.

These changes were fine with a 10um mesh, but ended up with much too fine a mesh (~80000 boundary mesh elements in the initial mesh between the taper and main fiber) due to meshing the surface and boundary in a single stage in the first step. I separate them out to get a coarser mesh in the bulk, and also make the resolution a bit coarser.

  127   Sat Mar 17 15:27:48 2018 ranaGeneralGeneralfile size >> small

When saving your COMSOL files do these two things to make the files much smaller (good for saving in version control and sharing):

  1. File -> Compact History
  2. Preferences -> Files -> Optimize for File Size (not speed)
  128   Mon Aug 20 15:44:56 2018 ranaGeneralGeneralfile size >> small


  1. click 'Clear Mesh' under the mesh menu
  2. 'Clear Solutions' under the Study menu

In this way the file sizes will be ~100 kB instead of 10's of MB.


When saving your COMSOL files do these two things to make the files much smaller (good for saving in version control and sharing):

  1. File -> Compact History
  2. Preferences -> Files -> Optimize for File Size (not speed)


  129   Sun Aug 26 16:42:54 2018 ranaMechanicsAnalysisTest Mass Thermal Noise: Consistency Checks

For the Voyager test masses, we have been considering a barrel coating to increase the IR emissivity to increase the radiative cooling power. We also seek to estimate the added Brownian thermal noise that arises from this.

Dmitry Kopstov (from MSU) made a baseline model for this which we have been modifying. The latest is in the CryogenicLIGO git repo in the FEA directory as ETM_NASAbarrel.mph.

Comparison with Analytic Estimates:


Convergence Tests:




  130   Sun Aug 26 19:21:27 2018 ranaGeneralVoyagerVoyager ITM: Radiative cooling with cold shield and cold CP

this is a time dependent model of the previous steady-state one

  • Cold Shield and CP held at a constant 60 K
  • 3 W heat input to the ITM from the main laser beam
  • radiative cooling to the shield
  • ITM barrel emissivity = 0.9
  • ITM HR/AR emissivity = 0.5/0.5

So the cooldown time w/o a heat switch is ~4 days. Since this is less than the usual pumpdown time required to open the gate valves on the beamtubes, perhaps no heatswitch or in-vac cryogens are required.

Attachment 1: ITM-Cooldown.pdf
Attachment 2: CoolDown.webm
  131   Thu Feb 14 12:38:51 2019 Ching PinMechanics comsol modelling

So I did a simple comsol model of laser heating of a silicon disk, with only radiation, to see the temperature variation at steady state, which could be the limiting factor for high Q at 123 K, due to the thermalelastic effect. 

The model just uses a simple 2 inch disc, at 0.028 cm thick, with the flats not incorporated in yet. 

I had to search for silicon thermal conductivity and heat capacity at low temperatures, settling with k= 800 W/(m K) and C_p= 300 j/(kg K) from refering to papers. Will check LIGO documents for more accurate versions.

I put an arbitary boundary condition of constant temperature of 123 K on a spot .2 mm in radius, to simulate a beam.

Other arbitary values include 77 K for ambient and a surface emissivity of 0.5.

The laser is off center, because that it where the laser will enter the current setup.

We can see that the power required is .02 W, which seems reasonable.

The model is consistent with the analytic model I made with the laser beam at the centre of the disc. See last two figures.


I'm still trying to get the time dependence to work, as it is just giving me nonsense right now. 


Some thoughts: beam radius affects the temperature variation quite significantly, with a fat beam (1 mm radius) having half the temperature variation as a beam of .2 mm radius

I think the halo is just a trick of the eye, but I could be wrong. 


Things to do: 

Find the time scale of the system, as we want to modulate the laser to adjust the temperature, which will then be run though the mode ringer to measure Q to find the zero crossing

Change the heat source to be an actual laser

Add in the solid mechanics part

Add in the sapphire lens underneath

Attachment 1: Screenshot_from_2019-02-14_12-47-11.png
Attachment 2: Screenshot_from_2019-02-14_15-07-40.png
Attachment 3: Screenshot_from_2019-02-14_15-41-41.png
Attachment 4: graph.pdf
  132   Fri Feb 15 21:05:31 2019 Ching PinMechanics comsol modelling


So I got the time dependence to work, but I'm not sure what went wrong in the first time anyways. I'll trying to get a sense of how long it takes for the temerature to semi-equlibrate, and coming to grips with comsol as a whole. There seems to be some inaccuracies when the timing increases, so I'm having to figure out how to increase accuracy without drastically increasing compute time. On the bright side, I switched the model to heating via deposited beam, for a more accurate model.


Attached is comsol's handling of a deposited beam modulated sinusoidally with a frequency of 0.1 Hz and screwing up badly.  Y axis is the average surface tempurature across the whole disc.


Attachment 1: Screenshot_from_2019-02-15_21-40-01.png
  133   Tue Feb 19 19:52:53 2019 Ching PinMechanics comsol modelling

The time step response to heating via laser (22.5 mW) is given in the attached picture, for 2 starting temperatures, 122.5 K and 122.8 K. We see that it takes fairly long to equlibrate, with a time constant of about 500 s, and is consistent across both temps. The y axis is average temperature across the surface of the disc, and the x axis is time. I believe that the heat distribution profile would be very similar with time, simply because of how much faster conduction is compared to radiation

Attachment 1: Screenshot_from_2019-02-19_19-52-10.png
  134   Fri Mar 1 19:33:40 2019 Ching PinMechanics comsol modelling

I've changed the heating to be from two heat sources, to better model the situation with a heater and a laser. The heater deposits 22 mW, with the laser deposting .5 mW. The overall temperature distribution is smaller then before, as expected, but doesn't really change much. The heater is simulated with a deposited beam with a gassian beam profile with a standard deviation (s.d.) of 8 mm. The laser to the size has a .3 mm s.d. for contrast. I learned that while the deposited beam power doesn't care for emisitivity, it cares about the area the beam is incident with, so for example, if you increase the s.d. too much, you get less power deposited then what you enter.


 I've also got modes to appear using solid mechanics, and I'm trying to see if there is a good way to get the frequency dependence with temperature nicely simulated. Changing the parameters of the simulation does give me my different frequencies, but I trying to find a way to do that over the time evolution of the model. I also got to check if the frequency shift is in line with what we are measuring. 

Attachment 1: Screenshot_from_2019-03-01_19-35-32.png
Attachment 2: Screenshot_from_2019-03-01_19-36-02.png
Attachment 3: Screenshot_from_2019-03-01_19-46-25.png
  135   Mon Mar 4 17:22:07 2019 Ching PinMechanics comsol modelling

I've updated the material properties to vary with temperature, mainly in the range of 90-140 K. Using the parametric sweep function to vary the input power of the heater, we get the eigenfreqencies' dependence on temperature to show up. The fractional dependence of 1.3e-5 /K around 123 K matches with what Aaron calculated in this elog entry, which is always a good sign that nothing is going horribly wrong. I've also added the flats to the silicon disc, for better accuracy. See the screenshots below showing the frequency shift with temperature.

Attachment 1: Screenshot_from_2019-03-04_19-13-28.png
Attachment 2: Screenshot_from_2019-03-04_19-14-41.png
Attachment 3: Screenshot_from_2019-03-04_19-15-37.png
Attachment 4: Screenshot_from_2019-03-04_19-15-56.png
  136   Wed Mar 6 09:51:18 2019 Ching PinMechanics comsol modelling

So I tried adding the sapphire lens to the comsol model, and I am having teething issues. I can't seem to get the solver to converge, but I'm working on it.

Attachment 1: Screenshot_from_2019-03-06_09-31-24.png
  137   Thu Mar 7 10:10:37 2019 Ching PinMechanics comsol modelling

There are no issues with the thermal side of the modeling, the issue seems to be with the structural mechanics side. I'm not sure what I'm doing wrong though, but it just isn't converging. In any case, seeing that this is my last day here, I'll just point out that the version without the lens is saved in cvs/cds/caltech/users/cp/current working model.mph, while the model with the lens is saved in the same folder under the file name testing with lens.mph, using optimus. There is also a small file edition of current working model, with a file name that is self evident. I'll leave it to aaron to upload that to git.


In any case, let me just put down some documentation and thoughts on this model: The physical parameters on the model are generally what we do know of silicon at these temperatures, with the exception of emissitivity, which was randomly given a parameter of .5. The model is currently absorbing 22 mW from the heater and .5 mW from the laser, which implies that the heater should be able to have 45 mW incident on the disc, which would in turn suggest that you would want it to at least dissapate 100 mW to account for the lack of direction from radiation. Because comsol's deposit beam power function does not care for emissitivity, it must be modified in tandem with it.

Attachment 1: Screenshot_from_2019-03-07_10-10-47.png
  138   Tue May 12 14:16:28 2020 KojiGeneralGeneralFEA tutorial resources

cf. Forwarded email from Stephen

1) Tuesday Demo - Basics of FEA Meshing G2000696
2) CIT SYS User Guides, How to Use the FEA User Group T2000295
3) CIT SYS User Guides, How to Use the ANSYS Learning Hub T2000236

Fabrice's SAMS piezo actuator second prototype E1900383

  139   Tue Aug 11 11:16:29 2020 aaronGeneralConfigurationCOMSOL with Matlab without display

When running comsol with matlab interface on sandbox1, it is usually most convenient to ssh with screen forwarding (eg '-CY') and launch COMSOL with matlab by following the instructions in the livelink manual.

Sometimes, it is necessary to run COMSOL without any display available. In that case, the Instructions in the manual are a little unclear. Here are the detailed steps that let me run my script '/home/amarkowi/metamaterials/run_spiral.m' with no screen forwarding.

1. ssh onto sandbox1 by entering the following at your laptop command prompt
Aaron’s-latpop $ ssh aaron.markowitz@sandbox1.ligo.caltech.edu
                           password: [enter sandbox1 credentials]
2. start a tmux session for starting the COMSOL server
aaron.markowitz@sandbox1:~$ tmux
3. start a comsol server from the tmux session
aaron.markowitz@sandbox1:~$ comsol54 mphserver -login force -port 2020
                                                    Username: whoever
                                                    Password: whatever
                                                    Confirm password: whatever
4. detach the tmux session by pressing ‘ctrl-b’ followed by ‘d’
5. (optionally, you can start a new tmux session for your matlab work by running tmux again at your main sandbox prompt)
6. Start matlab by running
>> matlab -nodesktop -mlnosplash
6. Add the comsol directory to the matlab path by running at the matlab prompt
>> addpath(‘/localhome/comsol54/multiphysics/mli/‘)
6. Start the matlab with comsol interface by running the following at the matlab prompt
>>   mphstart(’sandbox1.ligo.caltech.edu’, 2020, ‘whoever’, ‘whatever’)
7. change into the directory containing the script, and run it
>> cd /home/amarkowi/metamaterials
>> run_spiral
  140   Tue Aug 11 16:35:07 2020 aaronGeneralConfigurationCOMSOL: remote server w/ matlab

To run COMSOL on sandbox1 with no graphical Interface, here are the steps that worked for me (Tue Aug 11 16:35:51 2020) from a mac on the Caltech VPN.

1. ssh onto sandbox1 with screen forwarding (-Y). Make sure you have a compatible version of XQuartz or a substitute. -C specifies data compression, which may be useful on slow connections
Aaron’s-laptop $ ssh -CY aaron.markowitz@sandbox1.ligo.caltech.edu
                           password: [enter sandbox1 credentials]
2. Launch Matlab with COMSOL 5.4, specifying no graphical interface, by running
aaron.markowitz comsol54 mphserver matlab -nodesktop -mlnosplash script_name’

3. If there is still a splash screen from the COMSOL server, you will have to specify nosplash by adding the following line to your .bash_profile (in your home directory)

export COMSOL_MATLAB_INIT=’matlab -nosplash’

4. You can run whatever comsol script you need. Make sure that in your script you import the comsol functions by calling the following
import com.comsol.model.*
import com.comsol.model.util.*
ELOG V3.1.3-