Solver out of memory error HFSS

  • 1.5K Views
  • Last Post 18 December 2018
  • Topic Is Solved
Julia posted this 06 December 2018

I am simulating a three antenna system at 2.4 GHz using three FE-BI hybrid regions. The cluster I am using ranges from 48GB to 760GB of ram and is still unable to complete due to memory issues.

1.) Is there a way to determine the required memory for a given project before running it? 

2.) Is it possible that this design actually requires >760GB and cannot be completed with my current resources?

3.) Are there any recommendations for further reducing the required memory?

Thank you !

Full simulation set-up with one large FE-BI region surrounding a cylindrical sheet with impedance boundary, human phantom, and loop antenna), and two smaller FE-BI boundaries each surrounding a dipole antenna.

Close-up of loop antenna at originClose-up of one of the two dipole antennas

 

Order By: Standard | Newest | Votes
Peter Serano posted this 06 December 2018

Hi Julia,

Does the model mesh?  Take a look at the 'mesh statistics' tab of the solver profile (Right click on 'Results' in the Project Tree Window and then select 'Solution Data').

If your model has less than 2,000,000 tetrahedron it should run with that amount of memory. Does it look like any one part of the geometry is using more tets than seems reasonable?

Best,

Peter Serano - Senior Application Engineer - High Frequency Products

Julia posted this 06 December 2018

Hi Peter, 

The model completes about 3 adaptive passes but does not converge. It does have >2,000,000 elements after the third pass. However, the second image shows that it uses 283.5 GB for the adaptive meshing, which should be less than the available memory on the machine that I was running it on. It looks like the human is using a lot of tets (which I expected), but also the Airbox_Bore. Is there a way to reduce the mesh on the large airbox without compromising the accuracy of the results? 

Thanks, 

Julia 

Peter Serano posted this 06 December 2018

Are you using the fully detailed human body model with internal tissue structures? At 2.4GHz, RF may not be penetrating too deep into the body and you could try modeling the human body as a homogeneous structure with the 'human_average' material properties to save computational resources. 

What is the cylindrical bore that the human is inside? Is it metal or dieletric? Is it modeled as a 2D sheet or 3D volume?

How close are you getting to convergence? Is it possible that others are using the cluster and the full amount of RAM is not available?

Peter Serano - Senior Application Engineer - High Frequency Products

Julia posted this 06 December 2018

I am using the human body from the HFSS component library and I believe it is a homogenous structure with 'human_average' material properties (although sometimes I get an error that the material human_average was not found in my libraries..). I plan on importing an external human body that is split at the head so that the head is solve inside (for field generation/antenna loading) but the body is not solve inside. I only care about power losses to the body so I will model the body exterior as an impedance boundary with average electrical tissue properties. Would something like this reduce the required resources since I cannot modify the ansys component? 

The cylindrical bore is a 2D sheet with layered impedance boundary. I want a 5cm thick FR4_epoxy internal cylinder and a perfect electrical conductor cylindrical sheet on the exterior. The impedance boundary conditions are in the image attached. Please let me know if that accurately reflects what I am trying to model. 

The delta S after 3 passes is 0.2601 and I have a target of 0.02. When I was using the cluster, the 760 GB was reserved so that no other jobs could run on the node unless there was enough ram available. 

 

Peter Serano posted this 11 December 2018

Hi Julia, 

Yes, you can try the impedance boundary on the human model although you won't be able to calculate the power loss directly inside since there will be no solved fields inside. You could also try hollowing out the body by making a copy of the body and scaling it down ~80% and defining it as PEC. This way you can solve the fields only in the outer shell of the body and use it to calculate the power loss inside the body.

If you open the 3D component for editing, you can also split the body at the head and then copy the separate head and body back into the main model.

I would also suggest adding a length-based mesh operation to all your port surfaces, something like 1-2mm to help the S-Parameters converge faster.

 

Peter Serano - Senior Application Engineer - High Frequency Products

Julia posted this 13 December 2018

Will a 2-sided layered impedance boundary of some thickness still have the same overall effect on power loss between the central coil and the dipoles(s) as scaling the body and using a physical shell of the same thickness? I mostly want to know its effect on the overall S21 between the dipoles so if I cannot calculate the power loss directly, it's okay. 

I have tried editing the HFSS 3d component and I get the error that I "Cannot edit component definition 'Male_Body' from syslib'. Is there a way to edit the components? 

Thanks, 

Julia 

Peter Serano posted this 13 December 2018

After you insert the 3D component into the project, right click on it's name in the modeler tree and select 'Edit Definition'. It will open as a separate project. You can't modify this particular instance since it's tied to the read-only database containing the built-in HFSS 3D Components. But, you can now select the 'Body' object and copy it to the clipboard and then paste it back into your original model. Now you can delete the 3D component body model and just use this 'Body' object - which you can now freely modify with whatever Boolean operation, etc you want.

The Impedance Boundary Condition was really designed to be used for super-thin layered flat surfaces where meshing the real thickness would be impractical. I've never seen it used to model something this thick but the limit to the thickness according to the HFSS manual is lambda/10 so it should still work. You should also be using the 'two-sided' option and enable 'shell elements'. The one-sided option assumes you have a flat layer external to the model with PEC extending infinitely out on the PEC side. I would highly recommend reading the section of the HFSS help manual titled 'Assigning Layered Impedance Boundaries' very carefully.

Also, are you sure this tube is really 50mm in thickness? Typically there is a large RF birdcage body coil that's built upon a plastic dielectric tube that's closer to ~20-30mm in thickness from my personal experience. The thin copper birdcage coil is on the inner side, and at 3T there's usually a solid copper shield on the outer side. See Figure 1d in one of my MRI publications: https://www.nature.com/articles/srep09805

It also looks like it's modeled as a 3D object from your screenshot? Even if it's vacuum it could add unnecessary mesh elements. I would select the face of a cylinder and use the 'Create Object from Face' command to create the cylindrical surface for which to apply the BC.

I would try using the body as a simple object (not 3D component) as well as making the above modifications to the layered impedance BC and double checking the thickness of that dielectric tube before attempting to hollow out or chop up the body model.

Let me know how it goes!

Best,

Peter Serano - Senior Application Engineer - High Frequency Products

Peter Serano posted this 13 December 2018

Also just to clarify, in the 2nd paragraph above I was referencing using the Layered Impedance Boundary Condition on the dielectric tube only. Try out all the modifications I suggested above and then we can see if using a BC on the surface of the body is needed...

Peter Serano - Senior Application Engineer - High Frequency Products

Julia posted this 18 December 2018

Hello Peter, 

Thank you for the suggestions!! I was already using a cylindrical sheet for the tube, but thank you for your advice on the birdcage coil on the exterior. This is just one iteration but I am going to refine it in the near future. I modified the human body model by splitting it at the neck and not solving inside for the body, but still solving inside for the head. 

Is it still a good physical approximation if I do not solve inside the body (the only drawback being that I cannot compute the fields in the volume)? I also slightly reduced the size of my FE-BI boundary and added the 1 mm length-based mesh operation on the ports. Are these modifications appropriate to retain the accuracy of the simulation? 

The solution converged in 4 adaptive passes using ~24 GB memory and finished in a little under 2 hours! 

Close