[Developers] libraries of functions

Steve Martell SteveM at iphc.int
Tue Aug 12 12:45:38 PDT 2014


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/a0eaa9b9/attachment-0001.html>


More information about the Developers mailing list