12 MEER_interface :: MEER_interface (
void) : MEER ()
19 MEER_interface :: ~MEER_interface ()
25 void MEER_interface :: local_initialize (Mesh *geom)
29 ((Mesh*)mesh)->regions_init();
34 void MEER_interface :: initialize (
void)
39 const FElement *felem;
46 switch (mesh->give_Pd()->give_adpa()->give_norm()) {
49 default:
_errorr (
"Unknown norm");
51 SPR_boundary = (MEER_SPRboundaryPatchType)mesh->give_Pd()->give_adpa()->give_SPRboudary();
54 this->set_alloc_NODEs(mesh->give_Npts());
56 for (i=0; i<nNODEs; i++) {
57 NODEs[i].coords.copy(mesh->give_Pjnt(i)->give_coords());
61 this->set_alloc_ELEMs(mesh->give_Nels());
63 for (i=0; i<nELEMs; i++) {
64 felem = mesh->give_FElem(i);
66 ELEMs[i].regid = felem->give_regid();
67 ELEMs[i].nnodes = felem->give_nno();
68 ELEMs[i].nodes =
new long[ELEMs[i].nnodes];
70 for (j=0; j<ELEMs[i].nnodes; j++)
71 ELEMs[i].nodes[j] = felem->give_point(j)->give_ID();
77 ELEMs[i].IPs1_coords =
new PoinT[ELEMs[i].nIPs1];
79 for (j=0; j<ELEMs[i].nIPs1; j++)
80 felem->give_ip_coords_global (ips, j, ELEMs[i].IPs1_coords[j]);
84 this->set_alloc_REGIONs(mesh->give_nRegions());
86 for (i=0; i<nELEMs; i++) {
87 regid = ELEMs[i].regid;
88 felem = mesh->give_FElem(i);
90 nvals = felem->give_result_ncomp(istep, rte);
91 sprtype = felem->give_spr_patch_type();
93 if (REGIONs[regid].sprtype) {
94 if (REGIONs[regid].nvals != nvals )
_errorr(
"Inconsistent region");
95 if (REGIONs[regid].sprtype != sprtype)
_errorr(
"Inconsistent region");
98 REGIONs[regid].nvals = nvals;
99 REGIONs[regid].sprtype = sprtype;
115 IntPointSet MEER_interface :: give_IPset1 (
long elementID)
const
117 return mesh->give_FElem(elementID)->give_IPset_rslts(mesh->give_rslts_solver());
120 IntPointSet MEER_interface :: give_IPset2 (
long elementID)
const
122 return this->give_IPset1(elementID);
129 void MEER_interface :: give_superelems_to_node (
long nodeID,
long &nsuperelems,
long *superelems)
const
131 const GPA<const Element>* superlms = mesh->give_Pjnt(nodeID)->give_superelems();
133 nsuperelems = superlms->give_size();
135 for (
long i=0; i<nsuperelems; i++)
136 superelems[i] = (*superlms)[i]->give_ID();
150 MEER_ElemDisplInterpol MEER_interface :: give_element_EDI (
long elementID)
const
153 MEER_ElemDisplInterpol edi;
163 default:
_errorr (
"Unknown ips");
176 double MEER_interface :: give_element_thickness (
long elementID)
const
178 return mesh->give_FElem(elementID)->give_elemAttribs()->give_cs()->give_thickness();
181 double MEER_interface :: give_element_thickness_reduced (
long elementID)
const
183 switch (mesh->give_FElem(elementID)->give_elemAttribs()->give_sst()) {
184 case SST_plstress:
return this->give_element_thickness(elementID);
break;
186 default:
_errorr (
"Unknown ips");
193 double MEER_interface :: give_element_area (
long elementID)
const
195 return mesh->give_FElem(elementID)->give_lav();
204 long MEER_interface :: give_number_of_IPs2 (
long elementID)
const
221 double MEER_interface :: give_IPs2_coords_natural (
long elementID,
int ipID,
double *ncoords)
const
226 coords.copy_to(ncoords);
233 const double* MEER_interface :: give_IPs1_values (
long elementID,
int ipID, MEER_IPValues valtype)
const
235 if (valtype == MEER_IPV_strain)
return mesh->give_FElem(elementID)->give_results_dm(istep,
RTE_global_strain)->give_ptr2val(ipID, 0);
236 else if (valtype == MEER_IPV_stress)
return mesh->give_FElem(elementID)->give_results_dm(istep,
RTE_global_stress)->give_ptr2val(ipID, 0);
243 const double* MEER_interface :: give_IPs2_values (
long elementID,
int ipID, MEER_IPValues valtype)
const
245 return this->give_IPs1_values (elementID, ipID, valtype);
Classes Cell, Facedge, Edge, Face, Element, Gelement, PolyLine, Line, PolygonMdl, FElement...
double IPS_give_ip_coord_native(int i, IntPointSet ips, PoinT &coords)
SPRpatchType
typ spr patche, závisí na typu/geometrii elementů
ResultTypesAtElem
Result type at element.
Class Geometry, Model and Mesh.
int IntPointSet_give_number_ips(IntPointSet ips)
give number of int. points