Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
testDDConcreteAPI.cpp
Go to the documentation of this file.
10#include <type_traits>
11#include <sstream>
12#include <stdexcept>
13
14namespace
15{
16 struct Unrelated {};
17 using namespace model;
18 static_assert(std::is_constructible_v<DislocationNodeIO<3>,const DislocationNode<3>&>);
19 static_assert(std::is_constructible_v<DislocationLoopIO<3>,const DislocationLoop<3>&>);
20 static_assert(std::is_constructible_v<DislocationLoopNodeIO<3>,const DislocationLoopNode<3>&>);
21 static_assert(std::is_constructible_v<DislocationLoopLinkIO<3>,const DislocationLoopLink<3>&>);
22 static_assert(std::is_constructible_v<DislocationQuadraturePointIO<3>,const DislocationQuadraturePoint<3>&>);
23 static_assert(!std::is_constructible_v<DislocationNodeIO<3>,const Unrelated&>);
24 static_assert(!std::is_constructible_v<DislocationLoopIO<3>,const Unrelated&>);
25 static_assert(!std::is_constructible_v<DislocationLoopNodeIO<3>,const Unrelated&>);
26 static_assert(!std::is_constructible_v<DislocationLoopLinkIO<3>,const Unrelated&>);
27 static_assert(!std::is_constructible_v<DislocationQuadraturePointIO<3>,const Unrelated&>);
28 static_assert(std::is_same_v<decltype(std::declval<DislocationNetwork<3>>().networkRemesher),DislocationNetworkRemesh<3>>);
29 static_assert(std::is_same_v<decltype(std::declval<DislocationNetwork<3>>().junctionsMaker),DislocationJunctionFormation<3>>);
30 static_assert(std::is_same_v<decltype(std::declval<DislocationNetwork<3>>().nodeContractor),DislocationNodeContraction<3>>);
31 static_assert(std::is_same_v<decltype(std::declval<DislocationNetwork<3>>().crossSlipMaker),DislocationCrossSlip<3>>);
32 template<class Record>
33 void roundTrip(const Record& record)
34 {
35 std::ostringstream written;
36 written<<record;
37 std::stringstream input(written.str());
38 Record restored(input);
39 std::ostringstream repeated;
40 repeated<<restored;
41 if(written.str()!=repeated.str())
42 {
43 throw std::runtime_error("DD IO text round trip changed serialized fields");
44 }
45 }
46}
47int main()
48{
50 if(aux.getBinFilename(7)!="config/ddAux_7.bin")
51 {
52 throw std::runtime_error("Default auxiliary folder is wrong");
53 }
55 node.sID=71;
56 node.P=Eigen::Vector3d(1.25,-2.5,3.75);
57 node.V=Eigen::Vector3d(-4,5,-6);
58 node.meshLocation=2;
59 roundTrip(node);
61 loop.sID=9;
62 loop.B=Eigen::Vector3d(1,2,3);
63 roundTrip(loop);
65 roundTrip(model::DislocationLoopLinkIO<3>(9,71,72,true,2));
67 point.sourceID=71;
68 point.sinkID=72;
69 point.r=node.P;
70 point.pkForce=node.V;
71 roundTrip(point);
72 const Eigen::Vector3d a(0,0,0),b(1,0,0),c(0,1,0),d(1,1,0);
74 {
75 throw std::runtime_error("Separated coplanar segments have nonzero linking number");
76 }
77}
Class template that handles the nodal remesh of the DislocationNetwork.
c
Definition int_R.m:15
a
Definition int_R.m:14
b
Definition int_R.m:16
static double segmentPairLN(const VectorDim &R1, const VectorDim &R2, const VectorDim &R3, const VectorDim &R4)
int main()