• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ phx::MDField类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中phx::MDField的典型用法代码示例。如果您正苦于以下问题:C++ MDField类的具体用法?C++ MDField怎么用?C++ MDField使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了MDField类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: any_f

inline
void PHX::FieldManager<Traits>::
setUnmanagedField(PHX::MDField<DataT,Tag0,Tag1,Tag2,Tag3,Tag4,
                  Tag5,Tag6,Tag7>& f)
{
  PHX::any any_f(f.get_static_view());
  m_eval_containers.template getAsObject<EvalT>()->setUnmanagedField(f.fieldTag(),any_f);
}
开发者ID:cihanuq,项目名称:Trilinos,代码行数:8,代码来源:Phalanx_FieldManager_Def.hpp


示例2:

inline
void PHX::FieldManager<Traits>::
getFieldData(PHX::MDField<const DataT,Tag0,Tag1,Tag2,Tag3,Tag4,
	     Tag5,Tag6,Tag7>& f)
{
  PHX::any a = m_eval_containers.template
    getAsObject<EvalT>()->getFieldData(f.fieldTag());

  f.setFieldData(a);
}
开发者ID:cihanuq,项目名称:Trilinos,代码行数:10,代码来源:Phalanx_FieldManager_Def.hpp


示例3: coordinate

//**********************************************************************
PHX_EVALUATE_FIELDS(CoordinatesEvaluator,d)
{
    PHX::MDField<double,Cell,NODE,Dim> coords = this->wda(d).cell_vertex_coordinates;
    // const Intrepid::FieldContainer<double> & coords = this->wda(d).cell_vertex_coordinates;

    // copy coordinates directly into the field
    for(std::size_t i=0; i<d.num_cells; i++)
        for(int j=0; j<coords.dimension(1); j++)
            coordinate(i,j) = coords(i,j,dimension);
}
开发者ID:rainiscold,项目名称:trilinos,代码行数:11,代码来源:Panzer_CoordinatesEvaluator_impl.hpp


示例4: getCubatureCV

  void IntegrationValues2<Scalar>::
  getCubatureCV(const PHX::MDField<Scalar,Cell,NODE,Dim>& in_node_coordinates)
  {
    int num_space_dim = int_rule->topology->getDimension();
    if (int_rule->isSide() && num_space_dim==1) {
       std::cout << "WARNING: 0-D quadrature rule infrastructure does not exist!!! Will not be able to do "
                 << "non-natural integration rules.";
       return; 
    }
     {
      size_type num_cells = in_node_coordinates.dimension(0);
      size_type num_nodes = in_node_coordinates.dimension(1);
      size_type num_dims = in_node_coordinates.dimension(2);

      for (size_type cell = 0; cell < num_cells;  ++cell) {
        for (size_type node = 0; node < num_nodes; ++node) {
          for (size_type dim = 0; dim < num_dims; ++dim) {
            node_coordinates(cell,node,dim) =
                in_node_coordinates(cell,node,dim);
            dyn_node_coordinates(cell,node,dim) =
                Sacado::ScalarValue<Scalar>::eval(in_node_coordinates(cell,node,dim));
          }
        }
      }
     }

    if (int_rule->cv_type == "side")
      intrepid_cubature->getCubature(dyn_phys_cub_points.get_view(),dyn_phys_cub_norms.get_view(),dyn_node_coordinates.get_view());
    else 
      intrepid_cubature->getCubature(dyn_phys_cub_points.get_view(),dyn_phys_cub_weights.get_view(),dyn_node_coordinates.get_view());

    size_type num_cells = dyn_phys_cub_points.dimension(0);
    size_type num_ip =dyn_phys_cub_points.dimension(1); 
    size_type num_dims = dyn_phys_cub_points.dimension(2);

    for (size_type cell = 0; cell < num_cells;  ++cell) {
        for (size_type ip = 0; ip < num_ip;  ++ip) {
           if (int_rule->cv_type != "side")
               weighted_measure(cell,ip) = dyn_phys_cub_weights(cell,ip);
           for (size_type dim = 0; dim < num_dims; ++dim) {
               ip_coordinates(cell,ip,dim) = dyn_phys_cub_points(cell,ip,dim);
               if (int_rule->cv_type == "side")
                  weighted_normals(cell,ip,dim) = dyn_phys_cub_norms(cell,ip,dim);
           }
        }
     }

  }
开发者ID:trilinos,项目名称:Trilinos,代码行数:48,代码来源:Panzer_IntegrationValues2.cpp


示例5: getCubature

  void IntegrationValues2<Scalar>::
  getCubature(const PHX::MDField<Scalar,Cell,NODE,Dim>& in_node_coordinates)
  {
    int num_space_dim = int_rule->topology->getDimension();
    if (int_rule->isSide() && num_space_dim==1) {
       std::cout << "WARNING: 0-D quadrature rule ifrastructure does not exist!!! Will not be able to do "
                 << "non-natural integration rules.";
       return; 
    }
    
    Intrepid2::CellTools<PHX::Device::execution_space> cell_tools;
    
    if (!int_rule->isSide())
      intrepid_cubature->getCubature(dyn_cub_points.get_view(), dyn_cub_weights.get_view());
    else {
      intrepid_cubature->getCubature(dyn_side_cub_points.get_view(), dyn_cub_weights.get_view());
      
      cell_tools.mapToReferenceSubcell(dyn_cub_points.get_view(), 
                                       dyn_side_cub_points.get_view(),
                                       int_rule->spatial_dimension-1,
                                       int_rule->side, 
                                       *(int_rule->topology));
    }

    // IP coordinates
    cell_tools.mapToPhysicalFrame(ip_coordinates.get_view(),
                                  dyn_cub_points.get_view(),
                                  in_node_coordinates.get_view(),
                                  *(int_rule->topology));
  }
开发者ID:trilinos,项目名称:Trilinos,代码行数:30,代码来源:Panzer_IntegrationValues2.cpp


示例6: evaluateContainer

    virtual void evaluateContainer(const PHX::MDField<panzer::Traits::Residual::ScalarT,panzer::Cell,panzer::IP,panzer::Dim> & points,
                                   PHX::MDField<panzer::Traits::Residual::ScalarT> & field) const
    {
        int num_cells = field.dimension(0);
        int num_qp = points.dimension(1);

        for(int i=0; i<num_cells; i++) {
            for(int j=0; j<num_qp; j++) {
                double x = points(i,j,0); // just x and y
                double y = points(i,j,1);

                field(i,j,0) = (x+y)*(x+y);
                field(i,j,1) = sin(x+y);
            }
        }
    }
开发者ID:abhishek4747,项目名称:trilinos,代码行数:16,代码来源:basis_times_vector.cpp


示例7: af

void IntegrationValues2<Scalar>::
evaluateValues(const PHX::MDField<Scalar,Cell,NODE,Dim>& in_node_coordinates,
               const PHX::MDField<Scalar,Cell,IP,Dim>& other_ip_coordinates)
{
    getCubature(in_node_coordinates);

    {
        // Determine the permutation.
        std::vector<size_type> permutation(other_ip_coordinates.dimension(1));
        permuteToOther(ip_coordinates, other_ip_coordinates, permutation);
        // Apply the permutation to the cubature arrays.
        MDFieldArrayFactory af(prefix, alloc_arrays);
        const size_type num_ip = dyn_cub_points.dimension(0);
        {
            const size_type num_dim = dyn_side_cub_points.dimension(1);
            DblArrayDynamic old_dyn_side_cub_points = af.template buildArray<double,IP,Dim>(
                        "old_dyn_side_cub_points", num_ip, num_dim);
            old_dyn_side_cub_points.deep_copy(dyn_side_cub_points);
            for (size_type ip = 0; ip < num_ip; ++ip)
                if (ip != permutation[ip])
                    for (size_type dim = 0; dim < num_dim; ++dim)
                        dyn_side_cub_points(ip, dim) = old_dyn_side_cub_points(permutation[ip], dim);
        }
        {
            const size_type num_dim = dyn_cub_points.dimension(1);
            DblArrayDynamic old_dyn_cub_points = af.template buildArray<double,IP,Dim>(
                    "old_dyn_cub_points", num_ip, num_dim);
            old_dyn_cub_points.deep_copy(dyn_cub_points);
            for (size_type ip = 0; ip < num_ip; ++ip)
                if (ip != permutation[ip])
                    for (size_type dim = 0; dim < num_dim; ++dim)
                        dyn_cub_points(ip, dim) = old_dyn_cub_points(permutation[ip], dim);
        }
        {
            DblArrayDynamic old_dyn_cub_weights = af.template buildArray<double,IP>(
                    "old_dyn_cub_weights", num_ip);
            old_dyn_cub_weights.deep_copy(dyn_cub_weights);
            for (size_type ip = 0; ip < dyn_cub_weights.dimension(0); ++ip)
                if (ip != permutation[ip])
                    dyn_cub_weights(ip) = old_dyn_cub_weights(permutation[ip]);
        }
        {
            const size_type num_cells = ip_coordinates.dimension(0), num_ip = ip_coordinates.dimension(1),
                            num_dim = ip_coordinates.dimension(2);
            Array_CellIPDim old_ip_coordinates = af.template buildStaticArray<Scalar,Cell,IP,Dim>(
                    "old_ip_coordinates", num_cells, num_ip, num_dim);
            Kokkos::deep_copy(old_ip_coordinates.get_kokkos_view(), ip_coordinates.get_kokkos_view());
            for (size_type cell = 0; cell < num_cells; ++cell)
                for (size_type ip = 0; ip < num_ip; ++ip)
                    if (ip != permutation[ip])
                        for (size_type dim = 0; dim < num_dim; ++dim)
                            ip_coordinates(cell, ip, dim) = old_ip_coordinates(cell, permutation[ip], dim);
        }
        // All subsequent calculations inherit the permutation.
    }

    evaluateRemainingValues(in_node_coordinates);
}
开发者ID:crtrott,项目名称:Trilinos,代码行数:58,代码来源:Panzer_IntegrationValues2.cpp


示例8:

panzer::GatherSolution_BlockedTpetra<EvalT, TRAITS,S,LO,GO,NodeT>::
GatherSolution_BlockedTpetra(
  const Teuchos::RCP<const BlockedDOFManager<LO,GO> > & indexer,
  const Teuchos::ParameterList& p)
{
  const std::vector<std::string>& names =
    *(p.get< Teuchos::RCP< std::vector<std::string> > >("DOF Names"));

  Teuchos::RCP<panzer::PureBasis> basis =
    p.get< Teuchos::RCP<panzer::PureBasis> >("Basis");

  for (std::size_t fd = 0; fd < names.size(); ++fd) {
    PHX::MDField<ScalarT,Cell,NODE> field = PHX::MDField<ScalarT,Cell,NODE>(names[fd],basis->functional);
    this->addEvaluatedField(field.fieldTag());
  }

  this->setName("Gather Solution");
}
开发者ID:trilinos,项目名称:Trilinos,代码行数:18,代码来源:Panzer_GatherSolution_BlockedTpetra_impl.hpp


示例9: transformWeightedGradientBF

void transformWeightedGradientBF (
    const Field<2>& F, const RealType& F_det,
    const PHX::MDField<RealType, Cell, Node, QuadPoint, Dim>& w_grad_bf,
    const int cell, const int pt, const int node, RealType w[3])
{
    const int nd = w_grad_bf.dimension(3);
    for (int k = 0; k < nd; ++k) {
        w[k] = 0;
        for (int i = 0; i < nd; ++i)
            w[k] += (w_grad_bf(cell, node, pt, i) * F()(cell, pt, i, k));
        w[k] /= F_det;
    }
}
开发者ID:TheDylanViper,项目名称:Albany,代码行数:13,代码来源:AAdapt_RC_Field.cpp


示例10: d

static void
permuteToOther(const PHX::MDField<Scalar,Cell,IP,Dim>& coords,
               const PHX::MDField<Scalar,Cell,IP,Dim>& other_coords,
               std::vector<typename ArrayTraits<Scalar,PHX::MDField<Scalar> >::size_type>& permutation)
{
    typedef typename ArrayTraits<Scalar,PHX::MDField<Scalar> >::size_type size_type;
    // We can safely assume: (1) The permutation is the same for every cell in
    // the workset. (2) The first workset has valid data. Hence we operate only
    // on cell 0.
    const size_type cell = 0;
    const size_type num_ip = coords.dimension(1), num_dim = coords.dimension(2);
    permutation.resize(num_ip);
    std::vector<char> taken(num_ip, 0);
    for (size_type ip = 0; ip < num_ip; ++ip) {
        // Find an other point to associate with ip.
        size_type i_min = 0;
        Scalar d_min = -1;
        for (size_type other_ip = 0; other_ip < num_ip; ++other_ip) {
            // For speed, skip other points that are already associated.
            if (taken[other_ip]) continue;
            // Compute the distance between the two points.
            Scalar d(0);
            for (size_type dim = 0; dim < num_dim; ++dim) {
                const Scalar diff = coords(cell, ip, dim) - other_coords(cell, other_ip, dim);
                d += diff*diff;
            }
            if (d_min < 0 || d < d_min) {
                d_min = d;
                i_min = other_ip;
            }
        }
        // Record the match.
        permutation[ip] = i_min;
        // This point is now taken.
        taken[i_min] = 1;
    }
}
开发者ID:crtrott,项目名称:Trilinos,代码行数:37,代码来源:Panzer_IntegrationValues2.cpp


示例11: dPhiInv

  void SurfaceBasis<EvalT, Traits>::computeJacobian(
      const PHX::MDField<MeshScalarT, Cell, QuadPoint, Dim, Dim> basis,
      const PHX::MDField<MeshScalarT, Cell, QuadPoint, Dim, Dim> dualBasis,
      PHX::MDField<MeshScalarT, Cell, QuadPoint> area)
  {
    const std::size_t worksetSize = basis.dimension(0);

    for (std::size_t cell(0); cell < worksetSize; ++cell) {
      for (std::size_t pt(0); pt < numQPs; ++pt) {
        Intrepid::Tensor<MeshScalarT> dPhiInv(3, &dualBasis(cell, pt, 0, 0));
        Intrepid::Tensor<MeshScalarT> dPhi(3, &basis(cell, pt, 0, 0));
        Intrepid::Vector<MeshScalarT> G_2(3, &basis(cell, pt, 2, 0));

        MeshScalarT j0 = Intrepid::det(dPhi);
        MeshScalarT jacobian = j0 *
          std::sqrt( Intrepid::dot(Intrepid::dot(G_2, Intrepid::transpose(dPhiInv) * dPhiInv), G_2));
        area(cell, pt) = jacobian * refWeights(pt);
      }
    }

  }
开发者ID:adam727,项目名称:Albany,代码行数:21,代码来源:SurfaceBasis_Def.hpp


示例12: if

void IntegrationValues2<Scalar>::
evaluateValuesCV(const PHX::MDField<Scalar,Cell,NODE,Dim> & in_node_coordinates)
{

    Intrepid2::CellTools<Scalar> cell_tools;

    {
        size_type num_cells = in_node_coordinates.dimension(0);
        size_type num_nodes = in_node_coordinates.dimension(1);
        size_type num_dims = in_node_coordinates.dimension(2);

        for (size_type cell = 0; cell < num_cells;  ++cell) {
            for (size_type node = 0; node < num_nodes; ++node) {
                for (size_type dim = 0; dim < num_dims; ++dim) {
                    node_coordinates(cell,node,dim) =
                        in_node_coordinates(cell,node,dim);
                    dyn_node_coordinates(cell,node,dim) =
                        Sacado::ScalarValue<Scalar>::eval(in_node_coordinates(cell,node,dim));
                }
            }
        }
    }

    if (int_rule->cv_type == "volume")
        intrepid_cubature->getCubature(dyn_phys_cub_points,dyn_phys_cub_weights,dyn_node_coordinates);

    else if (int_rule->cv_type == "side")
        intrepid_cubature->getCubature(dyn_phys_cub_points,dyn_phys_cub_norms,dyn_node_coordinates);

    if (int_rule->cv_type == "volume")
    {
        size_type num_cells = dyn_phys_cub_points.dimension(0);
        size_type num_ip = dyn_phys_cub_points.dimension(1);
        size_type num_dims = dyn_phys_cub_points.dimension(2);

        for (size_type cell = 0; cell < num_cells;  ++cell) {
            for (size_type ip = 0; ip < num_ip;  ++ip) {
                weighted_measure(cell,ip) = dyn_phys_cub_weights(cell,ip);
                for (size_type dim = 0; dim < num_dims; ++dim)
                    ip_coordinates(cell,ip,dim) = dyn_phys_cub_points(cell,ip,dim);
            }
        }
        cell_tools.mapToReferenceFrame(ref_ip_coordinates, ip_coordinates, node_coordinates,
                                       *(int_rule->topology),-1);

        cell_tools.setJacobian(jac, ref_ip_coordinates, node_coordinates,
                               *(int_rule->topology));

    }
    else if (int_rule->cv_type == "side")
    {
        size_type num_cells = dyn_phys_cub_points.dimension(0);
        size_type num_ip = dyn_phys_cub_points.dimension(1);
        size_type num_dims = dyn_phys_cub_points.dimension(2);

        for (size_type cell = 0; cell < num_cells;  ++cell) {
            for (size_type ip = 0; ip < num_ip;  ++ip) {
                for (size_type dim = 0; dim < num_dims; ++dim) {
                    ip_coordinates(cell,ip,dim) = dyn_phys_cub_points(cell,ip,dim);
                    weighted_normals(cell,ip,dim) = dyn_phys_cub_norms(cell,ip,dim);
                }
            }
        }

        cell_tools.mapToReferenceFrame(ref_ip_coordinates, ip_coordinates, node_coordinates,
                                       *(int_rule->topology),-1);
        cell_tools.setJacobian(jac, ref_ip_coordinates, node_coordinates,
                               *(int_rule->topology));
    }

    cell_tools.setJacobianInv(jac_inv, jac);

    cell_tools.setJacobianDet(jac_det, jac);

}
开发者ID:crtrott,项目名称:Trilinos,代码行数:75,代码来源:Panzer_IntegrationValues2.cpp


示例13:

void PHX::EvaluatorWithBaseImpl<Traits>::
addEvaluatedField(const PHX::MDField<DataT,Tag0,Tag1,Tag2,Tag3,
		  Tag4,Tag5,Tag6,Tag7>& f)
{ 
  this->addEvaluatedField(f.fieldTag());
}
开发者ID:Russell-Jones-OxPhys,项目名称:Trilinos,代码行数:6,代码来源:Phalanx_Evaluator_WithBaseImpl_Def.hpp


示例14: result

//**********************************************************************
PHX_EVALUATE_FIELDS(HessianTestEvaluator,workset)
{ 
  // Grad = y * std::cos(x*y)
  //      = x * std::cos(x*y)-0.25*std::sin(y)
  
  // Hess*v = dy * std::cos(x*y) - y * ( dx * sin(x*y) + dy * sin(x*y))
  //        = dx * std::cos(x*y) - x * ( dx * sin(x*y) + dy * sin(x*y)) - 0.25 * dy * std::cos(y)
  //
  for(int ip=0;ip<result.dimension_0();++ip)
    result(ip) = std::sin(x(ip)*y(ip))+0.25*std::cos(y(ip));
}
开发者ID:cihanuq,项目名称:Trilinos,代码行数:12,代码来源:hessian_test.cpp



注:本文中的phx::MDField类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ physics::ModelPtr类代码示例发布时间:2022-05-31
下一篇:
C++ phpproject::Ptr_t类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap