ID 
Date 
Author 
Type 
Category 
Subject 
1

Thu Dec 13 18:47:18 2012 
rana  General  General  COMSOL: who's using up all the licenses?  When you want to find out who's using up all the licenses, you can run lmstat a do find out.
Specifically, with Mac COMSOL, I do:
> cd /Applications/COMSOL43a/license
> maci64/lmstat a c license.dat
Users of COMSOL: (Total of 5 licenses issued; Total of 1 license in use)
"COMSOL" v4.3, vendor: LMCOMSOL
floating license
dmassey c22042.local (v4.3) (ancha/1718 1074), start Thu 12/13 18:26
etc.

70

Thu Jul 25 11:36:17 2013 
rana  Optics  General  TR results for different dimensions 
PDF please instead of EPS or BMP or JFIF or TARGA or GIF or ascii art. 
101

Sat Sep 5 15:17:41 2015 
rana  General  Configuration  FEA 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 
rana  General  Configuration  COMSOL: remote server w/ matlab  This summarizes how to get the remote comsol server to run. COMSOL 5.1.0.234 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

109

Sun May 7 18:22:35 2017 
rana  General  Voyager  Voyager 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:
 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.
 Assume 3 W of heating from main laser beam onto ITM HR face.
 Emissivity of ITM barrel is 0.95. Emissivity of HR* and AR faces is 0.5.
 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.
 Emissivity of the CP is 0.9.
 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/ranaadhikari/CryogenicLIGO/blob/master/FEA/ITMColdShieldCP.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 550 micron band. 
Attachment 1: ITMColdShieldCP.png


112

Wed Jul 26 20:14:46 2017 
rana  General  Configuration  Running 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 ? 
114

Mon Jul 31 22:18:57 2017 
rana  General  General  using 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;
saveProfile(myCluster);
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_20170731_at_10.11.35_PM.png


127

Sat Mar 17 15:27:48 2018 
rana  General  General  file 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):
 File > Compact History
 Preferences > Files > Optimize for File Size (not speed)

128

Mon Aug 20 15:44:56 2018 
rana  General  General  file size >> small  Also,
 click 'Clear Mesh' under the mesh menu
 'Clear Solutions' under the Study menu
In this way the file sizes will be ~100 kB instead of 10's of MB.
Quote: 
When saving your COMSOL files do these two things to make the files much smaller (good for saving in version control and sharing):
 File > Compact History
 Preferences > Files > Optimize for File Size (not speed)


129

Sun Aug 26 16:42:54 2018 
rana  Mechanics  Analysis  Test 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 
rana  General  Voyager  Voyager ITM: Radiative cooling with cold shield and cold CP  this is a time dependent model of the previous steadystate 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 invac cryogens are required. 
Attachment 1: ITMCooldown.pdf


Attachment 2: CoolDown.webm

94

Fri Jul 11 10:58:18 2014 
not Koji  Optics   Heinert Model TR Noise Verification 
Quote: 
How close are these FEA calculations with the analytical values?
Can you plot residual too? (Put analytical values, 1D, abs(1D  analytical), 3D, and abs(3D  analytical) all together.)

Here are the plots with their fractional residuals: abs(S_COMSOL  S_analytical)/S_analytical 
Attachment 1: heinert_analyticalTest_residual_threeD.eps


Attachment 2: heinert_analyticTest_residual_oneD.eps


119

Mon Dec 4 17:42:53 2017 
gautam  Mechanics  PonderSqueeze  FEA 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...
Quote: 
Study
I'm running the frequency study on a small number (2) of frequencies in each decade from 60Hz to 10kHz (so there should be 58 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 coarserespecially the distribution settings, which are easy to change.


120

Mon Dec 4 19:49:32 2017 
gautam  Mechanics  PonderSqueeze  FEA 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 sufficientat 600Hz the fiber looks completely jagged because the mesh is not fine enough, so using optimus will be necessary.
Quote: 
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...


118

Mon Dec 4 16:27:13 2017 
aaron  Mechanics  PonderSqueeze   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:
 Mesh the upper tapers (bulk and surface separately) with a free tetrahedral mesh
 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_radiusskin_depth) for the bulk. fiber_main_radiusskin_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.
 Mesh the main fiber (bulk and surface separately) with a swept mesh
 I create a distribution with a fixed number of elements, at ceil(fiber_main_length/fiber_stock_radius/2). This is somewhat arbitrarythe 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.
 Mesh the lower tapers (bulk and surface separately) with a free tetrahedral mesh
 Use the same size settings as on the upper tapers
 Mesh the thick sections (bulk and surface separately) with a swept mesh
 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.
 Mesh the necks (bulk and surface separately) with a free tetrahedral mesh.
 I use an extremely coarse mesh with the minimum mesh element size set to fiber_thick_radiusskin_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.
 Mesh the stocks (bulk and surface separately) with a swept mesh
 Distribution is again ceil(fiber_stock_length/fiber_stock_radius/2), resulting in 2 vertical divisions of the stock.
 Mesh the horns with a free tetrahedral mesh
 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 1015um. It would be better to be motivated by the actual scale of the physics going on at the surfacehow deep to micro cracks and other lossy imperfections go?
Study
I'm running the frequency study on a small number (2) of frequencies in each decade from 60Hz to 10kHz (so there should be 58 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 coarserespecially the distribution settings, which are easy to change. 
121

Tue Dec 5 10:50:54 2017 
aaron  Mechanics  PonderSqueeze  FEA 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 
aaron  Mechanics  PonderSqueeze  FEA on optimus  Gautam advised me against trying to install version 5.3, lest it break version 5.1I 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 1020 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 816 hours.
Thank you Gautam for the extended mattermost session helping me run these! 
123

Tue Dec 12 11:50:12 2017 
aaron  Mechanics  PonderSqueeze  FEA 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 frequencydependent 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 (24) 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 frequenciesmaybe 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 welldefined 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 1e5, 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 1e5*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 1e5 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 meI 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.
NOTE TO SELF: WHAT'S WITH THE INLINE IMAGE QUALITY? DON't USE JPG !!!! 
124

Thu Jan 18 21:13:59 2018 
aaron  Optics  PonderSqueeze  modifications 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).
Changes:
 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 itthis is the beam returning from the xarm 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 
aaron  Mechanics  PonderSqueeze  tips 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 
aaron  Mechanics  PonderSqueeze  tips 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 noncylindrical 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. 
139

Tue Aug 11 11:16:29 2020 
aaron  General  Configuration  COMSOL 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
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 ‘ctrlb’ 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
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 
aaron  General  Configuration  COMSOL: 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
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.*

83

Sun Jun 22 23:44:56 2014 
Sam Moore  Optics   Going through Heinert's 'TR noise of cylindrical test masses' paper  At this point, my are goals are to 1) convert the timedependent heat equation into stationary, complex form, 2) use the Levin approach to calculate the TR noise given this stationary PDE, and 3) verify the results in COMSOL
I have looked at the Heinert paper and converted the timedependent partial differential Heat equation to a stationary, complex one. I did this by assuming a temperature distribution of the form T(\vec{r},t) = T_0 ( \vec{r} ) e^{i \omega t }, where \omega is the frequency of oscillation of the input heat field: q( \vec{r} , t) = q( \vec{r} ) e^{i \omega t}. Hence, I am assuming the steadystate solution of the temperature field. From this ansatz, the PDE becomes
C_p T(\vec{r}) + \frac{ i \kappa}{ \omega } \nabla^2 T ( \vec{r} ) = q ( \vec{ r} ).
This complex conversion already seems to have been done in the paper, since the stationary solution of the form
T(r, z) = \sum_{n = 0}^{\infty} \sum_{m = 0}^{ \infty} T_{n m} J_0 (k_n r) \cos ( \ell_m z) is assumed.
k_n and \ell_m are obtained from the adiabatic boundary conditions. Moreover, if I plug this form for T(r, z) into the stationary PDE, I get Heinert's eq. 12. ( although I'm not quite sure how to take the second derivative of a zerothorder bessel function).
I've started to try out the cylindrical geometry in COMSOL, using the structural mechanics and heat transfer modules. At this point, I'm not quite sure how to specify the PDE that I'm interested in, nor am I sure about how to specify the boundary conditions.

84

Mon Jun 23 11:40:17 2014 
Sam Moore  Optics   Going through Heinert's 'TR noise of cylindrical test masses' paper 
Quote: 
At this point, my are goals are to 1) convert the timedependent heat equation into stationary, complex form, 2) use the Levin approach to calculate the TR noise given this stationary PDE, and 3) verify the results in COMSOL
I have looked at the Heinert paper and converted the timedependent partial differential Heat equation to a stationary, complex one. I did this by assuming a temperature distribution of the form T(\vec{r},t) = T_0 ( \vec{r} ) e^{i \omega t }, where \omega is the frequency of oscillation of the input heat field: q( \vec{r} , t) = q( \vec{r} ) e^{i \omega t}. Hence, I am assuming the steadystate solution of the temperature field. From this ansatz, the PDE becomes
C_p T(\vec{r}) + \frac{ i \kappa}{ \omega } \nabla^2 T ( \vec{r} ) = q ( \vec{ r} ).
This complex conversion already seems to have been done in the paper, since the stationary solution of the form
T(r, z) = \sum_{n = 0}^{\infty} \sum_{m = 0}^{ \infty} T_{n m} J_0 (k_n r) \cos ( \ell_m z) is assumed.
k_n and \ell_m are obtained from the adiabatic boundary conditions. Moreover, if I plug this form for T(r, z) into the stationary PDE, I get Heinert's eq. 12. ( although I'm not quite sure how to take the second derivative of a zerothorder bessel function).
I've started to try out the cylindrical geometry in COMSOL, using the structural mechanics and heat transfer modules. At this point, I'm not quite sure how to specify the PDE that I'm interested in, nor am I sure about how to specify the boundary conditions.

I carried out the calculations for Heinert's simple model in greater detail and was able to obtain equation 12 (with the exception of a plus sign instead of a minus sign in the denominator; I guess the Fourier transform method gives a minus sign. In the end, that doesn't matter, since the modulus square yields the same result in the denominator.) I obtained the same spectral density S_z (\omega), with the exception of a missing factor of R^2. I don't know where this R^2 went, or why it is that the spectral density is associated with the extrinsic variable z (instead of r, say). It's supposed to be a "homogeneous [noise] readout along the z direction." 
86

Tue Jun 24 14:35:42 2014 
Sam Moore  Optics  General  Trying to Verify the Heinert Model  
Attachment 1: 06_23_14.pdf


87

Tue Jun 24 17:05:24 2014 
Sam Moore  Optics  General  Trying to Verify the Heinert Model  It does appear that the simplified model is only relevant for the simulations. To quote Heinert: "An efficient computation is only possible for the simple model, as the advanced model would require an element of size more than 10^{6 }." I have run Koji's code that replicates Heinert's figure 3. I have attached the resulting temperature distribution and noise amplitude curve. In the noise amplitude curve, the red line is the analytical result, while the dots are from COMSOL.
The next step is to convert this code to an efficient complex timeindependent solution. As stated before, my main concern here is whether COMSOL actually solves the right equation in the stationary case. 
Attachment 1: temperature.png


Attachment 2: noiseAmplitude_agreement.png


88

Sat Jun 28 21:59:11 2014 
Sam Moore  Optics  General  Difficulty with the COMSOL stationary module; Test Cases  Here, I describe some test cases to see if COMSOL's solutions are agreeing with some simple analytical solutions. Right now, I have two plots showing COMSOL's solution and my analytical solution on separate plots. I will be plotting there difference to see if they really match up.

Attachment 1: 6_27_14.pdf


89

Sun Jun 29 15:37:18 2014 
Sam Moore  Optics  General  Difficulty with the COMSOL stationary module; Test Cases 
Quote: 
Here, I describe some test cases to see if COMSOL's solutions are agreeing with some simple analytical solutions. Right now, I have two plots showing COMSOL's solution and my analytical solution on separate plots. I will be plotting there difference to see if they really match up.

The following document shows the relative difference between these two plots. 
Attachment 1: 6_29_14.pdf


91

Sat Jul 5 13:04:32 2014 
Sam Moore  Optics   Heinert Model TR Noise Verification  Agreement with Heinert's paper for cylindrical TR noise has now been achieved. Using the stationary state assumption to calculate the temperature profile, the computation time was reduced compared to the previous timedependent approach. Here are the plots showing the agreement. I have shown the plots for a 1D axisymmetric model, in addition to a full 3D model in COMSOL. Both give the same result.
What went wrong? In the 1D axisymmetric case, it turns out that COMSOL has the incorrect cylindrical coordinate Laplacian for the coefficient form PDE interface. I corrected for this by expanding the Laplacian with the product rule, giving an extra kappa/r ''convection coefficient'' in the PDE interface. Meanwhile, the 3D case worked from the beginning, since its Laplacian was in cartesian coordinates.
The next goal is to use a stationary state method to calculate TE noise for a test case.

Attachment 1: threeD_cylinderTRnoise.png


Attachment 2: oneDcylinderTRnoise_copy.png


93

Thu Jul 10 16:51:14 2014 
Sam Moore  Optics  General  Duan and Heinert Comparison  (See Plots in attached document)
My plan has been to replicate Duan's numerical thermoconductive (TE + TR) phase noise plot presented in his paper (section V). I am trying to match Duan's analytical expression with Heinert's analytical expression. This requires some rescaling of Heinert's TR displacement noise. (I also needed to divide Heinert's expression by 4 pi to match the Fourier Transform convention. ) Duan's analytical expression for the phase noise is obtained by evaluating the triple integral given in equation 13 of the Duan paper "General Treatment of Thermal Noise in Optical Fibers".
It turns out that an additional factor of 2 multiplies the phase noise because Duan's Fourier Transform only takes into account positive frequencies; there are also negative frequencies that occur in equal amplitude.
This integral was evaluated in Mathematica due to numerical noise in MATLAB's calculation. The calculation in Mathematica was very slow, so the upper limits on the integral were truncated. The following plots in the attached document show the resulting noise profile agreements for two different upper limits.
If the residual for the highest upper limit is considered acceptable for a match between the two plots, then I will use Heinert's plot as a reference when using the COMSOL steadystate method for Duan's numerical case (Heinert's plot runs much faster). 
Attachment 1: 7_10_14.pdf


95

Mon Jul 14 19:09:14 2014 
Sam Moore  Optics  General  Using Heinert's Solution for Duan's Parameters  I have plotted Heinert's analytical solution for TR noise using Duan's parameters. Since TO and TE noise can be found by simply rescaling TR noise, these have been included in the plot as well. The solid curve represents the analytical solution, while the tick marks represent COMSOL's solution. I have used COMSOL for both a 1D axisymmetric and a 3D model. Since Duan's cylinder has a radius of 125 microns, but a length of 1 m, the meshing was difficult for the 3D model. I ended up shortening the length of the cylinder, converting to the actual length when finally calculating the thermal noise. 
Attachment 1: oneD_duanParams_residualepsconvertedto.pdf


Attachment 2: threeD_duanParams_residualepsconvertedto.pdf


96

Mon Jul 14 19:14:31 2014 
Sam Moore  Optics  General  Duan and Heinert Comparison 
Quote: 
(See Plots in attached document)
My plan has been to replicate Duan's numerical thermoconductive (TE + TR) phase noise plot presented in his paper (section V). I am trying to match Duan's analytical expression with Heinert's analytical expression. This requires some rescaling of Heinert's TR displacement noise. (I also needed to divide Heinert's expression by 4 pi to match the Fourier Transform convention. ) Duan's analytical expression for the phase noise is obtained by evaluating the triple integral given in equation 13 of the Duan paper "General Treatment of Thermal Noise in Optical Fibers".
It turns out that an additional factor of 2 multiplies the phase noise because Duan's Fourier Transform only takes into account positive frequencies; there are also negative frequencies that occur in equal amplitude.
This integral was evaluated in Mathematica due to numerical noise in MATLAB's calculation. The calculation in Mathematica was very slow, so the upper limits on the integral were truncated. The following plots in the attached document show the resulting noise profile agreements for two different upper limits.
If the residual for the highest upper limit is considered acceptable for a match between the two plots, then I will use Heinert's plot as a reference when using the COMSOL steadystate method for Duan's numerical case (Heinert's plot runs much faster).

I have now plotted the DuanHeinert comparison for the case of an infinite upper bound. It turns out that the curves differ by a maximum of 10 percent for low frequencies. Such a discrepancy has been attributed to lack of experimental investigation into this regime (according to Duan). For our purposes, such a discrepancy is acceptable. We will therefore use the Heinert curve for subsequent calculations due to its faster computation time.

Attachment 1: duan_heinert_comparisonInfiniteepsconvertedto.pdf


97

Thu Jul 31 20:55:38 2014 
Sam Moore  Optics  General  Finding the Right Meshing for the TIR cavity  In this document, I try to identify I good mesh by comparing the numerical solution from that mesh with my analytical model. Since there are problems with carrying out the analytical calculation, it is still not entirely clear which mesh should be used.

Attachment 1: 7_30_14.pdf


98

Sat Aug 2 00:22:34 2014 
Sam Moore  Optics  General  Finding the Right Meshing for the TIR cavity 
Quote: 
In this document, I try to identify I good mesh by comparing the numerical solution from that mesh with my analytical model. Since there are problems with carrying out the analytical calculation, it is still not entirely clear which mesh should be used.

I have refined the analytical calculation procedure, as outlined in this new document. The procedure indicates that the discrepancy between the analytical and numerical solutions are more likely attributed to meshing inaccuracies. 
Attachment 1: 8_1_14.pdf


106

Tue Jun 28 16:54:23 2016 
Nikhil Mathur  Mechanics  Analysis  Ansys 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

99

Tue Sep 30 11:30:27 2014 
Nic, Dmass, Evan  General  Configuration  Gravity in Comsol  Here is a set of slides by Yoichi Aso on how to handle gravity in Comsol. 
9

Wed Jun 5 16:56:53 2013 
Matt A.  Optics  General  Difference in the Levin and Liu & Thorne results for thermal noise  Good Work Deep,
Can you include the equations that you used to calculated these expressions?
Quote: 
The analytical expressions for thermal noise, as calculated by Liu & Thorne and Levin, was plotted as a function of frequency in a log  log plot using Matlab.
The value of the parameters were used from Levin's paper on thermal noise.
phi = 1*10^{7} (loss angle)
r0 = 1.56*10^{2 }(beam radius)
T = 300 K (temperature)
E0 = 7.18*10^{10 } (Young's modulus)
sigma = 0.16 (Poisson ratio)
The value of S_{x}(100) that given in Levin's paper (8.7*10^{40} m^{2} /Hz) while the LiuThorne value is 9.1*10^{40} m^{2} /Hz.

The Liu Thorne expression being
S = 4*kb*T/(pi*f) * (1  sigma^2) / (2*sqrt(pi)*E*sqrt(2)*r0) * phi
That of Levin goes as
S = 4*kb*T/f * (1  sigma^2) / (pi^3*E*r0) *I*phi
sigma : Poisson ratio
phi : loss angle
r0 : Beam spot radius
E : Young's modulus
I : This is a sum the value of which is approx. 1.873.22 [Eqn.(A6) of Levin  Internal Thermal Noise] 
10

Wed Jun 5 16:59:51 2013 
Matt A.  Optics  General  Matlab code for calculating the zeros of Bessel functions from GWINC  For calculating the Liu and Thorn U_0 + DU, you need to sum over the first N zeros of the firstorder Bessel function. Unfortunately, Matlab doesn't seem to come with a function to do this.
Rather than reinvent the wheel, we can just use the function used by GWINC. 
Attachment 1: besselzero.m

function x=besselzero(n,k,kind)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% besselzero.m
%
% Find first k positive zeros of the Bessel function J(n,x) or Y(n,x)
% using Halley's method.
%
% Written by: Greg von Winckel  01/25/05
... 79 more lines ...

13

Thu Jun 6 12:40:07 2013 
Matt A.  Optics  General  Conventional Thermal noise (Sec V) from Liu & Thorne  Good work Deep,
Can you write more on what this is and why you're doing it? We want our elog entries to be easy to understand for anybody who reads it.
Quote: 
The power spectrum of thermal noise in the case of Finite test masses differ slightly from that of the Infinite Test Mass. The expression for the PSD in the infinite test mass case is not a closed form solution but an infinite sum. In this post, a comparison has been made to check how fast does the sum (and as a result, the PSD) converge. The numerical values used for the calculation have been taken from the paper by Levin and that by Liu and Thorne.
>The linearized PSD plots are created for the case of thermal noise in finite test mass (Sec. V) of Liu and Thorne.
S = 8*kb*T*phi*(U0 + delta_U)/omega
>The maximum energy due to stress is considered by an infinite sum here. A comparison has been made regarding the convergence of the sum.
>The two plots correspond to the cases of considering 10 and 100 terms in the sum respectively.
>The plot shows that the difference is not much and hence convergence is fast.
>The relative difference is plotted w.r.t S_100, the PSD considering 100 terms in the sum.
>The relative difference goes like abs(S_100  S_10)/S_100, where 10 and 100 represent the number of terms considered in the sum.
>The algorithm used to evaluate the sum involving Bessel functions was the one by GWINC. (http://nodus.ligo.caltech.edu:8080/COMSOL/10).

I had made some minor errors in the expressions previously while typing the expressions. I have made the corrections and uploaded the new plots in place of the older ones. 
16

Mon Jun 10 18:37:09 2013 
Matt A.  General  General  Response to question in: Disscussion of the code of a 'comsol with matlab' model file (partially complete). 
trange = ['range(0,' num2str(dt) ',' num2str(t_end) ')'];
**There is however a query regarding the keyword range which in Matlab returns the difference between the maximum and minimum of the list passed to it. range() passed to COMSOL would probably create an array fro 0  t_end in steps of dt.
The above line converts the quatity 'dt' and 't_end' to a string and concatenates it along with the rest of the string to make a valid string that would be understood by COMSOL.
You'll notice that the range command that is given to COMSOL is in single quotes, that means that all Matlab is doing is feeding to COMSOL a string, just as you would send it numerical values as a string.
It is COMSOL that evaluates this range command, so it can be different from Matlab's range command.

24

Thu Jun 20 10:26:38 2013 
Matt A.  General  General  The Relative Residual Convergence Error  Emory:
I don't understand how you're getting the strain energy from the eigenvalue solver. It is my understanding that the eigenvalue solver will only give you the strain energy at a particular eigenfrequency. We're interested in the strain energy from the beam deformation at frequencies below the first eigenmode.
Quote: 
We have been encountering an error in COMSOL for a while of the form "Failed to find a solution.; The relative residual (###) is greater than the relative tolerance.; Returned solution is not converged.; Feature: Stationary Solver 1 (sol1/s1); Error: Failed to find a solution." The error has occurred when attempting to find a stationary solution in models with boundary loads and no fixed constraints (preventing an edge from moving). We wanted to determine what the error was caused by to allow us to use the stationary solver, or at least to confirm that the error was not indicative of a problem in our model. To this end, I designed a few very simple COMSOL models in which I was able to reproduce the behaviour and attempted to determine the root of the issue.
I first constructed a somewhat similar model to ours using a cylinder of fused silica with all of the default values and a normal meshing. I applied a boundary load of 1N on one of the faces and ran a stationary solver. As expected, the solver failed to converge since it had no boundary condition preventing it from accelerating continuously. Applying a force of 1N on the opposing face resulted in the same error as above, which replicates the previous error since the system is failing to converge in a case where it should. I decided also to make an even simpler 2D model of a square. Applying 1N forces to opposing sides on the square again returned the error above.
Both of these models were able to be evaluated using at least an eigenfrequency solver as noted on the primary model in the previous eLog. I looked on the COMSOL forums and read through some more of their documentation and saw the suggestion in response to this error to use a timedependent solver and simply view times after the system will have settled to a stationary state (#2 https://community.cmc.ca/docs/DOC1453). I attempted this on the test models and both of the time dependent solutions converged without error to their expected solutions (compression between the faces on which forces were being applied). This may be a suboptimal computational method though as even in the simple cylinder case with 6133 elements and a simple force profile, the solution took several minutes to run. For the cylindrical model, I evaluated the strain energy using both an eigenfrequency and time dependent solver and obtained the same result using both of the solvers. The eigenfrequency solver evaluates much more quickly than the time dependent solver, and in the primary model as I noted in my previous eLog, the strain energy obtained using the eigenfrequency and frequency domain solvers agreed, so it seems that the best manner in which to proceed is to use the eigenfrequency solver to compute the strain energy.
The source of the error is still unknown, but given these tests, it seems very unlikely to be indicative of a problem in our model. We still have a very significant disagreement between the simulated results and the calculated values. I am going to spend the next day or so looking through both the COMSOL model and the analytic calculation and checking them for errors which could cause this discrepancy. I will then start reading the documentation on Livelink for Matlab and try to implement it.


49

Mon Jul 8 18:39:31 2013 
Matt A.  Optics  General  Meshing error when varying geometry 
Quote: 
I attempted to run the Matlab code built last week, but received an error that the mesh failed to generate on the inner domain/failed to respect edge element on geometry edge. The error occurred on the second computation with ratioR=0.2, but for ratioR=0.1 the simulation completed successfully. I reproduced the error in COMSOL and noted that for meshes with size at least as course as "course" or extremely fine, a mesh could be constructed, but for sizes in between an error was returned. This region of sizes which throw errors varies for different values of ratioR. By specifying an edge selection of the central line running down the frustum and another along the top edge of the inner cylinder and meshing points on those edges first the rest of the meshing is forced to use those nodes as a seed.
I also noted our COMSOL model had an error: ratioR was applied to the wrong face. This was corrected as was the .m file.
I added an eigenfrequency study and ran it for several values of ratioR, obtaining the following:
ratioR Lowest Drumhead mode (Hz) Lowest Butterfly mode (Hz)
0.1 3624.8 3802.4
0.3 4375.9 3785.4
0.5 4366.5 3650.0
.75 3709.0 3041.85
1 3000 2186.3
1.1 2736.2 1893.0
1.3 2247.6 1426.4
The mirror's front face is 0.17 [m]. Its Gaussian beam size is 0.0156 [m]. Its height is given by 0.01734[m^3]/(R^2*(1+ratioR+ratioR^2)) such that when the two faces have the same radii it is 0.2 [m] long.

Great Emory,
Can you put these in a plot so it's easier to read? 
50

Mon Jul 8 19:04:35 2013 
Matt A.  Optics  General  Meshing error when varying geometry 
Quote: 
I attempted to run the Matlab code built last week, but received an error that the mesh failed to generate on the inner domain/failed to respect edge element on geometry edge. The error occurred on the second computation with ratioR=0.2, but for ratioR=0.1 the simulation completed successfully. I reproduced the error in COMSOL and noted that for meshes with size at least as course as "course" or extremely fine, a mesh could be constructed, but for sizes in between an error was returned. This region of sizes which throw errors varies for different values of ratioR. By specifying an edge selection of the central line running down the frustum and another along the top edge of the inner cylinder and meshing points on those edges first the rest of the meshing is forced to use those nodes as a seed.
I also noted our COMSOL model had an error: ratioR was applied to the wrong face. This was corrected as was the .m file.
I added an eigenfrequency study and ran it for several values of ratioR, obtaining the following:
ratioR Lowest Drumhead mode (Hz) Lowest Butterfly mode (Hz)
0.1 3624.8 3802.4
0.3 4375.9 3785.4
0.5 4366.5 3650.0
.75 3709.0 3041.85
1 3000 2186.3
1.1 2736.2 1893.0
1.3 2247.6 1426.4
The mirror's front face is 0.17 [m]. Its Gaussian beam size is 0.0156 [m]. Its height is given by 0.01734[m^3]/(R^2*(1+ratioR+ratioR^2)) such that when the two faces have the same radii it is 0.2 [m] long.

When we talked today, I thought that these frequencies were a little low, so I ran a really simple COMSOL model of a cylinder with radius 0.17 m and height 0.2 m (attached).
I solved for the first 10 modes (the first 6 being trivial), and the frequencies I got are listed below:
Mode # Freq [Hz] Type
7 5950 Butterfly
8 5950 Butterfly
9 8106 Drumhead
10 8226 Shear
These are more in the frequency range that I expected.
**What material are you using? I used fused silica.
**I used 'finer' meshing. Perhaps your more complicated meshing is screwing with the solutions, although I'd expect it to make it stiffer, not softer.
**Are you applying force during the eigenvalue calculation? That might make it softer.
**Perhaps some of your constraints are moving the modes around. My model has zero constraints: it's just a cylinder floating in space.
Lets talk about this tomorrow.

Attachment 1: SimpleCylinder.mph

85

Mon Jun 23 16:10:17 2014 
Matt A.  Optics   Going through Heinert's 'TR noise of cylindrical test masses' paper 
Quote: 
At this point, my are goals are to 1) convert the timedependent heat equation into stationary, complex form, 2) use the Levin approach to calculate the TR noise given this stationary PDE, and 3) verify the results in COMSOL
I have looked at the Heinert paper and converted the timedependent partial differential Heat equation to a stationary, complex one. I did this by assuming a temperature distribution of the form T(\vec{r},t) = T_0 ( \vec{r} ) e^{i \omega t }, where \omega is the frequency of oscillation of the input heat field: q( \vec{r} , t) = q( \vec{r} ) e^{i \omega t}. Hence, I am assuming the steadystate solution of the temperature field. From this ansatz, the PDE becomes
C_p T(\vec{r}) + \frac{ i \kappa}{ \omega } \nabla^2 T ( \vec{r} ) = q ( \vec{ r} ).
This complex conversion already seems to have been done in the paper, since the stationary solution of the form
T(r, z) = \sum_{n = 0}^{\infty} \sum_{m = 0}^{ \infty} T_{n m} J_0 (k_n r) \cos ( \ell_m z) is assumed.
k_n and \ell_m are obtained from the adiabatic boundary conditions. Moreover, if I plug this form for T(r, z) into the stationary PDE, I get Heinert's eq. 12. ( although I'm not quite sure how to take the second derivative of a zerothorder bessel function).
I've started to try out the cylindrical geometry in COMSOL, using the structural mechanics and heat transfer modules. At this point, I'm not quite sure how to specify the PDE that I'm interested in, nor am I sure about how to specify the boundary conditions.

Hi Sam,
I know it seems a bit distracting, but it's sometimes nice to write up your elog entries in a more readable form. I've reedited your comments to make them more easily read.
I used http://www.sciweavers.org/freeonlinelatexequationeditor to convert your latex to png files for easy reading.
At this point, my are goals are to:
1) convert the timedependent heat equation into stationary, complex form,
2) use the Levin approach to calculate the TR noise given this stationary PDE, and
3) verify the results in COMSOL
I have looked at the Heinert paper and converted the timedependent partial differential Heat equation to a stationary, complex one.
I did this by assuming a temperature distribution of the form:
where ω is the frequency of oscillation of the input heat field:
Hence, I am assuming the steadystate solution of the temperature field.
From this ansatz, the PDE becomes:
This complex conversion already seems to have been done in the paper, since the stationary solution of the form:
is assumed. k_{n} and ℓ_{m} are obtained from the adiabatic boundary conditions.
Moreover, if I plug this form for T(r, z) into the stationary PDE, I get Heinert's eq. 12.
( although I'm not quite sure how to take the second derivative of a zerothorder bessel function).
I've started to try out the cylindrical geometry in COMSOL, using the structural mechanics and heat transfer modules.
At this point, I'm not quite sure how to specify the PDE that I'm interested in, nor am I sure about how to specify the boundary conditions.

7

Wed Jun 5 13:31:41 2013 
Matt A  Optics  General  Analytic Calculation of Thermal Noise due to Brownian Motion using Levin and Thorne's Methods  Nice Work Emory,
Can you make a plot with both of the lines on the same plot, with a legend, units, and everything? I'd like to see these compared sideby side.
Quote: 
Motivation:
Reduction of Brownian thermal noise in future gravitational wave detectors is of significant interest. It has been suggested that changing the shape of the mirrors used may reduce the Brownian thermal noise. Before we can study how alterations in mirror shape effect Brownian thermal noise, we must be able to calculate the thermal noise analytically in order to compare it to our finite element model.
Methods:
I made Mathematica notebooks to perform calculation of the thermal noise. The first notebook implemented Levin's method directly.
Sx[f_] := (4*Kb*T/f)*(1  \[Sigma]^2)*1.87322*\[Phi]/(\[Pi]^3*E0*r0)
To test this against Levin's paper, the same values were used as in the paper, such that
Kb=1.38065*10^23 (Boltzmann's constant)
T=300 (Temperature)
Sigma=0.16 (Poison's Ratio)
E0=71.8*10^9 (Young's Modulus)
r0=0.0156 (Gaussian Beam Size)
Phi=10^7 (Loss Angle)
RMirror=0.17 (Mirror Radius)
H=0.2 (Mirror Height)
A loglog plot of Sqrt[Sx[f]] with f ranging from 0.1 to 5000 Hz was plotted and is displayed below. Additionally, the value for 100 Hz was explicitly computed and agreed with Levin's value of 8.7*10^40 m^2/Hz computed from his equation 15.
The notebook was modified to perform Thorne's method of computing the thermal noise for a finite test mass. This calculation was performed using equations 28, 35a, 54, 56, and 57. Equations 56 and 57 require the approximation made in eqn 37 which assumes a relatively low mass mirror. According to Liu and Thorne, this is a "rather good approximation for realistic parameter values." Performing the calculations again using this method gave Sx[100 Hz]=7.80081*10^40 m^2/Hz. So, for these parameters, the finite test mass provides a correction factor of about 10%. Another loglog plot of Sqrt[Sx[f]] against f was made using this method.
We can now modify the parameters above to match the values in our finite element model to verify the results of our finite element model.
Levin, Y. (1998). Internal thermal noise in the LIGO test masses: A direct approach. Physical Review D, 57(2), 659.
Liu, Y. T., & Thorne, K. S. (2000). Thermoelastic noise and homogeneous thermal noise in finite sized gravitationalwave test masses. Physical Review D, 62(12), 122002.


110

Mon Jul 24 15:35:34 2017 
Mariia  General  Configuration  Running 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
Messages:
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?

113

Fri Jul 28 15:48:58 2017 
Mariia  General  Configuration  Comsol 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 mphfile 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

4

Thu May 2 14:00:36 2013 
Koji  General  Configuration  test mass TR with Levin's approach  Thermorefractive noise in a finite cylindrical/infinite test mass with Levin's approach
Location of the codes: 40m SVN repository
comsol/thermorefractive/
This code realizes Levin's calculation on thermorefractive noise
doi:10.1016/j.physleta.2007.11.007
and duplicates the result of D. Heinerts paper
DOI: 10.1103/PhysRevD.84.062001
Also the result is compared with Braginsky's result in 2004.
doi:10.1016/S03759601(03)004730
 The code applies gaussianshaped heat into a cylindrical mirror.
 The heating/cooling is sinusoidal and the dissipation (heat flow) is calculated in COMSOL.
 The time series result was analyzed in MATLAB to extract the single coefficient corresponds to the transfer function.
This way the effect of the initial transient was avoided.
 Unfortunately direct measurement of frequency response in COMSOL was not available as the heat flow is not modal.
If we make a fourier analysis of the partial differential equation and solve it in COMSOL using arbitrary PDE solver,
we may turn this time dependent analysis into static analysis.
All of the calculation was driven from MATLAB. So you have to launch "COMSOL with MATLAB". 
Attachment 1: thermo_refractive_1D_axisym_result.pdf


29

Sun Jun 23 14:29:04 2013 
Koji  Optics  General  Differences on using a coarser mesh in calculating TR noise  What about the dependence on the size of the time slice?
It is unclear what the unit fo the frequency. Hz? ot logHz (which should be expressed as 10^1, 10^2, ...)?
Can you combine the result of the caluculation and the error together?
i.e. Combine the plot similar to http://nodus.ligo.caltech.edu:8080/COMSOL/4 and your plot with the horizontal axies lined up. 
