26 #include "../include/boat_surface.h"
68 else if (std::abs(y)/y < 0)
73 if (std::abs(x) > L/2.0 || z < -T)
82 return sign_y*B/2.0*(1.0-pow(2.0*x/L,2.0));
93 return sign_y*B/2.0*(1.0-pow(2.0*x/L,2.0))*(1.0-pow(z/T,2.0));
120 else if (fabs(y)/y < 0)
127 if (std::abs(x) > L/2.0 || z < -T)
154 nHull =
Point<dim>(4.0*B/(L*L)*(1.0-pow(z/T,2.0))*x,
156 B/(T*T)*(1.0-pow(2.0*x/L,2.0))*z);
189 else if (std::abs(y)/y < 0)
194 if (std::abs(x) > L/2.0 || z < -T)
202 double ds_dx = B/2.0*(-pow(2.0/L,2.0)*2*x);
203 double dds_ddx = B/2.0*(-pow(2.0/L,2.0)*2.0);
205 double dds_ddz = 0.0;
206 double dds_dxdz = 0.0;
207 return sign_y*0.5*((1+ds_dx*ds_dx)*dds_ddz -2.0*ds_dx*ds_dz*dds_dxdz + (1+ds_dz*ds_dz)*dds_ddx)/
208 pow(1+ds_dx*ds_dx+ds_dz*ds_dz,1.5);
212 double ds_dx = B/2.0*(-pow(2.0/L,2.0)*2*x)*(1.0-pow(z/T,2.0));
213 double dds_ddx = B/2.0*(-pow(2.0/L,2.0)*2.0)*(1.0-pow(z/T,2.0));
214 double ds_dz = B/2.0*(1.0-pow(2.0*x/L,2.0))*(-pow(1/T,2.0)*2.0*z);
215 double dds_ddz = B/2.0*(1.0-pow(2.0*x/L,2.0))*(-pow(1/T,2.0)*2.0*z);
216 double dds_dxdz = B/2.0*(-pow(2.0/L,2.0)*2*x)*(-pow(1/T,2.0)*2.0*z);
218 return sign_y*0.5*((1+ds_dx*ds_dx)*dds_ddz -2.0*ds_dx*ds_dz*dds_dxdz + (1+ds_dz*ds_dz)*dds_ddx)/
219 pow(1+ds_dx*ds_dx+ds_dz*ds_dz,1.5);
231 newp(1) = HullFunction(newp);
242 newp(1) = HullFunction(newp);
void parse_parameters(ParameterHandler &prm)
void declare_parameters(ParameterHandler &prm)
Tensor< 1, dim, Type > & T(Point< dim, Type > &p)
virtual Point< dim > get_new_point_on_quad(const typename Triangulation< dim-1, dim >::quad_iterator &quad) const
numbers::NumberTraits< double >::real_type distance(const Point< dim, double > &p) const
virtual Point< spacedim > get_new_point_on_line(const typename Triangulation< dim, spacedim >::line_iterator &line) const
virtual Point< dim > get_new_point_on_line(const typename Triangulation< dim-1, dim >::line_iterator &line) const
double HullFunction(const Point< dim > point) const
virtual Point< spacedim > get_new_point_on_quad(const typename Triangulation< dim, spacedim >::quad_iterator &quad) const
Point< dim > HullNormal(const Point< dim > point) const
double HullMeanCurvature(const Point< dim > point) const