I am still getting an error related to the press_load function. Probably is related to the way the corresponding field variable is defined, I have the following lines:

field = Field.from_args('fu', nm.float64, 'vector', omega, approx_order=1)

press_load = Function('press_load',get_pressure_load)

 functions = Functions([press_load])

press = FieldVariable('pressure','parameter',field,special={'setter':'press_load'}, primary_var_name='(set-to-None)')

t4 = Term.new('dw_biot(matalpha.alpha, v, p)'integral, omega, matalpha=matalpha, v=v, p=press)


eq_elastic = Equation('Elastic',t1-t3-t3_hmax-t3_hmin-t4)

I get an error at this line:


Traceback (most recent call last):

  File "fractures_shadow.py", line 414, in <module>

    main()

  File "fractures_shadow.py", line 312, in main

    eqs = Equations([eq_elastic])

  File "/Users/adantra/anaconda/envs/default/lib/python2.7/site-packages/sfepy/discrete/equations.py", line 82, in __init__

    self.collect_conn_info()

  File "/Users/adantra/anaconda/envs/default/lib/python2.7/site-packages/sfepy/discrete/equations.py", line 187, in collect_conn_info

    eq.collect_conn_info(self.conn_info)

  File "/Users/adantra/anaconda/envs/default/lib/python2.7/site-packages/sfepy/discrete/equations.py", line 801, in collect_conn_info

    conn_info[key] = term.get_conn_info()

  File "/Users/adantra/anaconda/envs/default/lib/python2.7/site-packages/sfepy/terms/terms.py", line 728, in get_conn_info

    is_trace = self.arg_traces[pvar.name]

KeyError: 'press'


I am pretty sure it is related to the way I am defining the Field Variable but I don't know how to fix it. Any suggestion?


Regards,


Adolfo


On Thu, Mar 31, 2016 at 8:43 AM, Robert Cimrman <cimr...@ntc.zcu.cz> wrote:
I cannot run the script without the mesh .geo file, but anyway, a few remarks:

- the press_load Function instance is not used anywhere, do something like:

   functions = Functions([press_load])
   ...
   pb = Problem('elasticity', equations=eqs, nls=nls, ls=ls, functions=functions)

   - then the function will be available for equations etc. (Problem.time_update() also can take 'functions' argument.)

- line 338: use get_mat instead of get_mat1

Could you send also the geometry file, so that I could run it?

r.


On 03/31/2016 03:15 PM, Adolfo Rodriguez wrote:
Robert,

My script goes attached. The function is specified in line 262, defined in
line 41 and used in term t4 in line 302.

Thanks!



On Thursday, March 31, 2016 at 1:46:43 AM UTC-5, Robert Cimrman wrote:

Hi Adolfo,

On 03/31/2016 02:02 AM, Adolfo Rodriguez wrote:
I am trying to use a "parameter" field variable in interactive mode.
What I
am trying to do is very similar to the thermo-elaticity example, but for
some reason I cannot make it work in interactive mode.

Note that you can set data of a variable directly in the interactive mode,
using Variable.set_data().

In the thermo-elasticity example the parameter field variable is defined
as
follows

def get_temperature_load(ts, coors, region=None):
      """    Temperature load depends on the `x` coordinate.    """
      x = coors[:, 0]
      return (x - x.min())**2 - T0


fields = {
      'displacement': ('real', 3, 'Omega', 1),
      'temperature': ('real', 1, 'Omega', 1),}


variables = {
      'u' : ('unknown field', 'displacement', 0),
      'v' : ('test field', 'displacement', 'u'),
      'T' : ('parameter field', 'temperature',
             {'setter' : 'get_temperature_load'}),}


equations = {
      'balance_of_forces' :
      """dw_lin_elastic.2.Omega( solid.D, v, u )     - dw_biot.2.Omega(
solid.alpha, v, T )     = 0""",}


In interactive mode this is what I am doing the following:

field_p = Field.from_args('fp', nm.float64, 1, omega,

                                 approx_order=order_p)


press_load = Function('press_load',get_pressure_load)

press = FieldVariable('pressure','parameter',field_p,special={'setter'
:press_load},

                            primary_var_name='(set-to-None)')


And the corresponding term:


t20 = Term.new('dw_laplace(matalpha.k, q, press)',

                     integral, omega, matalpha=matalpha, q=q,
press=press)


But this does not work.

Could you send the code that does not work, that could be run and tried?
There
might be a bug because I have never used a setter function in the
interactive
mode - I use set_data() directly instead - see also
FieldVariable.time_update().

r.



--
You received this message because you are subscribed to a topic in the Google Groups "sfepy-devel" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sfepy-devel/vlwtFrdnWgw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to sfepy-devel...@googlegroups.com.
To post to this group, send email to sfepy...@googlegroups.com.
Visit this group at https://groups.google.com/group/sfepy-devel.