00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef fvMatrix_H
00041 #define fvMatrix_H
00042
00043 #include <finiteVolume/volFields.H>
00044 #include <finiteVolume/surfaceFields.H>
00045 #include <OpenFOAM/lduMatrix.H>
00046 #include <OpenFOAM/tmp.H>
00047 #include <OpenFOAM/autoPtr.H>
00048 #include <OpenFOAM/dimensionedTypes.H>
00049 #include <OpenFOAM/zeroField.H>
00050 #include <OpenFOAM/className.H>
00051
00052
00053
00054 namespace Foam
00055 {
00056
00057
00058
00059 template<class Type>
00060 class fvMatrix;
00061
00062 template<class Type>
00063 tmp<GeometricField<Type, fvPatchField, volMesh> > operator&
00064 (
00065 const fvMatrix<Type>&,
00066 const DimensionedField<Type, volMesh>&
00067 );
00068
00069 template<class Type>
00070 tmp<GeometricField<Type, fvPatchField, volMesh> > operator&
00071 (
00072 const fvMatrix<Type>&,
00073 const tmp<DimensionedField<Type, volMesh> >&
00074 );
00075
00076 template<class Type>
00077 tmp<GeometricField<Type, fvPatchField, volMesh> > operator&
00078 (
00079 const fvMatrix<Type>&,
00080 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00081 );
00082
00083 template<class Type>
00084 tmp<GeometricField<Type, fvPatchField, volMesh> > operator&
00085 (
00086 const tmp<fvMatrix<Type> >&,
00087 const DimensionedField<Type, volMesh>&
00088 );
00089
00090 template<class Type>
00091 tmp<GeometricField<Type, fvPatchField, volMesh> > operator&
00092 (
00093 const tmp<fvMatrix<Type> >&,
00094 const tmp<DimensionedField<Type, volMesh> >&
00095 );
00096
00097 template<class Type>
00098 tmp<GeometricField<Type, fvPatchField, volMesh> > operator&
00099 (
00100 const tmp<fvMatrix<Type> >&,
00101 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00102 );
00103
00104 template<class Type>
00105 Ostream& operator<<(Ostream&, const fvMatrix<Type>&);
00106
00107
00108
00109
00110
00111
00112 template<class Type>
00113 class fvMatrix
00114 :
00115 public refCount,
00116 public lduMatrix
00117 {
00118
00119
00120
00121 GeometricField<Type, fvPatchField, volMesh>& psi_;
00122
00123
00124 dimensionSet dimensions_;
00125
00126
00127 Field<Type> source_;
00128
00129
00130
00131 FieldField<Field, Type> internalCoeffs_;
00132
00133
00134
00135 FieldField<Field, Type> boundaryCoeffs_;
00136
00137
00138
00139 mutable GeometricField<Type, fvsPatchField, surfaceMesh>
00140 *faceFluxCorrectionPtr_;
00141
00142
00143
00144
00145
00146 template<class Type2>
00147 void addToInternalField
00148 (
00149 const unallocLabelList& addr,
00150 const Field<Type2>& pf,
00151 Field<Type2>& intf
00152 ) const;
00153
00154 template<class Type2>
00155 void addToInternalField
00156 (
00157 const unallocLabelList& addr,
00158 const tmp<Field<Type2> >& tpf,
00159 Field<Type2>& intf
00160 ) const;
00161
00162
00163 template<class Type2>
00164 void subtractFromInternalField
00165 (
00166 const unallocLabelList& addr,
00167 const Field<Type2>& pf,
00168 Field<Type2>& intf
00169 ) const;
00170
00171 template<class Type2>
00172 void subtractFromInternalField
00173 (
00174 const unallocLabelList& addr,
00175 const tmp<Field<Type2> >& tpf,
00176 Field<Type2>& intf
00177 ) const;
00178
00179
00180
00181
00182 void addBoundaryDiag
00183 (
00184 scalarField& diag,
00185 const direction cmpt
00186 ) const;
00187
00188 void addCmptAvBoundaryDiag(scalarField& diag) const;
00189
00190 void addBoundarySource
00191 (
00192 Field<Type>& source,
00193 const bool couples=true
00194 ) const;
00195
00196
00197 public:
00198
00199
00200
00201
00202
00203 class fvSolver
00204 {
00205 fvMatrix<Type>& fvMat_;
00206
00207 autoPtr<lduMatrix::solver> solver_;
00208
00209 public:
00210
00211
00212
00213 fvSolver(fvMatrix<Type>& fvMat, autoPtr<lduMatrix::solver> sol)
00214 :
00215 fvMat_(fvMat),
00216 solver_(sol)
00217 {}
00218
00219
00220
00221
00222
00223
00224 lduMatrix::solverPerformance solve(const dictionary&);
00225
00226
00227
00228 lduMatrix::solverPerformance solve();
00229 };
00230
00231
00232 ClassName("fvMatrix");
00233
00234
00235
00236
00237
00238 fvMatrix
00239 (
00240 GeometricField<Type, fvPatchField, volMesh>&,
00241 const dimensionSet&
00242 );
00243
00244
00245 fvMatrix(const fvMatrix<Type>&);
00246
00247
00248 # ifdef ConstructFromTmp
00249 fvMatrix(const tmp<fvMatrix<Type> >&);
00250 # endif
00251
00252
00253 fvMatrix(GeometricField<Type, fvPatchField, volMesh>&, Istream&);
00254
00255
00256
00257
00258 virtual ~fvMatrix();
00259
00260
00261
00262
00263
00264
00265 const GeometricField<Type, fvPatchField, volMesh>& psi() const
00266 {
00267 return psi_;
00268 }
00269
00270 GeometricField<Type, fvPatchField, volMesh>& psi()
00271 {
00272 return psi_;
00273 }
00274
00275 const dimensionSet& dimensions() const
00276 {
00277 return dimensions_;
00278 }
00279
00280 Field<Type>& source()
00281 {
00282 return source_;
00283 }
00284
00285 const Field<Type>& source() const
00286 {
00287 return source_;
00288 }
00289
00290
00291
00292 FieldField<Field, Type>& internalCoeffs()
00293 {
00294 return internalCoeffs_;
00295 }
00296
00297
00298
00299 FieldField<Field, Type>& boundaryCoeffs()
00300 {
00301 return boundaryCoeffs_;
00302 }
00303
00304
00305
00306 typedef GeometricField<Type, fvsPatchField, surfaceMesh>
00307 *surfaceTypeFieldPtr;
00308
00309
00310 surfaceTypeFieldPtr& faceFluxCorrectionPtr()
00311 {
00312 return faceFluxCorrectionPtr_;
00313 }
00314
00315
00316
00317
00318
00319
00320 void setValues
00321 (
00322 const labelList& cells,
00323 const Field<Type>& values
00324 );
00325
00326
00327 void setReference
00328 (
00329 const label celli,
00330 const Type& value,
00331 const bool forceReference = false
00332 );
00333
00334
00335
00336 void setComponentReference
00337 (
00338 const label patchi,
00339 const label facei,
00340 const direction cmpt,
00341 const scalar value
00342 );
00343
00344
00345
00346
00347
00348 void relax(const scalar alpha);
00349
00350
00351
00352 void relax();
00353
00354
00355 void boundaryManipulate
00356 (
00357 typename GeometricField<Type, fvPatchField, volMesh>::
00358 GeometricBoundaryField& values
00359 );
00360
00361
00362
00363 autoPtr<fvSolver> solver(const dictionary&);
00364
00365
00366
00367 autoPtr<fvSolver> solver();
00368
00369
00370
00371 lduMatrix::solverPerformance solve(const dictionary&);
00372
00373
00374
00375 lduMatrix::solverPerformance solve();
00376
00377
00378 tmp<Field<Type> > residual() const;
00379
00380
00381 tmp<scalarField> D() const;
00382
00383
00384 tmp<Field<Type> > DD() const;
00385
00386
00387 tmp<volScalarField> A() const;
00388
00389
00390 tmp<GeometricField<Type, fvPatchField, volMesh> > H() const;
00391
00392
00393 tmp<volScalarField> H1() const;
00394
00395
00396 tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
00397 flux() const;
00398
00399
00400
00401
00402 void operator=(const fvMatrix<Type>&);
00403 void operator=(const tmp<fvMatrix<Type> >&);
00404
00405 void negate();
00406
00407 void operator+=(const fvMatrix<Type>&);
00408 void operator+=(const tmp<fvMatrix<Type> >&);
00409
00410 void operator-=(const fvMatrix<Type>&);
00411 void operator-=(const tmp<fvMatrix<Type> >&);
00412
00413 void operator+=
00414 (
00415 const DimensionedField<Type, volMesh>&
00416 );
00417 void operator+=
00418 (
00419 const tmp<DimensionedField<Type, volMesh> >&
00420 );
00421 void operator+=
00422 (
00423 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00424 );
00425
00426 void operator-=
00427 (
00428 const DimensionedField<Type, volMesh>&
00429 );
00430 void operator-=
00431 (
00432 const tmp<DimensionedField<Type, volMesh> >&
00433 );
00434 void operator-=
00435 (
00436 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00437 );
00438
00439 void operator+=(const dimensioned<Type>&);
00440 void operator-=(const dimensioned<Type>&);
00441
00442 void operator+=(const zeroField&);
00443 void operator-=(const zeroField&);
00444
00445 void operator*=(const DimensionedField<scalar, volMesh>&);
00446 void operator*=(const tmp<DimensionedField<scalar, volMesh> >&);
00447 void operator*=(const tmp<volScalarField>&);
00448
00449 void operator*=(const dimensioned<scalar>&);
00450
00451
00452
00453
00454 friend tmp<GeometricField<Type, fvPatchField, volMesh> >
00455 operator& <Type>
00456 (
00457 const fvMatrix<Type>&,
00458 const DimensionedField<Type, volMesh>&
00459 );
00460
00461 friend tmp<GeometricField<Type, fvPatchField, volMesh> >
00462 operator& <Type>
00463 (
00464 const fvMatrix<Type>&,
00465 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00466 );
00467
00468 friend tmp<GeometricField<Type, fvPatchField, volMesh> >
00469 operator& <Type>
00470 (
00471 const tmp<fvMatrix<Type> >&,
00472 const DimensionedField<Type, volMesh>&
00473 );
00474
00475 friend tmp<GeometricField<Type, fvPatchField, volMesh> >
00476 operator& <Type>
00477 (
00478 const tmp<fvMatrix<Type> >&,
00479 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00480 );
00481
00482
00483
00484
00485 friend Ostream& operator<< <Type>
00486 (
00487 Ostream&,
00488 const fvMatrix<Type>&
00489 );
00490 };
00491
00492
00493
00494
00495 template<class Type>
00496 void checkMethod
00497 (
00498 const fvMatrix<Type>&,
00499 const fvMatrix<Type>&,
00500 const char*
00501 );
00502
00503 template<class Type>
00504 void checkMethod
00505 (
00506 const fvMatrix<Type>&,
00507 const DimensionedField<Type, volMesh>&,
00508 const char*
00509 );
00510
00511 template<class Type>
00512 void checkMethod
00513 (
00514 const fvMatrix<Type>&,
00515 const dimensioned<Type>&,
00516 const char*
00517 );
00518
00519
00520
00521
00522 template<class Type>
00523 lduMatrix::solverPerformance solve(fvMatrix<Type>&, const dictionary&);
00524
00525
00526
00527
00528
00529 template<class Type>
00530 lduMatrix::solverPerformance solve
00531 (
00532 const tmp<fvMatrix<Type> >&,
00533 const dictionary&
00534 );
00535
00536
00537
00538
00539 template<class Type>
00540 lduMatrix::solverPerformance solve(fvMatrix<Type>&);
00541
00542
00543
00544
00545
00546 template<class Type>
00547 lduMatrix::solverPerformance solve(const tmp<fvMatrix<Type> >&);
00548
00549
00550
00551
00552 template<class Type>
00553 tmp<fvMatrix<Type> > correction(const fvMatrix<Type>&);
00554
00555
00556
00557
00558 template<class Type>
00559 tmp<fvMatrix<Type> > correction(const tmp<fvMatrix<Type> >&);
00560
00561
00562
00563
00564 template<class Type>
00565 tmp<fvMatrix<Type> > operator==
00566 (
00567 const fvMatrix<Type>&,
00568 const fvMatrix<Type>&
00569 );
00570
00571 template<class Type>
00572 tmp<fvMatrix<Type> > operator==
00573 (
00574 const tmp<fvMatrix<Type> >&,
00575 const fvMatrix<Type>&
00576 );
00577
00578 template<class Type>
00579 tmp<fvMatrix<Type> > operator==
00580 (
00581 const fvMatrix<Type>&,
00582 const tmp<fvMatrix<Type> >&
00583 );
00584
00585 template<class Type>
00586 tmp<fvMatrix<Type> > operator==
00587 (
00588 const tmp<fvMatrix<Type> >&,
00589 const tmp<fvMatrix<Type> >&
00590 );
00591
00592
00593 template<class Type>
00594 tmp<fvMatrix<Type> > operator==
00595 (
00596 const fvMatrix<Type>&,
00597 const DimensionedField<Type, volMesh>&
00598 );
00599
00600 template<class Type>
00601 tmp<fvMatrix<Type> > operator==
00602 (
00603 const fvMatrix<Type>&,
00604 const tmp<DimensionedField<Type, volMesh> >&
00605 );
00606
00607 template<class Type>
00608 tmp<fvMatrix<Type> > operator==
00609 (
00610 const fvMatrix<Type>&,
00611 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00612 );
00613
00614 template<class Type>
00615 tmp<fvMatrix<Type> > operator==
00616 (
00617 const tmp<fvMatrix<Type> >&,
00618 const DimensionedField<Type, volMesh>&
00619 );
00620
00621 template<class Type>
00622 tmp<fvMatrix<Type> > operator==
00623 (
00624 const tmp<fvMatrix<Type> >&,
00625 const tmp<DimensionedField<Type, volMesh> >&
00626 );
00627
00628 template<class Type>
00629 tmp<fvMatrix<Type> > operator==
00630 (
00631 const tmp<fvMatrix<Type> >&,
00632 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00633 );
00634
00635 template<class Type>
00636 tmp<fvMatrix<Type> > operator==
00637 (
00638 const fvMatrix<Type>&,
00639 const dimensioned<Type>&
00640 );
00641
00642 template<class Type>
00643 tmp<fvMatrix<Type> > operator==
00644 (
00645 const tmp<fvMatrix<Type> >&,
00646 const dimensioned<Type>&
00647 );
00648
00649
00650 template<class Type>
00651 tmp<fvMatrix<Type> > operator==
00652 (
00653 const fvMatrix<Type>&,
00654 const zeroField&
00655 );
00656
00657 template<class Type>
00658 tmp<fvMatrix<Type> > operator==
00659 (
00660 const tmp<fvMatrix<Type> >&,
00661 const zeroField&
00662 );
00663
00664
00665 template<class Type>
00666 tmp<fvMatrix<Type> > operator-
00667 (
00668 const fvMatrix<Type>&
00669 );
00670
00671 template<class Type>
00672 tmp<fvMatrix<Type> > operator-
00673 (
00674 const tmp<fvMatrix<Type> >&
00675 );
00676
00677
00678 template<class Type>
00679 tmp<fvMatrix<Type> > operator+
00680 (
00681 const fvMatrix<Type>&,
00682 const fvMatrix<Type>&
00683 );
00684
00685 template<class Type>
00686 tmp<fvMatrix<Type> > operator+
00687 (
00688 const tmp<fvMatrix<Type> >&,
00689 const fvMatrix<Type>&
00690 );
00691
00692 template<class Type>
00693 tmp<fvMatrix<Type> > operator+
00694 (
00695 const fvMatrix<Type>&,
00696 const tmp<fvMatrix<Type> >&
00697 );
00698
00699 template<class Type>
00700 tmp<fvMatrix<Type> > operator+
00701 (
00702 const tmp<fvMatrix<Type> >&,
00703 const tmp<fvMatrix<Type> >&
00704 );
00705
00706
00707 template<class Type>
00708 tmp<fvMatrix<Type> > operator+
00709 (
00710 const fvMatrix<Type>&,
00711 const DimensionedField<Type, volMesh>&
00712 );
00713
00714 template<class Type>
00715 tmp<fvMatrix<Type> > operator+
00716 (
00717 const fvMatrix<Type>&,
00718 const tmp<DimensionedField<Type, volMesh> >&
00719 );
00720
00721 template<class Type>
00722 tmp<fvMatrix<Type> > operator+
00723 (
00724 const fvMatrix<Type>&,
00725 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00726 );
00727
00728 template<class Type>
00729 tmp<fvMatrix<Type> > operator+
00730 (
00731 const tmp<fvMatrix<Type> >&,
00732 const DimensionedField<Type, volMesh>&
00733 );
00734
00735 template<class Type>
00736 tmp<fvMatrix<Type> > operator+
00737 (
00738 const tmp<fvMatrix<Type> >&,
00739 const tmp<DimensionedField<Type, volMesh> >&
00740 );
00741
00742 template<class Type>
00743 tmp<fvMatrix<Type> > operator+
00744 (
00745 const tmp<fvMatrix<Type> >&,
00746 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00747 );
00748
00749 template<class Type>
00750 tmp<fvMatrix<Type> > operator+
00751 (
00752 const DimensionedField<Type, volMesh>&,
00753 const fvMatrix<Type>&
00754 );
00755
00756 template<class Type>
00757 tmp<fvMatrix<Type> > operator+
00758 (
00759 const tmp<DimensionedField<Type, volMesh> >&,
00760 const fvMatrix<Type>&
00761 );
00762
00763 template<class Type>
00764 tmp<fvMatrix<Type> > operator+
00765 (
00766 const tmp<GeometricField<Type, fvPatchField, volMesh> >&,
00767 const fvMatrix<Type>&
00768 );
00769
00770 template<class Type>
00771 tmp<fvMatrix<Type> > operator+
00772 (
00773 const DimensionedField<Type, volMesh>&,
00774 const tmp<fvMatrix<Type> >&
00775 );
00776
00777 template<class Type>
00778 tmp<fvMatrix<Type> > operator+
00779 (
00780 const tmp<DimensionedField<Type, volMesh> >&,
00781 const tmp<fvMatrix<Type> >&
00782 );
00783
00784 template<class Type>
00785 tmp<fvMatrix<Type> > operator+
00786 (
00787 const tmp<GeometricField<Type, fvPatchField, volMesh> >&,
00788 const tmp<fvMatrix<Type> >&
00789 );
00790
00791
00792 template<class Type>
00793 tmp<fvMatrix<Type> > operator+
00794 (
00795 const fvMatrix<Type>&,
00796 const dimensioned<Type>&
00797 );
00798
00799 template<class Type>
00800 tmp<fvMatrix<Type> > operator+
00801 (
00802 const tmp<fvMatrix<Type> >&,
00803 const dimensioned<Type>&
00804 );
00805
00806 template<class Type>
00807 tmp<fvMatrix<Type> > operator+
00808 (
00809 const dimensioned<Type>&,
00810 const fvMatrix<Type>&
00811 );
00812
00813 template<class Type>
00814 tmp<fvMatrix<Type> > operator+
00815 (
00816 const dimensioned<Type>&,
00817 const tmp<fvMatrix<Type> >&
00818 );
00819
00820
00821 template<class Type>
00822 tmp<fvMatrix<Type> > operator-
00823 (
00824 const fvMatrix<Type>&,
00825 const fvMatrix<Type>&
00826 );
00827
00828 template<class Type>
00829 tmp<fvMatrix<Type> > operator-
00830 (
00831 const tmp<fvMatrix<Type> >&,
00832 const fvMatrix<Type>&
00833 );
00834
00835 template<class Type>
00836 tmp<fvMatrix<Type> > operator-
00837 (
00838 const fvMatrix<Type>&,
00839 const tmp<fvMatrix<Type> >&
00840 );
00841
00842 template<class Type>
00843 tmp<fvMatrix<Type> > operator-
00844 (
00845 const tmp<fvMatrix<Type> >&,
00846 const tmp<fvMatrix<Type> >&
00847 );
00848
00849
00850 template<class Type>
00851 tmp<fvMatrix<Type> > operator-
00852 (
00853 const fvMatrix<Type>&,
00854 const DimensionedField<Type, volMesh>&
00855 );
00856
00857 template<class Type>
00858 tmp<fvMatrix<Type> > operator-
00859 (
00860 const fvMatrix<Type>&,
00861 const tmp<DimensionedField<Type, volMesh> >&
00862 );
00863
00864 template<class Type>
00865 tmp<fvMatrix<Type> > operator-
00866 (
00867 const fvMatrix<Type>&,
00868 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00869 );
00870
00871 template<class Type>
00872 tmp<fvMatrix<Type> > operator-
00873 (
00874 const tmp<fvMatrix<Type> >&,
00875 const DimensionedField<Type, volMesh>&
00876 );
00877
00878 template<class Type>
00879 tmp<fvMatrix<Type> > operator-
00880 (
00881 const tmp<fvMatrix<Type> >&,
00882 const tmp<DimensionedField<Type, volMesh> >&
00883 );
00884
00885 template<class Type>
00886 tmp<fvMatrix<Type> > operator-
00887 (
00888 const tmp<fvMatrix<Type> >&,
00889 const tmp<GeometricField<Type, fvPatchField, volMesh> >&
00890 );
00891
00892 template<class Type>
00893 tmp<fvMatrix<Type> > operator-
00894 (
00895 const DimensionedField<Type, volMesh>&,
00896 const fvMatrix<Type>&
00897 );
00898
00899 template<class Type>
00900 tmp<fvMatrix<Type> > operator-
00901 (
00902 const tmp<DimensionedField<Type, volMesh> >&,
00903 const fvMatrix<Type>&
00904 );
00905
00906 template<class Type>
00907 tmp<fvMatrix<Type> > operator-
00908 (
00909 const tmp<GeometricField<Type, fvPatchField, volMesh> >&,
00910 const fvMatrix<Type>&
00911 );
00912
00913 template<class Type>
00914 tmp<fvMatrix<Type> > operator-
00915 (
00916 const DimensionedField<Type, volMesh>&,
00917 const tmp<fvMatrix<Type> >&
00918 );
00919
00920 template<class Type>
00921 tmp<fvMatrix<Type> > operator-
00922 (
00923 const tmp<DimensionedField<Type, volMesh> >&,
00924 const tmp<fvMatrix<Type> >&
00925 );
00926
00927 template<class Type>
00928 tmp<fvMatrix<Type> > operator-
00929 (
00930 const tmp<GeometricField<Type, fvPatchField, volMesh> >&,
00931 const tmp<fvMatrix<Type> >&
00932 );
00933
00934
00935 template<class Type>
00936 tmp<fvMatrix<Type> > operator-
00937 (
00938 const fvMatrix<Type>&,
00939 const dimensioned<Type>&
00940 );
00941
00942 template<class Type>
00943 tmp<fvMatrix<Type> > operator-
00944 (
00945 const tmp<fvMatrix<Type> >&,
00946 const dimensioned<Type>&
00947 );
00948
00949 template<class Type>
00950 tmp<fvMatrix<Type> > operator-
00951 (
00952 const dimensioned<Type>&,
00953 const fvMatrix<Type>&
00954 );
00955
00956 template<class Type>
00957 tmp<fvMatrix<Type> > operator-
00958 (
00959 const dimensioned<Type>&,
00960 const tmp<fvMatrix<Type> >&
00961 );
00962
00963
00964 template<class Type>
00965 tmp<fvMatrix<Type> > operator*
00966 (
00967 const DimensionedField<scalar, volMesh>&,
00968 const fvMatrix<Type>&
00969 );
00970
00971 template<class Type>
00972 tmp<fvMatrix<Type> > operator*
00973 (
00974 const tmp<DimensionedField<scalar, volMesh> >&,
00975 const fvMatrix<Type>&
00976 );
00977
00978 template<class Type>
00979 tmp<fvMatrix<Type> > operator*
00980 (
00981 const tmp<volScalarField>&,
00982 const fvMatrix<Type>&
00983 );
00984
00985 template<class Type>
00986 tmp<fvMatrix<Type> > operator*
00987 (
00988 const DimensionedField<scalar, volMesh>&,
00989 const tmp<fvMatrix<Type> >&
00990 );
00991
00992 template<class Type>
00993 tmp<fvMatrix<Type> > operator*
00994 (
00995 const tmp<DimensionedField<scalar, volMesh> >&,
00996 const tmp<fvMatrix<Type> >&
00997 );
00998
00999 template<class Type>
01000 tmp<fvMatrix<Type> > operator*
01001 (
01002 const tmp<volScalarField>&,
01003 const tmp<fvMatrix<Type> >&
01004 );
01005
01006
01007 template<class Type>
01008 tmp<fvMatrix<Type> > operator*
01009 (
01010 const dimensioned<scalar>&,
01011 const fvMatrix<Type>&
01012 );
01013
01014 template<class Type>
01015 tmp<fvMatrix<Type> > operator*
01016 (
01017 const dimensioned<scalar>&,
01018 const tmp<fvMatrix<Type> >&
01019 );
01020
01021
01022
01023
01024 }
01025
01026
01027
01028 #ifdef NoRepository
01029 # include <finiteVolume/fvMatrix.C>
01030 #endif
01031
01032
01033 #include <finiteVolume/fvScalarMatrix.H>
01034
01035
01036
01037 #endif
01038
01039