11#ifndef __ProjectProductGradient_H
12#define __ProjectProductGradient_H
14#include "MEAL/Projection.h"
18 template <
class Function,
class Grad>
20 const std::vector<Grad>& input,
21 std::vector<Grad>& output)
23 unsigned nparam = model->get_nparam();
25 for (
unsigned iparam = 0; iparam < nparam; iparam++)
27 unsigned imap = model.get_map()->get_imap (iparam);
30 std::cerr <<
"ProjectGradient iparam=" << iparam <<
" imap=" << imap
31 <<
" igrad=" << igrad << std::endl;
33 if (imap >= output.size())
34 throw Error (InvalidRange,
"MEAL::ProjectGradient",
35 "iparam=%u -> imap=%u >= composite.nparam=%u",
36 iparam, imap, output.size());
38 output[imap] += input[igrad];
44 template <
class Function,
class Grad>
46 const std::vector<Grad>& input,
47 std::vector<Grad>& output)
50 ProjectGradient (model, igrad, input, output);
53 template <
class Function,
class Grad>
55 const std::vector<Grad>& input,
56 std::vector<Grad>& output)
58 unsigned nparam = output.size();
59 unsigned nmodel = model.size();
62 for (
unsigned iparam=0; iparam<nparam; iparam++)
67 for (
unsigned imodel=0; imodel<nmodel; imodel++)
70 std::cerr <<
"ProjectGradient imodel=" << imodel
71 <<
" igrad=" << igrad << std::endl;
73 ProjectGradient (model[imodel], igrad, input, output);
77 if (igrad != input.size())
78 throw Error (InvalidState,
"MEAL::ProjectGradient",
79 "on completion igrad=%d != ngrad=%d",
static bool verbose
Verbosity flag.
Definition Function.h:54
Template combines a reference to a Component and its Projection.
Definition Projection.h:60
Namespace in which all modeling and calibration related code is declared.
Definition ExampleComplex2.h:16