MoDeNa  1.0
Software framework facilitating sequential multi-scale modelling
workflowdummy.f90
1 program workflowdummy
2  use iso_c_binding
3  use fmodena
4 ! use tfem_m
5  implicit none
6  real(8) :: temp, shear, conv, m0, m1
7  real(8) :: mu, surfacetension, viscosity
8  integer :: ret,i
9 
10  integer(c_size_t) :: tpos
11  integer(c_size_t) :: xpos
12  integer(c_size_t) :: shearpos
13  integer(c_size_t) :: m0pos
14  integer(c_size_t) :: m1pos
15  type(c_ptr) :: model, inputs, outputs
16  print*, "Hello World"
17  model = modena_model_new(c_char_"Rheology_Arrhenius"//c_null_char);
18 
19  print*, "Model loaded from db"
20  if ( modena_error_occurred() ) then
21  call exit( modena_error() )
22  end if
23 
24  print*, "Check Complete"
25  inputs = modena_inputs_new(model);
26  outputs = modena_outputs_new(model);
27  tpos = modena_model_inputs_argpos(model, &
28  c_char_"T"//c_null_char);
29  shearpos = modena_model_inputs_argpos(model, &
30  c_char_"shear"//c_null_char);
31  xpos = modena_model_inputs_argpos(model, &
32  c_char_"X"//c_null_char);
33  m0pos = modena_model_inputs_argpos(model, &
34  c_char_"m0"//c_null_char);
35  m1pos = modena_model_inputs_argpos(model, &
36  c_char_"m1"//c_null_char);
37 !
38 ! viscosityModel = modena_model_new (c_char_"polymerViscosity"//c_null_char);
39 ! viscosityInputs = modena_inputs_new (viscosityModel);
40 ! viscosityOutputs = modena_outputs_new (viscosityModel);
41 ! viscosityTempPos = modena_model_inputs_argPos(viscosityModel, &
42 ! c_char_"T"//c_null_char);
43 ! viscosityConvPos = modena_model_inputs_argPos(viscosityModel, &
44 ! c_char_"X"//c_null_char);
45 
46  ! call modena_model_argPos_check(Model)
47 
48  print*, "Argpos"
49 ! call modena_model_argPos_check(viscosityModel)
50 
51 
52 ! open(14, file='RheologyExact.in')
53 ! read(14, * ) temp, shear, conv
54 ! close(14)
55 ! shear =0.5
56 ! temp = 305
57 ! conv = 0.4
58  shear =0.02
59  temp = 320
60  conv = 0.8
61  m0=1e10
62  m1=0.2
63  call modena_inputs_set(inputs, tpos, temp )
64  call modena_inputs_set(inputs, xpos, conv )
65  call modena_inputs_set(inputs, shearpos, shear )
66  call modena_inputs_set(inputs, m0pos, m0 )
67  call modena_inputs_set(inputs, m1pos, m1 )
68 
69 ! call modena_inputs_set( viscosityInputs, viscosityTempPos, temp )
70 ! call modena_inputs_set( viscosityInputs, viscosityConvPos, conv )
71 !
72  ret = modena_model_call(model, inputs, outputs)
73  if ( ret /= 0 ) then
74  call modena_inputs_destroy( inputs )
75  call modena_outputs_destroy( outputs )
76  call modena_model_destroy( model )
77  print*,ret
78  call exit(ret)
79  end if
80 
81 ! ret = modena_model_call(viscosityModel, viscosityInputs, viscosityOutputs)
82 ! if ( ret /= 0 ) then
83 ! call modena_inputs_destroy( viscosityInputs )
84 ! call modena_outputs_destroy( viscosityOutputs )
85 ! call modena_model_destroy( viscosityModel )
86 ! print*,ret
87 ! call exit(ret)
88 ! end if
89 
90  viscosity = modena_outputs_get(outputs, 0_c_size_t);
91 ! polymerViscosity = modena_outputs_get(viscosityOutputs, 0_c_size_t);
92 write(unit=*, fmt=*) viscosity
93 
94 open(11,file='visc.out')
95 conv=0
96 do i=1,11
97  call modena_inputs_set(inputs, xpos, conv )
98  ret = modena_model_call(model, inputs, outputs)
99  viscosity = modena_outputs_get(outputs, 0_c_size_t);
100  write(11,*) conv,viscosity
101  conv=conv+0.4/10
102 enddo
103 close(11)
104 ! mu = 1.0
105 ! open(15, file='RheologyExact.out')
106 ! write(15,*) mu
107 ! close(15)
108 
109 
110 end program workflowdummy