Mercurial > hg > camir-aes2014
view toolboxes/FullBNT-1.0.7/bnt/potentials/@scgpot/extension_pot.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line source
function pot = extension_pot(oldpot, ddom_u, dsizes, ctaildom_u, csizes) % EXTENSION_POT Extense a stable CG potential. % pot = extension_pot(oldpot, ddom_u, ctaildom_u, dsizes, csizes) % ddom_u Added discrete nodes % ctaildom_u Added continuous tail nodes % csizes is the size of the tail nodes. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % A CG potential can be extended by adding discrete variables to its % % domain of continuous variables to its tail % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ddom = myunion(oldpot.ddom, ddom_u); ctaildom = myunion(oldpot.ctaildom, ctaildom_u); cheaddom = oldpot.cheaddom; udom = myunion(ddom_u, ctaildom_u); domain = myunion(oldpot.domain, udom); ns = zeros(1,max(domain)); ns(ddom_u) = dsizes; ns(ctaildom_u) = csizes; ns(oldpot.ddom) = oldpot.dsizes; ns(oldpot.cheaddom) = oldpot.cheadsizes; ns(oldpot.ctaildom) = oldpot.ctailsizes; dsizes = ns(ddom); dsize = prod(ns(ddom)); cheadsizes = ns(cheaddom); cheadsize = sum(ns(cheaddom)); ctailsizes = ns(ctaildom); ctailsize = sum(ns(ctaildom)); BZ = zeros(cheadsize, ctailsize); potarray = cell(1, dsize); mask = find_equiv_posns(oldpot.ddom, ddom); tmask = find_equiv_posns(oldpot.ctaildom, ctaildom); tu = block(tmask, ctailsizes); for i=1:dsize sub1 = ind2subv(dsizes, i); sub2 = sub1(mask); ind = subv2ind(oldpot.dsizes, sub2); if isempty(ind) ind = 1; end potc = struct(oldpot.scgpotc{ind}); p = potc.p; B = BZ; if ~isempty(B) B(:, tu) = potc.B; end potarray{i} = scgcpot(cheadsize, ctailsize, p, potc.A, B, potc.C); end pot = scgpot(ddom, cheaddom, ctaildom, ns,potarray);