コード例 #1
0
        public ChMaterialCompositeNSC(ChMaterialCompositionStrategy <float> strategy,
                                      ChMaterialSurfaceNSC mat1,
                                      ChMaterialSurfaceNSC mat2)
        {
            static_friction  = strategy.CombineFriction(mat1.static_friction, mat2.static_friction);
            sliding_friction = strategy.CombineFriction(mat1.sliding_friction, mat2.sliding_friction);
            restitution      = strategy.CombineRestitution(mat1.restitution, mat2.restitution);
            cohesion         = strategy.CombineCohesion(mat1.cohesion, mat2.cohesion);
            dampingf         = strategy.CombineDamping(mat1.dampingf, mat2.dampingf);
            compliance       = strategy.CombineCompliance(mat1.compliance, mat2.compliance);
            complianceT      = strategy.CombineCompliance(mat1.complianceT, mat2.complianceT);

            rolling_friction  = strategy.CombineFriction(mat1.rolling_friction, mat2.rolling_friction);
            spinning_friction = strategy.CombineFriction(mat1.spinning_friction, mat2.spinning_friction);
            complianceRoll    = strategy.CombineCompliance(mat1.complianceRoll, mat2.complianceRoll);
            complianceSpin    = strategy.CombineCompliance(mat1.complianceSpin, mat2.complianceSpin);
        }
コード例 #2
0
        public ChMaterialCompositeSMC(ChMaterialCompositionStrategy <float> strategy,
                                      ChMaterialSurfaceSMC mat1,
                                      ChMaterialSurfaceSMC mat2)
        {
            float inv_E = (1 - mat1.poisson_ratio * mat1.poisson_ratio) / mat1.young_modulus +
                          (1 - mat2.poisson_ratio * mat2.poisson_ratio) / mat2.young_modulus;
            float inv_G = 2 * (2 - mat1.poisson_ratio) * (1 + mat1.poisson_ratio) / mat1.young_modulus +
                          2 * (2 - mat2.poisson_ratio) * (1 + mat2.poisson_ratio) / mat2.young_modulus;

            E_eff = 1 / inv_E;
            G_eff = 1 / inv_G;

            mu_eff              = strategy.CombineFriction(mat1.static_friction, mat2.static_friction);
            cr_eff              = strategy.CombineRestitution(mat1.restitution, mat2.restitution);
            adhesion_eff        = strategy.CombineCohesion(mat1.constant_adhesion, mat2.constant_adhesion);
            adhesionMultDMT_eff = strategy.CombineAdhesionMultiplier(mat1.adhesionMultDMT, mat2.adhesionMultDMT);

            kn = strategy.CombineStiffnessCoefficient(mat1.kn, mat2.kn);
            kt = strategy.CombineStiffnessCoefficient(mat1.kt, mat2.kt);
            gn = strategy.CombineDampingCoefficient(mat1.gn, mat2.gn);
            gt = strategy.CombineDampingCoefficient(mat1.gt, mat2.gt);
        }