Ignore:
Timestamp:
07/07/10 11:31:55 (15 years ago)
Author:
jschierm
Message:

Qmu: Calculate mass fluxes on multiple profiles.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/dakota/qmuresponse.m

    r3736 r4430  
    88elseif strcmpi(descriptor,'max_vx'),
    99        response=max(processedresults.vx);
     10elseif strcmpi(descriptor,'max_abs_vx'),
     11        response=max(abs(processedresults.vx));
    1012elseif strcmpi(descriptor,'min_vx'),
    1113        response=min(processedresults.vx);
    1214elseif strcmpi(descriptor,'max_vy'),
    1315        response=max(processedresults.vy);
     16elseif strcmpi(descriptor,'max_abs_vy'),
     17        response=max(abs(processedresults.vy));
    1418elseif strcmpi(descriptor,'min_vy'),
    1519        response=min(processedresults.vy);
    16 elseif strcmpi(descriptor,'mass_flux'),
     20elseif strncmpi(descriptor,'mass_flux',9),
     21        indx=str2int(descriptor(10:end));
     22        if isempty(indx) || ~indx
     23                indx=1;
     24        end
     25
    1726        %call mass flux module.
    1827        m_dh=models.dh;
    1928        m_dhu=models.dhu;
    2029        m_ds=models.ds;
    21         ishutter=m_dh.parameters.ishutter;
    22         ismacayealpattyn=m_dhu.parameters.ismacayealpattyn;
     30        ishutter=m_dhu.parameters.ishutter;
     31        ismacayealpattyn=m_dh.parameters.ismacayealpattyn;
    2332        isstokes=m_ds.parameters.isstokes;
    2433        if ishutter,
    25                 response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
     34                if isnumeric(m_dhu.parameters.qmu_mass_flux_segments)
     35                        response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
     36                else
     37                        save=m_dhu.parameters.qmu_mass_flux_segments;
     38                        m_dhu.parameters.qmu_mass_flux_segments=m_dhu.parameters.qmu_mass_flux_segments{indx};
     39                        response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
     40                        m_dhu.parameters.qmu_mass_flux_segments=save;
     41                        clear save
     42                end
    2643        elseif ismacayealpattyn,
    27                 response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
     44
     45% for now, separate all segments from double array for parallel to make cells
     46        if (length(m_dh.parameters.qmu_mass_flux_num_segments) > 1)
     47                segments=m_dh.parameters.qmu_mass_flux_segments;
     48                m_dh.parameters.qmu_mass_flux_segments=cell(size(m_dh.parameters.qmu_mass_flux_num_segments));
     49                ipt=1;
     50                for i=1:length(m_dh.parameters.qmu_mass_flux_num_segments)
     51                        if m_dh.parameters.qmu_mass_flux_num_segments(i)
     52                                m_dh.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_dh.parameters.qmu_mass_flux_num_segments(i)-1,:);
     53                                ipt=ipt+m_dh.parameters.qmu_mass_flux_num_segments(i);
     54                        end
     55                end
     56                clear segments
     57        end
     58
     59                if isnumeric(m_dh.parameters.qmu_mass_flux_segments)
     60                        response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
     61                else
     62                        save=m_dh.parameters.qmu_mass_flux_segments;
     63                        m_dh.parameters.qmu_mass_flux_segments=m_dh.parameters.qmu_mass_flux_segments{indx};
     64                        response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
     65                        m_dh.parameters.qmu_mass_flux_segments=save;
     66                        clear save
     67                end
    2868        elseif isstokes,
    29                 response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
     69                if isnumeric(m_ds.parameters.qmu_mass_flux_segments)
     70                        response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
     71                else
     72                        save=m_ds.parameters.qmu_mass_flux_segments;
     73                        m_ds.parameters.qmu_mass_flux_segments=m_ds.parameters.qmu_mass_flux_segments{indx};
     74                        response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
     75                        m_ds.parameters.qmu_mass_flux_segments=save;
     76                        clear save
     77                end
    3078        else
    3179                error('qmuresponse error message: unsupported analysis type for mass_flux computation!');
    3280        end
    3381else
    34         error(['qmuresponse error message: unknow descriptor ' descriptor]);
     82        error(['qmuresponse error message: unknown descriptor ' descriptor]);
    3583end
     84
Note: See TracChangeset for help on using the changeset viewer.