Large Gregorian Antenna simulations at high frequency
조회 수: 2 (최근 30일)
이전 댓글 표시
If I have a large Gregorian antenna (2-3 meter) and need to operate it in frequency range 20/30 GHz, I get a problem of out of memory and need RAM in range of 200G or more !! Is there a solution to this issue? By decreasing number of iterations or decrease accuracy needed ?
댓글 수: 0
답변 (1개)
Naga
2025년 1월 16일
Hi Karim,
The Antenna Toolbox uses the method of moments solver. While applying this technique, MATLAB divides the geometry into a triangle mesh and generates an NxN 'interaction matix,' where N is the number of interior edges in the mesh. See the following doc page for more information on this technique:
The mesh being generated for your antenna or array likely contains many triangles, so there are many interior edges which results in a very large interaction matrix requiring lots of memory. You can obtain an estimate of the amount of memory required to solve the antenna problem using the 'memoryEstimate' function.
>> memoryEstimate(yourAntennaOrArrayObjectHere);
To reduce memory usage (but potentially at the cost of accuracy), you can adjust the mesh to make it coarser before calling a method that requires a solution to the Method of Moments problem (such as 'EHfields'). You can do this using the 'mesh' function and by setting the 'MaxEdgeLength' property. For example,
>> mElem = mesh(arrayElement,'MaxEdgeLength',lambda/10);
>> mArray = mesh(array,'MaxEdgeLength',lambda/10);
You can then successively make the mesh finer and finer (by decreasing MaxEdgeLength) until you are satisfied that the solution has converged. If using lambda/10 takes too long to compute, you can try beginning with an even coarser mesh.
Note that when you run the 'mesh' command, a new mesh for the antenna object is generated and stored internally as a side-effect, so you do not need to pass its output to 'EHfields' or any other method. Calling the 'mesh' function also affects the output of 'memoryEstimate', because it changes the number of triangles in the mesh (and therefore, the size of the Interaction Matrix). Execute 'memoryEstimate' before and after executing 'mesh' to see the difference in memory required.
If you leave out the return value, the 'mesh' command will display the generated mesh in a figure. For example:
>> mesh(rf_arrayElement, 'MaxEdgeLength', lambda/10);
You can use this to visually see how changing the MaxEdgeLength parameter affects the generated mesh.
If you still need more memory, you can try increasing the size of the virtual memory (page file) available to your operating system. This essentially uses a file on your hard drive as if it were additional RAM. Note that virtual memory is significantly slower than physical memory, so it may be worthwhile to search for a machine with sufficient physical RAM first.
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!