Go to the documentation of this file.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 #include "transformField.H"
00027 #include <OpenFOAM/FieldM.H>
00028 #include <OpenFOAM/diagTensor.H>
00029
00030
00031
00032 void Foam::transform
00033 (
00034 vectorField& rtf,
00035 const quaternion& q,
00036 const vectorField& tf
00037 )
00038 {
00039 tensor t = q.R();
00040 TFOR_ALL_F_OP_FUNC_S_F(vector, rtf, =, transform, tensor, t, vector, tf)
00041 }
00042
00043
00044 Foam::tmp<Foam::vectorField> Foam::transform
00045 (
00046 const quaternion& q,
00047 const vectorField& tf
00048 )
00049 {
00050 tmp<vectorField > tranf(new vectorField(tf.size()));
00051 transform(tranf(), q, tf);
00052 return tranf;
00053 }
00054
00055
00056 Foam::tmp<Foam::vectorField> Foam::transform
00057 (
00058 const quaternion& q,
00059 const tmp<vectorField>& ttf
00060 )
00061 {
00062 tmp<vectorField > tranf = reuseTmp<vector, vector>::New(ttf);
00063 transform(tranf(), q, ttf());
00064 reuseTmp<vector, vector>::clear(ttf);
00065 return tranf;
00066 }
00067
00068
00069 void Foam::transform
00070 (
00071 vectorField& rtf,
00072 const septernion& tr,
00073 const vectorField& tf
00074 )
00075 {
00076 vector T = tr.t();
00077
00078
00079 if (mag(tr.r().R() - I) > SMALL)
00080 {
00081 transform(rtf, tr.r(), tf);
00082
00083 if (mag(T) > VSMALL)
00084 {
00085 rtf += T;
00086 }
00087 }
00088 else
00089 {
00090 if (mag(T) > VSMALL)
00091 {
00092 TFOR_ALL_F_OP_S_OP_F(vector, rtf, =, vector, T, +, vector, tf);
00093 }
00094 else
00095 {
00096 rtf = tf;
00097 }
00098 }
00099 }
00100
00101
00102 Foam::tmp<Foam::vectorField> Foam::transform
00103 (
00104 const septernion& tr,
00105 const vectorField& tf
00106 )
00107 {
00108 tmp<vectorField > tranf(new vectorField(tf.size()));
00109 transform(tranf(), tr, tf);
00110 return tranf;
00111 }
00112
00113
00114 Foam::tmp<Foam::vectorField> Foam::transform
00115 (
00116 const septernion& tr,
00117 const tmp<vectorField>& ttf
00118 )
00119 {
00120 tmp<vectorField > tranf = reuseTmp<vector, vector>::New(ttf);
00121 transform(tranf(), tr, ttf());
00122 reuseTmp<vector, vector>::clear(ttf);
00123 return tranf;
00124 }
00125
00126
00127