[Developers] libraries of functions

Mark Maunder mmaunder at iattc.org
Tue Aug 12 12:51:54 PDT 2014


Any comments on the use of templates messing up the various forms of dvariable and the automatic translation between the different forms of dvariable (sorry for not using the right terminology). I think the beneficial use of templates for functions in ADMB might be a redherring.

Mark

From: developers-bounces at admb-project.org [mailto:developers-bounces at admb-project.org] On Behalf Of Steve Martell
Sent: Tuesday, August 12, 2014 12:46 PM
To: William Stockhausen - NOAA Federal
Cc: developers at admb-project.org
Subject: Re: [Developers] libraries of functions

My bad

Should have been

FUNCTION dvariable Richards(...)

S
On Aug 12, 2014, at 12:40 PM, William Stockhausen - NOAA Federal <william.stockhausen at noaa.gov<mailto:william.stockhausen at noaa.gov>> wrote:


I don't think your suggestion will work, Steve (he said without having tried it). If I understand things correctly (going out on a looong limb here), "FUNCTION" is an identifier to the tpl2cpp translator that what follows is a function that 1) whose signature should be added to the model_parameters class declaration in tpl_name.htp and 2) whose implementation should be added to tpl_name.cpp.

A nice (but probably tough to implement) feature in tpl2cpp would be the ability to put the following:

FUNCTION dvariable model_parameters::Richards(const dvariable &age, const dvariable &Linf, const dvariable &K, const dvariable &t0, const dvariable &p)
    dvariable Length=Linf*pow((1+(1/p)*exp(-K*(age-t0))),-p);
    return(Length);

into a file (functions.cxx, say) and be able to "include" that text in the tpl you're converting to cpp at a stage in the process before FUNCTIONs get converted to cpp equivalents. If such a feature is currently available, I haven't found it.

Buck
On Mon, Aug 11, 2014 at 3:59 PM, Steve Martell <martell.steve at gmail.com<mailto:martell.steve at gmail.com>> wrote:
Try:
FUNCTION dvariable model_parameters::Richards(const dvariable &age, const dvariable &Linf, const dvariable &K, const dvariable &t0, const dvariable &p)
{
  {
    dvariable Length=Linf*pow((1+(1/p)*exp(-K*(age-t0))),-p);
    return(Length);
  }
}

On Aug 11, 2014, at 3:49 PM, Mark Maunder <mmaunder at iattc.org<mailto:mmaunder at iattc.org>> wrote:


Why do I get an error if I put the following function in the file CAPAM_Growth.hpp and include it using #include<CAPAM_Growth.hpp> but if I put it in the tpl using the FUNCTION section I do not? The translator appears to just put it in the cpp with no changes

dvariable model_parameters::Richards(const dvariable &age, const dvariable &Linf, const dvariable &K, const dvariable &t0, const dvariable &p)
{
  {
    dvariable Length=Linf*pow((1+(1/p)*exp(-K*(age-t0))),-p);
    return(Length);
  }
}

The errors I get are

In file included from igm.cpp:3:0:
./CAPAM_Growth.hpp:130:142: error: invalid use of incomplete type 'struct model_parameters'
c:/ADMB/admb101-gcc452-win32\include/admodel.h:107:9: error: forward declaration of 'struct model_parameters'
igm.cpp: In member function 'virtual void model_parameters::userfunction()':
igm.cpp:127:46: error: no matching function for call to 'Richards(prevariable, named_dvariable&, named_dvariable&, param_init_number&, named_dvariable&)'
igm.cpp:128:58: error: no matching function for call to 'Richards(prevariable&, named_dvariable&, named_dvariable&, param_init_number&, named_dvariable&)'
igm.cpp:139:49: error: no matching function for call to 'Richards(double&, named_dvariable&, named_dvariable&, param_init_number&, named_dvariable&)'




The selectivity special issue of the journal Fisheries Research is now published
http://www.sciencedirect.com/science/journal/01657836/158/supp/C


The Stock Synthesis special issue of the journal Fisheries Research
http://www.sciencedirect.com/science/journal/01657836/142

Mark Maunder
Head of the Stock Assessment Program
Inter-American  Tropical Tuna Commission
8901 La Jolla Shores Dr.
La Jolla, CA  92037-1508, USA

Tel: (858) 546-7027<tel:%28858%29%20546-7027>
Fax: (858) 546-7133<tel:%28858%29%20546-7133>
mmaunder at iattc.org<mailto:mmaunder at iattc.org>
http://www.fisheriesstockassessment.com/TikiWiki/tiki-index.php?page=Mark+Maunder

Visit the Center for the Advancement of Population Assessment Methodology at
http://www.capamresearch.org/

Visit the AD Model Builder project at
 http://admb-project.org/

See the following website for information on fisheries stock assessment http://www.fisheriesstockassessment.com/



--
You received this message because you are subscribed to the Google Groups "admb-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to admb-users+unsubscribe at googlegroups.com<mailto:admb-users+unsubscribe at googlegroups.com>.
To post to this group, send email to admb-users at googlegroups.com<mailto:admb-users at googlegroups.com>.
Visit this group at http://groups.google.com/group/admb-users.
For more options, visit https://groups.google.com/d/optout.


_______________________________________________
Developers mailing list
Developers at admb-project.org<mailto:Developers at admb-project.org>
http://lists.admb-project.org/mailman/listinfo/developers

_______________________________________________
Developers mailing list
Developers at admb-project.org<mailto:Developers at admb-project.org>
http://lists.admb-project.org/mailman/listinfo/developers


________________________________

This internet e-mail message, and any files transmitted with it, contains confidential, privileged information that is intended only for the addressee. If you have received this e-mail message in error, please call us at (206) 634-1838 collect if necessary) and ask to speak to the message sender. Nothing in this e-mail or the act of transmitting it, is to be construed as a waiver of any rights or privileges enjoyed by the sender or the International Pacific Halibut Commission pursuant to the International Organizations Immunities Act, 22 U.S.C. Sec. 288 et seq.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.admb-project.org/pipermail/developers/attachments/20140812/cdf6e247/attachment-0001.html>


More information about the Developers mailing list