Changeset 32e3c9b in sasmodels for sasmodels/generate.py


Ignore:
Timestamp:
Jul 21, 2016 2:08:04 PM (8 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
b966a96
Parents:
42356c8
Message:

dll version of magnetic sld

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/generate.py

    ra738209 r32e3c9b  
    387387 
    388388 
    389 def kernel_name(model_info, is_2d): 
    390     # type: (ModelInfo, bool) -> str 
     389def kernel_name(model_info, variant): 
     390    # type: (ModelInfo, str) -> str 
    391391    """ 
    392392    Name of the exported kernel symbol. 
    393     """ 
    394     return model_info.name + "_" + ("Iqxy" if is_2d else "Iq") 
     393 
     394    *variant* is "Iq", "Iqxy" or "Imagnetic". 
     395    """ 
     396    return model_info.name + "_" + variant 
    395397 
    396398 
     
    555557    refs = ["_q[_i]"] + _call_pars("_v.", partable.iq_parameters) 
    556558    call_iq = "#define CALL_IQ(_q,_i,_v) Iq(%s)" % (",".join(refs)) 
    557     if _have_Iqxy(user_code): 
     559    if _have_Iqxy(user_code) or isinstance(model_info.Iqxy, str): 
    558560        # Call 2D model 
    559         refs = ["q[2*_i]", "q[2*_i+1]"] + _call_pars("_v.", partable.iqxy_parameters) 
     561        refs = ["_q[2*_i]", "_q[2*_i+1]"] + _call_pars("_v.", partable.iqxy_parameters) 
    560562        call_iqxy = "#define CALL_IQ(_q,_i,_v) Iqxy(%s)" % (",".join(refs)) 
    561563    else: 
     
    566568        call_iqxy = "#define CALL_IQ(_q,_i,_v) Iq(%s)" % (",".join(pars_sqrt)) 
    567569 
     570    magpars = [k-2 for k,p in enumerate(partable.call_parameters) 
     571               if p.type == 'sld'] 
     572 
    568573    # Fill in definitions for numbers of parameters 
    569574    source.append("#define MAX_PD %s"%partable.max_pd) 
    570575    source.append("#define NPARS %d"%partable.npars) 
     576    source.append("#define NUM_MAGNETIC %d" % len(magpars)) 
     577    source.append("#define MAGNETIC_PARS %s"%",".join(str(k) for k in magpars)) 
    571578 
    572579    # TODO: allow mixed python/opencl kernels? 
     
    584591    source = [ 
    585592        # define the Iq kernel 
    586         "#define KERNEL_NAME %s_Iq"%name, 
     593        "#define KERNEL_NAME %s_Iq" % name, 
    587594        call_iq, 
    588595        kernel_code, 
     
    591598 
    592599        # define the Iqxy kernel from the same source with different #defines 
    593         "#define KERNEL_NAME %s_Iqxy"%name, 
     600        "#define KERNEL_NAME %s_Iqxy" % name, 
    594601        call_iqxy, 
    595602        kernel_code, 
     603        "#undef CALL_IQ", 
     604        "#undef KERNEL_NAME", 
     605 
     606        # define the Imagnetic kernel 
     607        "#define KERNEL_NAME %s_Imagnetic" % name, 
     608        "#define MAGNETIC 1", 
     609        call_iqxy, 
     610        kernel_code, 
     611        "#undef MAGNETIC", 
    596612        "#undef CALL_IQ", 
    597613        "#undef KERNEL_NAME", 
Note: See TracChangeset for help on using the changeset viewer.