Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
surftest1.C File Reference
#include "surfbasic.h"
#include "roccom.h"
#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
Include dependency graph for surftest1.C:

Go to the source code of this file.

Classes

struct  Four_tuple< T >
 A structure used to represent element faces. More...
 

Functions

 COM_EXTERN_MODULE (Rocsurf)
 
 COM_EXTERN_MODULE (Rocout)
 
int main (int argc, char **argv)
 

Function Documentation

COM_EXTERN_MODULE ( Rocsurf  )
COM_EXTERN_MODULE ( Rocout  )
int main ( int  argc,
char **  argv 
)

Definition at line 46 of file surftest1.C.

References cimg_library::asin(), COM_call_function(), COM_delete_window(), COM_DOUBLE, COM_finalize(), COM_get_array(), COM_get_attribute_handle(), COM_get_attribute_handle_const(), COM_get_function_handle(), COM_init(), COM_LOAD_MODULE_STATIC_DYNAMIC, COM_new_attribute(), COM_new_window(), COM_resize_array(), COM_set_array(), COM_set_size(), COM_set_verbose(), COM_window_init_done(), cos, E2N_ANGLE, i, j, n, nvals, scheme, and sin.

46  {
47  COM_init( &argc, &argv);
48 
49  if ( argc < 3) {
50  cout << "Usage: " << argv[0] << " nrow ncol" << endl;
51  exit(-1);
52  }
53 
54  COM_set_verbose(1);
55 
56  const int n_row=atoi(argv[1]), n_col=atoi(argv[2]);
57 
58  const double row_max=double(n_row-1.)/2., col_max=double(n_col-1.)/2.;
59 
60  vector<SURF::Point_3<double> > pnts(n_row*n_col);
61  vector<Four_tuple > elems((n_row-1)*(n_col-1));
62 
63  const double pi_by_2 = asin(1.);
64 
65  for (int i=0; i<n_row; ++i)
66  for (int j=0; j<n_col; ++j) {
67  double sin_1 = sin((i+row_max)/(n_row-1)*pi_by_2);
68  double sin_2 = sin((j+col_max)/(n_col-1)*pi_by_2);
69  double cos_1 = cos((i+row_max)/(n_row-1)*pi_by_2);
70  double cos_2 = cos((j+col_max)/(n_col-1)*pi_by_2);
71 
72  pnts[i*n_col+j] = SURF::Point_3<double>( cos_1*sin_2, cos_2, sin_1*sin_2);
73  }
74 
75  for (int i=0; i<n_row-1; ++i)
76  for (int j=0; j<n_col-1; ++j)
77  elems[i*(n_col-1)+j] = Four_tuple(i*n_col+j+1, (i+1)*n_col+j+1,
78  (i+1)*n_col+j+2, i*n_col+j+2);
79  vector<SURF::Vector_3<double> > nrms( pnts.size());
80 
81  cout << "Creating window \"quad1\"..." << endl;
82 
83  COM_new_window("quad1");
84  COM_new_attribute("quad1.normals", 'n', COM_DOUBLE, 3, "m");
85  COM_new_attribute("quad1.evals", 'e', COM_DOUBLE, 3, "m");
86  COM_new_attribute("quad1.nvals", 'n', COM_DOUBLE, 3, "m");
87 
88  COM_set_size( "quad1.nc", 1, pnts.size());
89  COM_set_array( "quad1.nc", 1, &pnts[0]);
90  COM_set_size( "quad1.:q4:", 1, elems.size());
91  COM_set_array( "quad1.:q4:", 1, &elems[0]);
92 
93  COM_set_array("quad1.normals", 1, &nrms[0]);
94  COM_resize_array( "quad1.evals");
95  COM_resize_array( "quad1.nvals");
96  COM_window_init_done( "quad1");
97 
98  double *evals_p; COM_get_array( "quad1.evals", 1, &(void*&)evals_p);
99  for ( int i=0, n=3*elems.size(); i<n; ++i) evals_p[i] = 1.;
100 
101  int mesh = COM_get_attribute_handle_const( "quad1.mesh");
102  int normals = COM_get_attribute_handle( "quad1.normals");
103  int evals = COM_get_attribute_handle( "quad1.evals");
104  int nvals = COM_get_attribute_handle( "quad1.nvals");
105 
107  int SURF_init = COM_get_function_handle( "SURF.initialize");
108  COM_call_function( SURF_init, &mesh);
109 
110  int SURF_normal = COM_get_function_handle( "SURF.compute_normals");
111  COM_call_function( SURF_normal, &mesh, &normals);
112 
113  int SURF_e2n = COM_get_function_handle( "SURF.elements_to_nodes");
114  int scheme = SURF::E2N_ANGLE;
115  COM_call_function( SURF_e2n, &evals, &nvals, &mesh, &scheme);
116 
117  cout << "Output normals into file..." << endl;
118 
120  int OUT_write = COM_get_function_handle( "OUT.write_attribute");
121  int quad1_all = COM_get_attribute_handle( "quad1.all");
122 
123  char prefix1[100];
124  sprintf(prefix1, "quad1_all");
125  COM_call_function( OUT_write, prefix1, &quad1_all, "quad1", "000");
126 
127  COM_delete_window( "quad1");
128 
129  COM_finalize();
130 }
A structure used to represent element faces.
Definition: Pane_boundary.C:60
void COM_delete_window(const char *wname)
Definition: roccom_c++.h:94
void COM_set_size(const char *wa_str, int pane_id, int size, int ng=0)
Set sizes of for a specific attribute.
Definition: roccom_c++.h:136
void COM_get_array(const char *wa_str, int pane_id, void **addr, int *strd, int *cap)
Get the address for an attribute on a specific pane.
void COM_set_verbose(int i)
Definition: roccom_c++.h:543
int COM_get_attribute_handle(const char *waname)
Definition: roccom_c++.h:412
static const int scheme
CImg< _cimg_Tfloat > asin(const CImg< T > &instance)
Definition: CImg.h:6056
void COM_finalize()
Definition: roccom_c++.h:59
NT & sin
Definition: Rocout.h:81
blockLoc i
Definition: read.cpp:79
void COM_window_init_done(const char *w_str, int pane_changed=true)
Definition: roccom_c++.h:102
const NT & n
void COM_new_window(const char *wname, MPI_Comm c=MPI_COMM_NULL)
Definition: roccom_c++.h:86
void COM_call_function(const int wf, int argc,...)
Definition: roccom_c.C:48
void COM_set_array(const char *wa_str, int pane_id, void *addr, int strd=0, int cap=0)
Associates an array with an attribute for a specific pane.
Definition: roccom_c++.h:156
int COM_get_attribute_handle_const(const char *waname)
Definition: roccom_c++.h:420
j indices j
Definition: Indexing.h:6
void COM_init(int *argc, char ***argv)
Definition: roccom_c++.h:57
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE USE ModDataTypes USE nvals
void COM_new_attribute(const char *wa_str, const char loc, const int type, int ncomp, const char *unit)
Registering an attribute type.
Definition: roccom_c++.h:118
NT & cos
#define COM_LOAD_MODULE_STATIC_DYNAMIC(moduleName, windowString)
Definition: roccom_basic.h:111
void COM_resize_array(const char *wa_str, int pane_id=0, void **addr=NULL, int strd=-1, int cap=0)
Resize an attribute on a specific pane and return the address by setting addr.
Definition: roccom_c++.h:200
int COM_get_function_handle(const char *wfname)
Definition: roccom_c++.h:428

Here is the call graph for this function: