然后又去pimpleFoam跑了一下,代码改成这样的:
momentumSource
{
     type            vectorCodedSource;
     active          yes;
     name            sourceTime;
        vectorCodedSourceCoeffs
        {
            selectionMode   all;
          //  cellZone        pZone;
            fields          (U);
            codeInclude
            #{
                
            #};
            codeCorrect
            #{
        //        Pout<< "**codeCorrect**" << endl;
            #};
            codeAddSup
            #{
       //         Pout<< "**codeAddSup**" << endl;
         
               //    const vectorField& C = mesh_.C();
                  const scalarField& V = mesh_.V();
                  vectorField& Usource = eqn.source();
                  const vectorField& U = mesh().lookupObject<volVectorField>("U");
                 // const scalarField& Rho = mesh().lookupObject<volScalarField>("rho");
                  const scalarField& nu = mesh().lookupObject<volScalarField>("nu");
                //  const scalarField& magU = mag(U);
                scalar A = 1e2;
                scalar B = 1e2;
              //  vector C(0,1e4,0);
               
                   
                   
                    forAll(V,i)
                    {
                        const scalar x = mesh_.C()[i][0];
                        const scalar y = mesh_.C()[i][1];
        
                        if(x <  0.5 && x > 0 && y <  0.5 && y >  0.45)
                       {  
                        Usource[i] +=  (1e-5 * A + mag(U[i])* B * 0.5 ) * U[i]* V[i];
                       
                          // Usource =  (A * U[i] + B * mag(U[i]) * U[i]) * V[i];       
                          //  Usource[i] += - C * V[i]; 
                       }
                    
                   
                    
                    }   
                // Info << "***codeAddSup***" << nl;     
                
                                                  
                               
            #};
            codeSetValue
            #{
               // Pout<< "**codeSetValue**" << endl;
            #};
            // Dummy entry. Make dependent on above to trigger recompilation
            code
            #{
                $codeInclude
                $codeCorrect
                $codeAddSup
                $codeSetValue
            #};
        }
        sourceTimeCoeffs
        {
            $vectorCodedSourceCoeffs;
        }
}
跑完的速度场是这样:
pimple.gif
就完全处于A和B只能在1e2这个数量级,但凡再大一点就直接浮点溢出了。。。完全不知道是咋回事。。