Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F65910531
test_computeTemp.cc
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Jun 7, 01:01
Size
3 KB
Mime Type
text/x-c
Expires
Sun, Jun 9, 01:01 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
18145028
Attached To
R7561 SP4E_HW1
test_computeTemp.cc
View Options
#include "my_types.hh"
#include "fft.hh"
#include "material_point.hh"
#include "compute_temperature.hh"
#include <gtest/gtest.h>
/*****************************************************************/
// sujet 4.2
// Fixture class
class
materialUniformT
:
public
::
testing
::
Test
{
protected
:
void
SetUp
()
override
{
std
::
vector
<
MaterialPoint
>
points
;
for
(
int
i
=
0
;
i
<
size
*
size
;
i
++
)
{
MaterialPoint
p
;
Vector
position
;
position
[
0
]
=
(
i
%
size
)
*
(
2.0
/
(
size
-
1
))
-
1
;
//from -1 to 1
position
[
1
]
=
int
(
i
/
size
)
*
(
2.0
/
(
size
-
1
))
-
1
;
//from -1 to 1
position
[
2
]
=
0
;
p
.
getPosition
()
=
position
;
p
.
getTemperature
()
=
0.0
;
p
.
getHeatRate
()
=
0.0
;
points
.
push_back
(
p
);
}
for
(
auto
&
p
:
points
)
{
system
.
addParticle
(
std
::
make_shared
<
MaterialPoint
>
(
p
));
}
computeTemp
=
std
::
make_shared
<
ComputeTemperature
>
(
timestep
);
}
int
size
=
10
;
Real
timestep
=
0.01
;
System
system
;
std
::
shared_ptr
<
ComputeTemperature
>
computeTemp
;
};
/*****************************************************************/
TEST_F
(
materialUniformT
,
uniformInit
)
{
computeTemp
->
compute
(
system
);
for
(
int
i
=
0
;
i
<
size
*
size
;
i
++
)
{
auto
&
p
=
static_cast
<
MaterialPoint
&>
(
system
.
getParticle
(
i
));
ASSERT_NEAR
(
p
.
getTemperature
(),
0.0
,
1e-15
);
}
}
/*****************************************************************/
/*****************************************************************/
// sujet 4.3
// Fixture class
class
materialSource
:
public
::
testing
::
Test
{
protected
:
void
SetUp
()
override
{
std
::
vector
<
MaterialPoint
>
points
;
for
(
int
i
=
0
;
i
<
size
*
size
;
i
++
)
{
MaterialPoint
p
;
Vector
position
;
position
[
0
]
=
(
i
%
size
)
*
(
2.0
/
(
size
-
1
))
-
1
;
//from -1 to 1
position
[
1
]
=
int
(
i
/
size
)
*
(
2.0
/
(
size
-
1
))
-
1
;
//from -1 to 1
position
[
2
]
=
0
;
p
.
getPosition
()
=
position
;
p
.
getTemperature
()
=
0.0
;
if
(
position
[
0
]
==
-
0.5
)
p
.
getHeatRate
()
=
-
1
;
else
if
(
position
[
0
]
==
0.5
)
p
.
getHeatRate
()
=
1
;
else
p
.
getHeatRate
()
=
1
;
points
.
push_back
(
p
);
}
for
(
auto
&
p
:
points
)
{
system
.
addParticle
(
std
::
make_shared
<
MaterialPoint
>
(
p
));
}
computeTemp
=
std
::
make_shared
<
ComputeTemperature
>
(
timestep
);
}
int
size
=
17
;
Real
timestep
=
0.01
;
System
system
;
std
::
shared_ptr
<
ComputeTemperature
>
computeTemp
;
};
/*****************************************************************/
TEST_F
(
materialSource
,
SourceSink
)
{
Real
tmp_old
=
1
;
Real
tmp
=
0
;
while
(
abs
(
tmp
-
tmp_old
)
/
tmp_old
<
1e-4
)
{
//to reach steady state
tmp_old
=
tmp
;
computeTemp
->
compute
(
system
);
for
(
int
i
=
0
;
i
<
system
.
getNbParticles
();
i
++
){
auto
&
p
=
static_cast
<
MaterialPoint
&>
(
system
.
getParticle
(
i
));
tmp
+=
abs
(
p
.
getTemperature
());
}
}
for
(
int
i
=
0
;
i
<
size
*
size
;
i
++
)
{
auto
&
p
=
static_cast
<
MaterialPoint
&>
(
system
.
getParticle
(
i
));
if
(
p
.
getPosition
()[
0
]
<=
-
0.5
)
ASSERT_NEAR
(
p
.
getTemperature
(),
-
1
-
(
1.0
/
(
size
-
1
))
*
p
.
getPosition
()[
0
],
1e-4
);
else
if
(
p
.
getPosition
()[
0
]
>=
-
0.5
&&
p
.
getPosition
()[
0
]
<
0.5
)
ASSERT_NEAR
(
p
.
getTemperature
(),
(
1.0
/
(
size
-
1
))
*
p
.
getPosition
()[
0
],
1e-4
);
else
ASSERT_NEAR
(
p
.
getTemperature
(),
1
-
(
1.0
/
(
size
-
1
))
*
p
.
getPosition
()[
0
],
1e-4
);
}
}
/*****************************************************************/
Event Timeline
Log In to Comment