Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Posts posted by JIF

  1. Hello Sem,


    The array feature in FEKO assumes that you are describing a unit element and thus the radome will also be duplicated. To simulate the array with the radome, you will have to create all the elements and excitations in the traditional way (not the array feature) and add the radome. If the radome is well separated from the array, model decomposition can be used (sample around the array and use that as an impressed source for the radome).

  2. Hello KateKim,


    A good place to start is the Getting Started Guide. ;-) There are also some patch models in the Example guide.


    On 6/8/2019 at 3:33 PM, KateKim said:

    Or if someone can make it in Feko for me I will be grateful :wub:

    I doubt that anyone would have time to create the models for you. ;)

  3. Hi Ksewsu,

    I assume that you are using Ubuntu 18.04 (not 18.02 - that does not exist as far as I know). I just installed it again on Ubuntu 18.04 and it worked without issues. My guess would be that you some OpenGL problem. Try updating your graphics card driver?


    Any reason why you are using version 2017 and not 2018? (I'm asking since using the latest version is best, but version 2017 should work and it worked for me now - confirmed.)

  4. Hello Christopherson,


    You are indeed correct that this is easy. There are two ways to go about finding out how to do things in the CADFEKO API. The one is to find the object in the API and see what options it provides (properties, methods) or using the example for that object if it does roughly what you need. The other way is to use script recording - record the actions and then see the code it generated and modify it to your requirements.


    Below is a section that I script recorded. I simply created a plane wave source with default options and then modified it, changing the magnitude, phase and also angles of incidence.

    app = cf.GetApplication()
    project = app.Project
    -- Created solution entity: PlaneWaveSource1
    properties = cf.PlaneWave.GetDefaultProperties()
    properties.Label = "PlaneWaveSource1"
    PlaneWaveSource1 = project.SolutionConfigurations["StandardConfiguration1"].Sources:AddPlaneWave(properties)
    -- Modified solution entity: PlaneWaveSource1
    properties = PlaneWaveSource1:GetProperties()
    properties.DefinitionMethod = cf.Enums.PlaneWaveDefinitionMethodEnum.Multiple
    properties.EndPhi = "45"
    properties.EndTheta = "90"
    properties.Magnitude = "2"
    properties.Phase = "20"
    properties.PhiIncrement = "5"
    properties.ThetaIncrement = "10"

    If you look at the "PlaneWave" object in the API reference, you will see similar info (obviously the links won't work in my extract below):





    A plane wave may be defined as a source in a model.


    app = cf.GetApplication()
    project = app:NewProject()
        -- Create a plane wave source
    configuration = project.SolutionConfigurations[1]
    planeWave = configuration.Sources:AddPlaneWave(0,0)


    The PlaneWave object is derived from the SolutionEntity object.

    Parent Collection List

    The following collections contain the PlaneWave object:

    Property List

    Calculate orthogonal polarisations. (Read/Write boolean)
    The plane wave definition method. (Read/Write PlaneWaveDefinitionMethodEnum)
    Ellipticity (between 0 and 1). (Read/Write Expression)
    The end phi angle (degrees). (Read/Write Expression)
    The end theta angle (degrees). (Read/Write Expression)
    The plane wave workplane. (Read only LocalWorkplane)
    The source magnitude (V/m). (Read/Write Expression)
    The source phase (degrees). (Read/Write Expression)
    The phi angle increment (degrees). (Read/Write Expression)
    The polarisation angle (degrees). (Read/Write Expression)
    The plane wave type specified by the PlaneWavePolarityTypeEnum, e.g. LeftHand, Linear, etc. (Read/Write PlaneWavePolarityTypeEnum)
    The start phi angle (degrees). (Read/Write Expression)
    The start theta angle (degrees). (Read/Write Expression)
    The theta angle increment (degrees). (Read/Write Expression)
    The object type string. (Read only string)

    Method List

    GetProperties ()
    Returns a table of properties representing the state of the object. The properties table can be used with the SetProperties method to change multiple properties of the object in one step. (Returns a table object.)
    SetProperties (properties table)
    Modifies the state of the object using the provided table of properties. This method is used to modify multiple properties of the object in a single step.

    Static Function List

    GetDefaultProperties ()
    Creates a table containing the default settings to create an object. (Returns a table object.)



    I hope the info helps.

  5. Hi

    I agree. I'll let you in on a secret. We are doing a large refactoring (code improvement) project on CADFEKO (and after that POSTFEKO and the other applications) and this has caused many features that we know are very important to be delayed. However, once the refactoring is complete, features like this will be released soon after. Just bear with us a little longer until we are on the new (faster) code base.

  6. Hello liucass,


    I see that you are using an older version of Feko. Please upgrade to the latest version. The error is in Intel MPI.

    It sounds like you don't get it for every run, but occasionally? We have reported similar issues to Intel in the past and some of the issues were fixed by them in later versions and that is why I suggest that you upgrade to the latest version of Feko.

  7. Hello briantvd


    On 11/22/2018 at 4:45 PM, briantvd said:

    Is there going to be an Improvement on this weakness? 

    The good news is that the answer is yes, this will be improved. We are working on various features to make this faster and easier. The less good news is, these features are still in development and I'm only expecting them to become available in about a year. The features are in very early development and we can't yet guarantee that they will work as we plan for them to work, but it is being looked at and there are multiple feature that should all improve this situation.


    Something that you could try is to remove the pole joining the array elements to see if it has an effect on the array (pattern and impedance). If you can avoid including that pole, you don't need to union the elements and thus the problem is avoided.


    The problem here is the union that is taking long. When you delete an element in the union, it needs to redo the union and this is a slow process in the CAD modeller when many faces are present. The problem will get worse the more elements you add.


    If you have many elements or need to change the model often, it could be worth it to rather create the model using a script - it really depends on what you are trying to do.


    But as I said, we are aware of the problem and have solutions and have been working on them for quite a while, but will still take some time before we can release them to customers.

  8. Hello kevinwhite,


    What you use really depends on the frequency and radius in question. You can model this structure with cones that will be meshed into triangles if the radii of the elements are large (sizable fraction of a wavelength). If you are working at low frequencies and the radii are small (much smaller than a wavelength), you can use segments. EDITFEKO has a card (BL card with tapered radius) to create wires where the segments vary in diameter along the wire. The same feature does not yet exist in CADFEKO though.

  9. Hello Shane,


    I'm not sure what you are trying to do. Are you trying to get hold of the the current at the middle of each triangle (magnitude only, or complex or also the vector direction) for each triangle for each incident plane wave? You can get the info from the OS file or the DataSet as already indicated. The both the DataSet and the OS file provides the complex vector current at each vertex. If you want the current at the middle of the triangle, simple add the three values and divide by 3.

    Jc = (1/3)*(J1 + J2 + J3)


    Now, we can calculate the magnitude of the current at the centre of the triangle as
    |Jc| = sqrt( |Jcx^2| + |Jcy^2| + |Jcz^2|) = sqrt( (Re(Jcx)^2 + Im(Jcx)^2) + (Re(Jcy)^2 + Im(Jcy)^2) + (Re(Jcz)^2 + Im(Jcz)^2) )
    where Jcx is the x-component of the vector Jc (complex vector current density at the centre of the triangle). Note that this is not necsesarily the maximum that the current will be, but rather the upper limit of the maximum since it assumes that the three vector components are in phase and will be a maximum at the same time. If we wanted to really calculate the maximum, then we would have to calculate the phase (wt) where the maximum will occur and then use the magnitudes of the vector components when the phase is equal to wt_max. This means that the instantaneous value calculated below might never actually be equal to the maximum calculated here.


    We can also calculate the instantaneous value of the current at the centre of the triangle.
    Jci(wt) = Re(Jc*exp(jwt)) = Re(Jc)*cos(wt) - Im(Jc)*sin(wt)
    Note that Jci(wt) is a scalar vector (not complex). Now, the magnitude of Jci(wt) indicating the colour in POSTFEKO is calculated as before using:
    |Jci(wt)| = sqrt(Jcix^2 + Jciy^2 + Jciz^2) .


    This explains what POSTFEKO displays in the 3D view.


    I hope that helps. If you do use the DataSet and not the OS file, you will see that each triangle index is repeated 3 times and this represents the current at vertex 1, 2 and 3 for that triangle. To know the exact location in space of the vertex, you need to access the mesh info (also via the API).


    I hope that helps.

  10. Hi
    For a constant current distribution, I would suggest that you try to model it with one or more impressed current sources (they have to be straight lines, so you will have to use a few to approximate the loop). In reality, the current won't be constant, but for a small enough loop, it will be approximately constant. If you are simply trying to model an infinitely small loop, rather use a magnetic dipole source.


    Any further help or advice will require more info regarding what you are trying to do.

  11. Hello Meerten,


    The Graph object has a method to export traces. Below is an extract from the documentation.


    Export the graph traces to the specified tab separated file.

    • Input Parameters
      • filename(string): The name of the exported data file without its extension.
      • samples(number): The number of samples for continuous data. This value will be ignored if the first trace on the graph is discrete.


    If you want to loop over all the graphs and export the traces to .dat files, I suggest that you create a FOR loop and loop over all the graph collections that you want to export and then export use the method above. It will be something like the code below:

    app = pf.GetApplication()
    for ii = 1, app.CartesianGraphs.Count do
      	local graph = app.CartesianGraphs[ii]
        graph:ExportImage("Cartesian_Graph"..index, 100)

    This is just for Cartesian graphs. You will need a similar loop for other graph types that you want to export (polar, Smith, etc.)


    Note that I didn't test the code. ;)

  12. Hello Farai,

    The MoM and SEP are "surface equivalence" solution methods. It is an advantage to not have to discretise the volume, since the surface results in less elements. Other solution methods such as FEM and FDTD require volume discretisation.

  13. On 10/3/2018 at 7:55 PM, MOHAMED HAMDALLA said:

    I believe if you have documentation for EDITFEKO it will be great for everyone trying to use it.

    The manual has an entire chapter on EDITFEKO and the PREFEKO language. The Appendix also describes each "card" in detail. I think all the documentation that you need is already available.


    On 10/3/2018 at 7:55 PM, MOHAMED HAMDALLA said:

    one last question: how can I define the port of that labeled wire? that is I want to define a wire port at the middle of the wire. 

    Using EDITFEKO, this will entail breaking up the creating of the wire into three sections (thus, three BL cards). Two of the sections are for the sides and one is for the section in the middle. Ensure that the section in the middle is only one segment long and label it with the LA card. This allows you to then add a source or a load on the segment with that label. For a voltage source, you will then use the A1 source (segment port). If you want to add a vertex source, then only split your wire into two sections and label one of them (at least). Then add the A2 source (with the correct settings) on that label.


    Take @Torben Voigt's advice and start working with CADFEKO scripting (using Lua). It is much easier than EDITFEKO and you can use macro recording to see how to do some parts (also makes script creation much faster). But be sure to work through the intro section for scripting and the example in the Example guide.

    MOHAMED HAMDALLA likes this

  14. Based on some of your other forum posts, you seem to be posting the same question over and over. See


    Surely that post must have answered your questions? Please be more specific regarding the problem you are facing and add models or show what you have done and where you are stuck and need help.

  • Create New...