how to export variables about u,v,t,s,zeta etc

Report or discuss software problems and other woes

Moderators: arango, robertson

Post Reply
Message
Author
DongYe
Posts: 7
Joined: Mon Oct 13, 2008 6:21 pm
Location: Institue of Atmospheric Physics,CAS

how to export variables about u,v,t,s,zeta etc

#1 Unread post by DongYe »

I want to export variables about u,v,t,s,zeta etc, not by nc. At the last of main3d.F, I write like this 'write(stdout,*) u(100,100,1,nnew)',however,when I make it ,it said 'Error: Function 'u' at (1) has no IMPLICIT type'.OK,when I define the u at the beginning of the main3d.F,error like this 'real(r8), intent(inout) :: u(:,:,:,:)
Error: Symbol at (1) is not a DUMMY variable
how to solve this problem ?

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: how to export variables about u,v,t,s,zeta etc

#2 Unread post by kate »

It's not so easy as that, especially if you are running in parallel. You'd be better off letting it write the netcdf files and then using some other means to create the ascii dump, if that's what you really want.

DongYe
Posts: 7
Joined: Mon Oct 13, 2008 6:21 pm
Location: Institue of Atmospheric Physics,CAS

Re: how to export variables about u,v,t,s,zeta etc

#3 Unread post by DongYe »

30, I want to run ROMS with data assimilation with ensemble optimal interpolation(EnOI), EnOI need u,v,t,s,zeta, ROMS export them and EnOI use them to calculate ,then return back to ROMS, and ROMS continue to run . This is my idea of my work .
I define the ‘use mod_ocean ’at main3d.F, and it can write u, however ,another problem occur ,my domain is 450*140*30,however ,it can export ‘ write(stdout,*) ocean(ng)%u(2000,2000,1,nnew)’,2000,2000,it is so larger than 450*140,I donot know why it can do like this .for my original idea ,if ocean(ng)%u(2000,2000,1,nnew),it will not make success.

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: how to export variables about u,v,t,s,zeta etc

#4 Unread post by kate »

I don't understand at all. You are asking it to print one point that is not within your domain? Is one point enough for your EnOI?

User avatar
arango
Site Admin
Posts: 1368
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: how to export variables about u,v,t,s,zeta etc

#5 Unread post by arango »

You cannot do this :!: :!: :!: Data assimilation is a complicated beast. If you want to do ensemble assimilation, you need to follow ROMS framework design. You cannot write to standard output neither other Fortran output units, it is a huge parallel bug :!: You need to follow ROMS metadata I/O design and do it via NetCDF files. ROMS has a predictor/corrector scheme and you need to do the I/O at the appropriate place and for the correct time level index.

ROMS already has a very sophisticated adjoint-based data assimilation system. It already has observations operators to interpolate the model fields to the observations points. The observations are also provided to ROMS via NetCDF files.

Your strategy to code this capability is flaw and you need to understand better ROMS framework before you even start coding a single line :!: Others have coded ensemble Kalman filters in ROMS very easily using already coded ensemble capabilities in ROMS. As a matter of fact, the changes required in ROMS were minimal or none because this assimilation strategy if done offline using ROMS rich metadata design and NetCDF I/O.

Post Reply