[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

# Re: [femm] 3 phase cable

- To: femm@yahoogroups.com
- Subject: Re: [femm] 3 phase cable
- From: dcm3c@aol.com
- Date: Wed, 24 Oct 2001 09:57:40 EDT

    In a message dated 10/23/01 4:17:33 PM Eastern Daylight Time,
    lkloesel@mail.qnet.com writes:

    > Dear All,
    >
    > I was trying to simulate the rotating fields around a 3 phase cable
    > (see FEMM folder 3_phase_cable). In order to change the currents, I
    > used modifycircprop() lua command. As you can see, in the
    > pre-processor script, I changed the currents by adding 10 degrees
    > to each program loop. The post-processor file will take a snap-shot
    > of
    > the field, to which I will eventually assemble with a gif-animator to
    > reveal a very nice animation of the fields.
    > My problem is this: FEMM hangs in the fkern portion, the biconjugate
    > gradient solver just sits there. I had to add 0.5 (or 0.1) to the
    > currents in order to get fkern to unhang. I believe there may be a
    > bug here which warrents review. I changed the precision, but that
    > didn't work. I looked for a simple lua method of rounding the
    > numbers
    > after they were created from the sin() and cos() functions, but found
    > none readily available.

    It is theoretically possible for the BiCG iteration to break down (i.e. not
    converge), although this "rarely happens in practice." This appears to be
    one of those "rarely happens in practice" situations... The iteration
    converges nicely when I force it to start from a random initial guess, but it
    hangs when I start it from an initial guess of all zeros. I'll try to muck
    around with the solver to see if I can get it to be a bit more robust to this
    situation.

    In the mean time, things also appear to converge OK when I round the sin()
    and cos() functions to single precision. To get it do this, you can define
    the following functions at the beginning of your script:

    function cos_alt(x)
    return floor(cos(x)*1.e8)/1.e8
    end

    function sin_alt(x)
    return floor(sin(x)*1.e8)/1.e8
    end

    Then, make calls to cos_alt() and sin_alt() rather than cos() and sin(). The
    script seems to run ok with this modification.

    Anyhow, thanks a lot for pointing this out--I really appreciate it.

    Dave Meeker
    --
    http://members.aol.com/_ht_a/dcm3c

- Follow-Ups:
  - 3 phase cable/animation & thanks
    - From: lkloesel@mail.qnet.com

- Prev by Date: Re: [femm] editor for LUA - conTEXT
- Next by Date: Re: [femm] LEAKAGE REACTANCE
- Previous by thread: Re: [femm] problem with lua function copyrotate
- Next by thread: 3 phase cable/animation & thanks
- Index(es):
  - Date
  - Thread