HFSS and Maxwell were made by Ansoft in the last century, and there actually were little problems with them. You could always trust the simulation provided by those systems.
However after Ansoft was absorbed by ANSYS, nothing was improved in solvers from engineering point of view. Instead some crazy non-scientific poorly documented things were introduced, probably programmed by game and CGI designers without any thoughts of engineering application.
One of the craziest thing I discovered lately it ANSYS's "closest point interpolation".
What is the "closest point" value, you may guess? Well, I think it is obvious - a value of the point found closest to the coordinate of the interest.
It would be a very good approach feeding the discrete precalculated input fields, or material parameters for precisely simulating complex designs.
However what does ANSYS think about the closest point values!? You may be surprised.
Below, I show you a test of the clp() function, which SHOULD find a value of the closest point from the dataset "$dataset" for every mesh node with coordinates XYZ.
It should be placed in the material editor, in any property cell as clp($dataset, X,Y,Z).
According to manual, X,Y,Z, are provided in SI units, i.e. in meters. The output should be in the dataset units, but it is not, recognized by HFSS on practice. So I recommend making it unitless, and multiply by the desired unit, like clp(...)*1cel.
Now I define a simple dataset with a script:
dim pushdata()
redim pushdata(1) 'generate the data incrementally in dynamic dataset
pushdata(0)="NAME:Coordinates"
pushdata(1)=Array("NAME:DimUnits", "", "", "", "") 'in meters
for x = -1.1 to 1.1 step .1 'in millimeters
for y=-1.1 to 1.1 step 0.1
for z=-1.1 to 1.1 step 0.1
redim preserve pushdata(ubound(pushdata)+1)
pushdata(ubound(pushdata))=Array("NAME:Point", CDbl(x/1000), CDbl(y/1000), CDbl(z/1000), 1) ' see that "1" in the end. it is a value of "1" inside the Unit-BOX
if ((abs(y)>=1) or (abs(x)>=1) or (abs(z)>=1)) then
pushdata(ubound(pushdata))=Array("NAME:Point", CDbl(x/1000), CDbl(y/1000), CDbl(z/1000), 0) ' see that "0" in the end. it is a value of "0" AROUND the Unit-BOX
end if
next
next
next
oProject.EditDataset "$Dataset", Array("NAME:$Dataset", pushdata) 'write the dataset to HFSS (ANSYS EDT))
Now lets see what the clp() function reads out from the dataset, and substitutes to material properties:
See the yellow and red lines on the plot below.
Obviously, those are NOT ones(1), and NOT zeroes(0), as one would expect.
I do not know what is that, but it is not a simple bug. I checked it in ANSYS EDT 2021 R1, and R2, both. It is a way how the programmer's head works.
Crazy stuff.
And we are forced to pay hundreds of thousands (some organizations pay millions) of Dollars for that, risking the corporate security btw. Because EDT is a security hole requiring Internet connection to work, and providing a backdoor for ANSYS, and anyone who could exploit that, to your system.